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

MySQL:Защо DELETE е по-интензивен на процесора от INSERT?

Поне с InnoDB (и се надявам, че те имат за това), имате повече операции дори и без външни ключове . Вмъкването е приблизително това:

  1. Вмъкване на ред
  2. Маркиране в двоичен буфер на журнал
  3. Маркиране на commit

Изтриванията правят следното:

  1. Означаване на реда като премахнат (приемане на същото попадение като вмъкване – страницата се пренаписва)
  2. Маркиране в двоичен буфер на журнал
  3. Означаване като извършено
  4. Всъщност отидете да премахнете реда (приемате същото удар като вмъкване – страницата се пренаписва)
  5. Изчистването на нишката също проследява изтриванията в двоичния буфер на журнала.

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изпълнение на множество SQL оператори от Groovy

  2. Как да форматирате числата като валута в MySQL

  3. Използване на PDO и сесии за създаване на формуляр за вход

  4. Фатална грешка:Не може да се отвори и заключи таблици с привилегии:Таблица 'mysql.host' не съществува

  5. MySQL заявка, която изчислява частични суми