sql >> Databasteknik >  >> RDS >> Mysql

InnoDB:s låsningsprestanda på radnivå - hur många rader?

Det är inte helt klart vad du frågar om. Låsning säkerställer att endast en användare försöker ändra en given rad vid varje given tidpunkt. Låsning på radnivå betyder att endast den rad som de ändrar är låst. De vanliga alternativen är att antingen låsa hela tabellen under hela ändringen eller att låsa någon delmängd av tabellen. Låsning på radnivå reducerar helt enkelt den delmängden av raderna till det minsta antalet som fortfarande säkerställer integritet.

Tanken är att tillåta en användare att ändra en sak utan att hindra andra användare från att ändra andra saker. Det är dock värt att notera att detta i vissa fall kan vara något av ett falskt positivt så att säga. Ett fåtal databaser stöder låsning på radnivå, men gör ett lås på radnivå betydligt dyrare än att låsa en större del av tabellen -- tillräckligt dyrare för att det kan vara kontraproduktivt.

Edit:Din redigering av det ursprungliga inlägget hjälper, men egentligen inte mycket. Först och främst har storleken på rader och nivåer av inblandad hårdvara en enorm effekt (att sätta in en 8-byte rad på ett dussin randiga 15K SAS-hårddiskar är bara lite snabbare än att sätta in en en megabyte rad på en enstaka konsumentklass hårddisk ).

För det andra handlar det till stor del om antalet samtidiga användare, så mönstret för insättningen gör stor skillnad. 1000 rader infogade kl. 03.00 kommer förmodligen inte att märkas alls. 1000 rader insatta jämnt över dagen betyder lite mer (men förmodligen bara lite). 1000 rader infogade som en grupp direkt när 100 andra användare behöver data omedelbart kan få någon avskedad (särskilt om en av dessa 100 är ägaren till företaget).



  1. Hur man upptäcker om ett värde innehåller minst ett nummer i SQL Server

  2. Det gick inte att ladda filen eller sammansättningen 'MySql.Data, Version=6.3.6.0

  3. Enklaste en-till-många Map case i Hibernate fungerar inte i MySQL

  4. Mysql-fråga för att dynamiskt konvertera rader till kolumner på basis av två kolumner