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

Format Baris MySQL:Perbedaan antara tetap dan dinamis?

Perbedaannya benar-benar hanya penting untuk MyISAM, mesin penyimpanan lain tidak peduli dengan perbedaannya.EDIT : Banyak pengguna berkomentar bahwa InnoDB tidak peduli:tautkan 1 oleh bertenaga uap , tautan 2 oleh Kaan .

Dengan MyISAM dengan baris lebar tetap, ada beberapa keuntungan:

  1. Tidak ada fragmentasi baris:Dimungkinkan dengan baris lebar variabel untuk membagi satu baris menjadi beberapa bagian di seluruh file data. Ini dapat meningkatkan pencarian disk dan memperlambat operasi. Dimungkinkan untuk mendefragnya dengan OPTIMIZE TABLE, tetapi ini tidak selalu praktis.

  2. Ukuran pointer file data:Di MyISAM, ada konsep pointer file data yang digunakan ketika perlu mereferensikan file data. Misalnya, ini digunakan dalam indeks ketika mereka merujuk ke tempat baris sebenarnya ada. Dengan ukuran lebar tetap, penunjuk ini didasarkan pada offset baris dalam file (mis. baris adalah 1, 2, 3 terlepas dari ukurannya). Dengan lebar variabel, penunjuk didasarkan pada offset byte (mis. baris mungkin 1, 57, 163). Hasilnya adalah bahwa dengan tabel yang besar, penunjuk harus lebih besar yang kemudian berpotensi menambah lebih banyak overhead ke tabel.

  3. Lebih mudah untuk memperbaiki dalam kasus korupsi. Karena setiap baris berukuran sama, jika tabel MyISAM Anda rusak, akan lebih mudah untuk memperbaikinya, jadi Anda hanya akan kehilangan data yang benar-benar rusak. Dengan lebar variabel, secara teori ada kemungkinan penunjuk lebar variabel menjadi kacau, yang dapat mengakibatkan data tersembur dengan cara yang buruk.

Sekarang kelemahan utama lebar tetap adalah menghabiskan lebih banyak ruang. Misalnya, Anda perlu menggunakan bidang CHAR alih-alih bidang VARCHAR, sehingga Anda akan menghabiskan ruang ekstra.

Biasanya, Anda tidak akan memiliki banyak pilihan dalam format, karena ditentukan berdasarkan skema. Namun, mungkin layak jika Anda hanya memiliki beberapa varchar atau satu gumpalan/teks untuk mencoba mengoptimalkannya. Misalnya, pertimbangkan untuk mengubah satu-satunya varchar menjadi char, atau pisahkan blob ke dalam tabelnya sendiri.

Anda dapat membaca lebih lanjut tentang ini di:

http://dev.mysql.com/doc/refman /5.0/en/static-format.html

http://dev.mysql.com/doc/refman /5.0/en/dynamic-format.html



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menambahkan kunci unik ke tabel yang ada (dengan baris yang tidak unik)

  2. Mengimpor bidang multi-nilai ke Solr dari mySQL menggunakan Solr Data Import Handler

  3. Lexing SQL parsial di C#

  4. beralih dari MySQL ke PostgreSQL untuk Ruby on Rails demi Heroku

  5. masukkan mysql jika nilai tidak ada di tabel lain