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

Bekerja Dengan MyISAM di MySQL

MyISAM adalah salah satu mesin penyimpanan paling populer di MySQL. MyISAM sering menjadi pilihan kedua setelah InnoDB - dalam posting blog ini kami akan mencoba mencari tahu cara terbaik untuk bekerja dengan mesin ini.

Apa itu MyISAM?

MyISAM adalah salah satu mesin penyimpanan MySQL. MyISAM didasarkan pada ISAM (Indexed Sequential Access Method), sebuah algoritma pengindeksan yang dikembangkan oleh IBM yang memungkinkan pengambilan informasi dari kumpulan data yang besar dengan cara yang cepat. Namun, itu tidak bekerja dengan baik saat membaca dari dan menulis secara bersamaan ke satu meja, karena penguncian mejanya. Itu juga tidak mendukung transaksi.

Untuk beberapa insinyur MySQL, mesin ini adalah pilihan paling populer setelah InnoDB:mesin penyimpanan MyISAM adalah satu-satunya mesin penyimpanan yang disediakan oleh MySQL pada tahun 2005 dan tersedia untuk digunakan selama lebih dari 20 tahun. MyISAM adalah mesin penyimpanan default untuk MySQL hingga versi 5.5.

MyISAM dari Dalam

Sebuah ilustrasi tentang cara kerja MyISAM dari dalam tidak termasuk dalam cakupan blog ini, tetapi kami dapat menyediakan pengaturan yang membantu Anda mengoptimalkan kinerja mesin:

  • Myisam_sort_buffer_size mendefinisikan buffer yang dialokasikan saat indeks diurutkan dengan menjalankan kueri REPAIR, CREATE INDEX, atau ALTER TABLE.
  • Key_buffer_size menentukan ukuran buffer yang digunakan untuk blok indeks di seluruh tabel MyISAM. Meningkatkan parameter ini dapat menghasilkan penanganan indeks yang lebih baik.
  • Sort_buffer_size menjelaskan ukuran buffer yang dialokasikan untuk thread yang perlu melakukan operasi sortir.
  • Read_buffer_size menjelaskan ukuran buffer yang dialokasikan untuk thread yang melakukan operasi pemindaian berurutan.
  • Write_buffer_size menjelaskan ukuran buffer tulis.

Empat parameter ini penting, tetapi meskipun penting, Anda juga harus memperhatikan variabel key_buffer_size. Variabel key_buffer_size menentukan ukuran buffer indeks yang disimpan di memori - anggap saja sebagai pasangan innodb_buffer_pool_size, tetapi untuk MyISAM. Jika server Anda sebagian besar terdiri dari tabel MyISAM, Anda dapat mengalokasikan sekitar 25% atau lebih dari RAM yang tersedia di server ke variabel key_buffer_size. Ada juga cara lain untuk menentukan nilai parameter key_buffer_size yang seharusnya - cukup bandingkan nilai key_read_requests (nilai total permintaan untuk membaca indeks) dan nilai key_reads (nilai key_reads adalah jumlah permintaan yang harus membaca dari disk). Nilai untuk parameter tersebut dapat diambil dengan melihat variabel status server (cukup keluarkan kueri SHOW GLOBAL STATUS di server MySQL Anda). Penting juga untuk diingat bahwa jika key_reads mengembalikan nilai yang besar, nilai key_buffer_size mungkin terlalu kecil.

MyISAM dan MySQL 8.0

Jika Anda bertanya kepada beberapa insinyur MySQL, mereka akan mengatakan bahwa MyISAM tidak boleh digunakan lagi. Mengapa? Beberapa orang mengatakan bahwa karena fakta bahwa ketika MySQL maju, mereka menambahkan sebagian besar fitur yang sebelumnya hanya dapat dilihat di MyISAM ke InnoDB secara efektif membuat MyISAM menjadi usang:

  • Indeks teks lengkap telah tersedia di InnoDB sejak versi 5.6.
  • Ruang tabel portabel telah tersedia di InnoDB sejak versi 5.6.
  • Indeks spasial tersedia di InnoDB sejak versi 5.7.
  • Pembaruan terakhir untuk tabel tersedia di InnoDB sejak versi 5.7.

Jadi, apakah Anda masih harus menggunakan MyISAM? Mungkin tidak. Namun ada satu peringatan - perlu diingat bahwa kueri COUNT(*) sederhana mungkin akan bekerja lebih cepat di MyISAM daripada di InnoDB - MyISAM menyimpan nomor dalam metadata tabel, InnoDB tidak.

Saya menggunakan MyISAM dan ingin beralih ke InnoDB, Apa yang Harus Saya Lakukan?

Jika Anda masih menggunakan MyISAM dan ingin beralih ke InnoDB, cukup konversi semua tabel Anda ke InnoDB. Jelas itu lebih mudah diucapkan daripada dilakukan, tetapi inilah panduan sederhananya:

  1. Cari tahu tabel mana dalam instans MySQL Anda yang menggunakan MyISAM:
    SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ‘database_name’ AND ENGINE = ‘MyISAM’;
  2. Konversikan semua tabel MyISAM Anda ke InnoDB:
    ALTER TABLE `table_name` ENGINE = InnoDB;

Jika Anda tidak ingin menjalankan beberapa pernyataan ALTER TABLE satu demi satu, pertimbangkan untuk memasukkan pernyataan ALTER TABLE ke dalam satu lingkaran. Selesai - selesai!

Ringkasan

MyISAM adalah salah satu mesin MySQL yang paling populer. Mesin adalah default untuk versi MySQL hingga 5.5. Mesin adalah salah satu pilihan paling populer setelah InnoDB, tetapi dapat disebut usang pada MySQL 8.0 - MySQL telah memastikan bahwa segala sesuatu yang dapat dilakukan dengan MyISAM juga dapat dilakukan ketika InnoDB sedang digunakan, jadi pada titik ini MyISAM hanya berguna jika Anda ingin kueri COUNT(*) sederhana menjadi lebih cepat. Kueri seperti itu akan lebih cepat karena MyISAM menyimpan nomor dalam metadata tabel - mesin MySQL lainnya tidak.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mengulang set hasil mysql

  2. Hubungkan Dengan Setara Sebelumnya untuk MySQL

  3. Cari string dalam kolom teks di MySQL

  4. Bagaimana cara meningkatkan koneksi MySQL (max_connections)?

  5. Bisakah bidang tabel berisi tanda hubung?