sql >> Databáze >  >> RDS >> Mysql

jak se vyhnout uváznutí v mysql

Podle mého chápání výběr nezíská zámek a neměl by být příčinou uváznutí.

Pokaždé, když vložíte/aktualizujete/nebo smažete řádek, získá se zámek. Abyste předešli uváznutí, musíte se ujistit, že souběžné transakce neaktualizují řádek v objednávce, což by mohlo vést k uváznutí. Obecně řečeno, abyste zabránili uváznutí musíte získat zámek vždy ve stejném pořadí i v jiné transakci (např. vždy nejprve tabulka A, potom tabulka B).

Pokud ale v rámci jedné transakce vložíte pouze do jedné tabulky, je tato podmínka splněna a obvykle by to nemělo vést k uváznutí. Děláte v transakci ještě něco?

Pokud však chybějí indexy, může dojít k uváznutí . Když je řádek vložen/aktualizovat/smazat, databáze musí zkontrolovat relační omezení, to znamená zajistit, aby vztahy byly konzistentní. K tomu potřebuje databáze zkontrolovat cizí klíče v souvisejících tabulkách. Mohlo by výsledkem je získání jiného zámku, než je řádek, který je upraven. Ujistěte se, že máte vždy index cizích klíčů (a samozřejmě primárních klíčů), jinak by mohlo dojít k zámku tabulky místo zámku řádku . Pokud dojde k uzamčení tabulky, spor o zámek je vyšší a pravděpodobnost uváznutí se zvýší.

Nejste si jisti, co se přesně stane ve vašem případě, ale možná to pomůže.



  1. Reshape Table v MySQL nebo R

  2. Jak rozdělit okno dotazu v SQL Server Management Studio (SSMS) – SQL Server / TSQL výukový program, část 13

  3. Načte poslední vloženou proceduru uloženou ve formuláři ID v MySQL

  4. Přesuňte web modx z podsložky do kořenové složky