Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

NULL di MySQL (Kinerja &Penyimpanan)

Itu tergantung pada mesin penyimpanan yang Anda gunakan.

Dalam format MyISAM, setiap header baris berisi bitfield dengan satu bit untuk setiap kolom untuk mengkodekan status NULL. Kolom yang NULL masih memakan ruang, jadi NULL tidak mengurangi penyimpanan. Lihat https://dev.mysql.com/doc/internals/ en/myisam-introduction.html

Di InnoDB, setiap kolom memiliki "field start offset" di header baris, yaitu satu atau dua byte per kolom. Bit tinggi di bidang itu mulai offset aktif jika kolomnya NULL. Dalam hal ini, kolom tidak perlu disimpan sama sekali. Jadi, jika Anda memiliki banyak NULL, penyimpanan Anda akan berkurang secara signifikan. Lihat https://dev.mysql.com/doc/internals/en/innodb-field-contents.html

EDIT:

Bit NULL adalah bagian dari header baris, Anda tidak memilih untuk menambahkannya.

Satu-satunya cara saya bisa membayangkan NULL meningkatkan kinerja adalah bahwa di InnoDB, halaman data mungkin muat lebih banyak baris jika baris berisi NULL. Jadi buffer InnoDB Anda mungkin lebih efektif.

Tetapi saya akan sangat terkejut jika ini memberikan keuntungan kinerja yang signifikan dalam praktiknya. Khawatir tentang efek NULL terhadap kinerja adalah dalam bidang optimasi mikro. Anda harus memusatkan perhatian Anda di tempat lain, di area yang memberikan keuntungan lebih besar. Misalnya menambahkan indeks yang dipilih dengan baik atau meningkatkan alokasi cache database.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mySQL Error 1040:Terlalu Banyak Koneksi

  2. Pernyataan kasus di MySQL

  3. Cara Mendapatkan Catatan Terakhir Di Setiap Grup Di MySQL

  4. Perbedaan antara LIKE dan =di MYSQL?

  5. Membuat Aplikasi Web Dari Awal Menggunakan Python Flask dan MySQL:Bagian 3