Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL:Dlaczego DELETE bardziej obciąża procesor niż INSERT?

Przynajmniej z InnoDB (i mam nadzieję, że masz na to ochotę), masz więcej operacji nawet bez kluczy obcych . Wstawka to mniej więcej tak:

  1. Wstaw wiersz
  2. Zaznacz w buforze dziennika binarnego
  3. Zaznacz zatwierdzenie

Skasowanie jest następujące:

  1. Oznacz wiersz jako usunięty (przyjmując to samo trafienie co wstawienie – strona jest przepisana)
  2. Zaznacz w buforze dziennika binarnego
  3. Oznacz zobowiązanie
  4. Właściwie idź usunąć wiersz (przyjmując to samo trafienie co wstawienie – strona jest przepisana)
  5. Wyczyść wątek śledzi również usunięcia w buforze dziennika binarnego.

W tym celu masz dwa razy więcej pracy, aby usunąć, a nie wstawić. Usuwanie wymaga tych dwóch zapisów, ponieważ musi być oznaczone jako usunięte dla wszystkich przyszłych wersji, ale można je usunąć tylko wtedy, gdy nie pozostały żadne transakcje, które go widzą. Ponieważ InnoDB zapisuje na dysk tylko pełne bloki, kara za modyfikację bloku jest stała.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dostarczone parametry do Zend_Auth_Adapter_DbTable nie wygenerowały poprawnej instrukcji sql

  2. Jak używać niepodpisanych typów int/long z Entity Framework?

  3. Tworzenie pliku kml z bazy danych mysql za pomocą php

  4. Czy użytkownicy 'User'@'%' i 'User'@'localhost' to nie to samo?

  5. Unikalne klucze MyISAM są odcinane przy 64 bajtach, powodując kolizje