Informasi yang Anda miliki dalam pertanyaan tentang MyISAM tepat sasaran. Namun, saya ingin menjawab dua pertanyaan tambahan Anda:
PERTANYAAN TERBARU
Menurut Buku
Bab 10 :"Mesin Penyimpanan" Halaman 196 Paragraf 7 mengatakan
Berdasarkan paragraf tersebut, record lama akan ditimpa dengan data linkage hanya jika data baru yang dimasukkan tidak dapat masuk ke blok yang dialokasikan sebelumnya. Hal ini dapat mengakibatkan banyak baris membengkak.
PERTANYAAN TAMBAHAN
Dari jawaban saya sebelumnya, akan ada banyak blok yang memiliki
- blok ruang
- panjang rekaman
- jumlah byte yang tidak digunakan dalam blok
- Tanda indikator nilai NULL
- mungkin penunjuk ke kelanjutan catatan jika catatan tidak sesuai dengan ruang yang dibuat sebelumnya dan harus dipisah
Tautan rekaman seperti itu akan dimulai di depan setiap baris yang memasukkan data berukuran besar. Ini dapat mengasapi tabel MyISAM .MYD
file dengan sangat cepat.
Saran
Format baris default dari MyISAM adalah Dinamis. Ketika tabel Dinamis dan mengalami banyak INSERT, UPDATE, dan DELETE, tabel seperti itu perlu dioptimalkan dengan
OPTIMIZE TABLE mytable;
Ada alternatif:alihkan format baris tabel ke Tetap. Dengan begitu, semua baris berukuran sama. Ini adalah bagaimana Anda membuat format baris Tetap:
ALTER TABLE mytable ROW_FORMAT=Fixed;
Bahkan dengan Format Baris Tetap, waktu harus diambil untuk menemukan catatan yang tersedia tetapi waktunya akan menjadi O(1) waktu pencarian (Dalam istilah awam, akan membutuhkan jumlah waktu yang sama untuk menemukan catatan yang tersedia tidak peduli berapa banyak baris tabel memiliki atau berapa banyak baris yang dihapus). Anda dapat melewati langkah itu dengan mengaktifkan concurrent_insert sebagai berikut:
Tambahkan ini ke my.cnf
[mysqld]
concurrent_insert = 2
Restart MySQL tidak diperlukan. Jalankan saja
mysql> SET GLOBAL concurrent_insert = 2;
Ini akan menyebabkan semua INSERT pergi ke bagian belakang tabel tanpa mencari ruang kosong.
Keuntungan tabel Baris Tetap
- INSERT, UPDATE, dan DELETE akan lebih cepat
- PILIH 20-25% lebih cepat
Berikut adalah beberapa posting saya tentang SELECT menjadi lebih cepat untuk Format Baris Diperbaiki
May 03, 2012
:Mana yang lebih cepat, InnoDB atau MyISAM?Sep 20, 2011
:Yang terbaik dari MyISAM dan InnoDBMay 10, 2011
:Apa dampak kinerja penggunaan CHAR vs VARCHAR pada bidang ukuran tetap?
Kerugian tabel Baris Tetap
Biasanya, saat Anda menjalankan ALTER TABLE mytable ROW_FORMAT=Fixed;
, tabel dapat tumbuh 80-100%. .MYI
file (halaman indeks untuk tabel MyISAM) juga akan tumbuh pada tingkat yang sama.
EPILOG
Jika Anda menginginkan kecepatan untuk tabel MyISAM dan dapat hidup dengan tabel yang lebih besar, saran alternatif saya akan diperlukan. Jika Anda ingin menghemat ruang untuk setiap tabel MyISAM, biarkan format baris apa adanya (Dinamis). Anda harus mengompresi tabel dengan OPTIMIZE TABLE mytable;
lebih sering dengan tabel Dinamis.