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

NULL в MySQL (производителност и съхранение)

Зависи коя машина за съхранение използвате.

Във формат MyISAM всеки заглавка на ред съдържа битово поле с един бит за всяка колона за кодиране на състояние NULL. Колона, която е NULL, все още заема място, така че NULL не намаляват паметта. Вижте https://dev.mysql.com/doc/internals/ en/myisam-introduction.html

В InnoDB всяка колона има "начало на полето отместване" в заглавката на реда, което е един или два байта на колона. Най-високият бит в началното изместване на това поле е включен, ако колоната е NULL. В този случай колоната изобщо не трябва да се съхранява. Така че, ако имате много NULL, вашето хранилище трябва да бъде значително намалено. Вижте https://dev.mysql.com/doc/internals/en/innodb-field-contents.html

РЕДАКТИРАНЕ:

NULL битовете са част от заглавките на редовете, вие не избирате да ги добавите.

Единственият начин, по който мога да си представя, че NULL подобряват производителността е, че в InnoDB страница с данни може да побере повече редове, ако редовете съдържат NULL. Така че вашите InnoDB буфери може да са по-ефективни.

Но ще бъда много изненадан, ако това осигури значително предимство на производителността на практика. Безпокойството за ефекта, който NULL имат върху производителността, е в сферата на микрооптимизацията. Трябва да насочите вниманието си другаде, в области, които дават по-голям ефект за парите. Например добавяне на добре подбрани индекси или увеличаване на разпределението на кеша на базата данни.



  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 изразът игнорира параметъра where

  2. MySQL CONVERT_TZ()

  3. Какво означава да избягаш от низ?

  4. XAMPP - Неочаквано изключване на MySQL

  5. Как да инсталирате MySQL 8.0 на RHEL/CentOS 8/7 и Fedora 35