Tipe Storage Engines dan Tabel

Server MySQL menggunakan storage engine untuk mengelola data dalam tabel-tabel. Setiap storage engine menghandel tipe tabel khusus. Setiap tabel mampunyai feature dan karakteristik berbeda.

1. Tabel-Tabel MyISAM

Mempunyai karakteristik sbb:

  • Setiap tabel MyISAM disimpan dalam disk dengan format file .frm, file data dengan format .MYD dan file index dengan format .MYI, semua file-file ini diletakkan di dalam direktori database.
  • MyISAM mempunyai penanganan kolom AUTO_INCREMENT yang paling flexibel dari semua tipe tabel.
  • MyISAM bisa digunakan untuk menset up table-tabel MERGE.
  • MyISAM bisa dikonvert ke dalam tabel-tabel read-only, compress dan fast.
  • MyISAM mendukung pencarian FULLTEXT.
  • MySQL mengelola contention diantara query untuk akses tabel MyISAM menggunakan table-level locking. Performance query sangat cepat untuk mendapatkan data. Multiple query dapat membaca tabel yang sama secara bersamaan. Untuk sebuah query write, sebuah exclusive tabel level lock digunakan untuk mencegah penggunaan tabel tsb oleh orang lain dalam query read dan write. Deadlock tidak terjadi pada tabel-level locking. (Deadlock terjadi ketika dua atau lebih query diblok, atau berhenti dari penyelesaian, karena setiap query menunggu query lainnya selesai.)

2. Tabel-Tabel InnoDB

Mempunyai karakteristik sbb:

  • Setiap tabel InnoDB disimpan dalam disk dengan format file .frm dalam direktori database, sedangkan penyimpanan data dan index dalam InnoDB tablespace. InnoDB tablespace adalah satu area logical penyimpanan yang dibuat dari satu atau lebih file-file atau partisi dari disk. Tablespace dishare oleh semua tabel-tabel InnoDB.
  • InnoDB mendukung transactions (menggunakan statement SQL COMMIT dan ROLLBACK) dengan ACID (Atomicity, Consistency, Isolation, Durability) yang fleksibel.
  • InnoDB menjalankan aut-recovery setelah terjadinya crash pada MySQL server atau crash pada host dimana server berjalan.
  • InnoDB mendukung foreign key dan referential integrity, meliputi cascade delete dan update.
  • MySQL mengelola contention query untuk tabel InnoDB menggunakan multi-versioning dan row-level locking. Multi-versioning memberikan setiap transaksi viewnya sendiri dari database. Ini dikombinasikan dengan row-level locking, menjaga contention ke minimu. Hasilnya adalah concurrency yang bagus bahkan dalam lingkungan yang terdapat campuran dari read dan write. Akan tetapi ada kemungkinan terjadinya deadlock.

3. Tabel-Tabel MERGE

Mempunyai karakteristik sbb:

  • Sebuah MERGE tabel adalah kumpulan dari struktur tabel-tabel MyISAM yang sama. Setiap tabel MERGE disimpan dalam disk dalam format file .frm dan sebuah file .MRG yang mendaftarkan nama bagian dari file MyISAM. Kedua file tsb diletakkan dalam direktori database.
  • Logikanya, sebuah query pada tabel MERGE bersifat sebagai query pada semua tabel-table MyISAM yang merupakan bagian darinya.
  • Sebuah tabel MERGE membuat sebuah entity logical yang bisa melebihi ukuran maximum dari tabel MyISAM.

4. Tabel-Tabel BDB (Berkeley DB)

Mempunyai karakteristik sbb:

  • Setiap tabel BDB disimpan dalam disk dengan format file .frm dan sebuah file .db yang menyimpan informasi data dan index, keduanya dismpan dalam direktori database
  • BDB mendukung transactions (menggunakan statement SQL COMMIT dan ROLLBACK) dengan ACID (Atomicity, Consistency, Isolation, Durability) yang fleksibel.
  • BDB menjalankan aut-recovery setelah terjadinya crash pada MySQL server atau crash pada host dimana server berjalan.
  • MySQL mengelola contention query untuk tabel-tabel BDB menggunakan page-level locking. Locking ini memberikan performance concurrency ditengah row-level dan table-level locking. Ada kemungkinan terjadinya deadlock.

5. Tabel-Tabel HEAP

Mempunyai karakteristik sbb:

  • Setiap tabel HEAP diwakilkan pada disk dengan format file .frm dalam direktori database. Data tabel dan index disimpan dalam memory.
  • Dalam memory hasil penyimpanan dalam performance yang sangat cepat.
  • Isi tabel HEAP tidak survive jika server direstart. Struktur tabelnya survive, tapi tabel tsb berisi data kosong setelah restart.
  • Tabel HEAP menggunakan banyak memory, sehingga sebaiknya tidak digunakan untuk tabel-tabel besar.
  • MySQL mengelola contention query baig tabel-tabel HEAP menggunakan table-level locking. Deadlock tidak bisa terjadi.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *