Mysql
 sql >> база данни >  >> RDS >> Mysql

Случаен ПЪРВИЧЕН КЛЮЧ за Innodb

MySQL не "възстановява" индекса при всяко вмъкване.

Размерът на страницата по подразбиране на MySQL е 16K. Той разпределя тези страници на стъпки от 1MB (наречени екстенти).

Когато таблицата е създадена за първи път (индексите се възстановяват), страниците се запълват до 15/16, оставяйки място за някои произволни вмъквания (1k стая). Ако вашите записи в индекса са по 500 байта всеки (размер на първичния ключ + данни за ред за клъстериран индекс), това оставя място за вмъкване на 2 нови реда, преди да се наложи да разделите страницата.

MySQL запазва стойността на най-високия и най-ниския запис в заглавката на страницата, така че записи в определен диапазон отиват на една и съща страница.

Когато MySQL трябва да вмъкне ред на цяла страница, страницата трябва да бъде разделена. MySQL ще добави нова страница и ще премести половината от данните на страницата на новата страница.

В рамките на една страница записите може всъщност да не са във физически ред. Те ще бъдат в реда, в който са били поставени. Те са свързани по ред чрез форма на свързан списък. Така че дори произволно вмъкване, извън необходимостта от разделяне на страницата, не води до физическо преместване на данни.

След много произволни вмъквания, вашите страници ще бъдат от 1/2 пълни до пълни. Индекс с много наполовина пълни страници ще повлияе негативно на ефективността при четене (трябва да прочетете две половин пълни страници, за да прочетете същия брой записи като една 15/16-та пълна страница).

Сега, ако вмъквате редове в индексен ред, тогава MySQL просто продължава да добавя към края на страниците, запълвайки ги до 15/16 и добавяйки екстент по време на страници. Много по-малко увреждане на производителността, тъй като няма разделяне на страници, следователно не се включва преместване на данни, да не говорим за ползата от производителността при четене на почти пълни страници.

Случайните вмъквания също увеличават фрагментацията на страниците, което може да повлияе на производителността на четене, ако често четете голям брой последователни записи (рядко).

Също така, променете буферирането може да ви засегне.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 1052:Колона „id“ в списъка с полета е двусмислена

  2. Как да изоставам колоните в MySQL?

  3. Как да направя функцията mysqli connect?

  4. Mac инсталирайте и отворете mysql с помощта на терминал

  5. MySQL срещу MongoDB