mayland's blog

MySQL mendukung beberapa tipe tabel, tergantung konfigurasi saat proses instalasi MySQL. MySQL memiliki 3 (tiga) tipe data utama, yaitu MyISAM, InnoDB dan HEAP. Jika kita tidak menyebutkan tipe tabel saat membuat tabel, maka tipe tabel otomatis akan dibuat sesuai konfigurasi default server MySQL. Hal ini ditentukan oleh variabel default-table-type di file konfigurasi MySQL.

Bila ditinjau dari kemampuan tabel, maka kedua tabel tersebut dapat dikategorikan sebagai tabel dengan kemampuan bertransaksi (transaction-safe tables /TST) dan tabel tanpa kemampuan bertransaksi (not transaction-safe tables /NTST), sehingga daftar tabel di atas dapat kita bagi lagi menjadi:

  1. Transaction-Safe Tables (TST) Format Tabel Innodb
  2. Not Transaction-Safe Tables (NTST) Format Tabel MyISAM

Transaksi adalah kemampuan software untuk membatalkan suatu proses, kemudian mengembalikan nilai awal sebelum proses tersebut terjadi. Kita dapat membayangkannya sebagai sebuah transaksi keuangan di bank. Anggaplah Anda sedang berdiri di depan sebuah mesin ATM untuk melakukan penarikan tunai. Sebelumnya Anda memiliki saldo awal 10 juta rupiah, dan berniat mengambil uang tunai sebanyak 2 juta rupiah saja. Bila transaksi tunai berhasil, maka Anda akan mendapatkan uang tunai dari ATM sebesar 2 juta rupiah, dan secara langsung nilai saldo di rekening Anda akan berkurang sebanyak 2 juta rupiah, sehingga menjadi 8 juta rupiah. Itu skenario normalnya, bila semuanya berjalan secara lancar-lancar saja.Skenario tidak normalnya adalah bagaimana bila mesin ATM belum berhasil mengeluarkan uang tunai yang Anda minta, tetapi tiba-tiba terjadi aliran listrik padam. Apakah saldo Anda akan tetap berkurang sebanyak 2 juta rupiah walaupun Anda belum menerima uang tunai tersebut dari mesin ATM? Lebih parah lagi, kartu ATM Anda ikut tertelan di mesin ATM tersebut , atau saldo Anda akan tetap berjumlah 10 juta rupiah karena transaksi akan dibatalkan secara otomatis oleh sistem perbankan? Atau, yang paling menguntungkan, saldo Anda tetap 10 juta rupiah tetapi ATM sempat mengeluarkan uang juga.

Bila database perbankan tersebut memiliki fasilitas transaction-safe tables (TST) maka yang terjadi adalah saldo Anda di rekening tetap 10 juta rupiah, Anda sama sekali tidak menerima uang tunai 2 juta rupiah dari ATM, serta kartu ATM Anda selamat tidak tertelan di mesin tersebut. Adil kan? Kurang lebih seperti itulah gambaran sederhana dari cara kerja transaction -safe tables (TST). Sebaliknya, bila tidak di dukung oleh transaction-safe tables (TST), maka Anda mungkin akan mengalami kerugian .

Keunggulan transaction-safe tables (TST) dibandingkan dengan not transaction-safe tables (NTST) adalah:

  1. Lebih aman. Seperti pada contoh kasus di atas.
  2. Cukup menggunakan satu perintah COMMIT saja untuk mengupdate beberapa perintah di atasnya.
  3. Dapat menjalankan perintah ROLLBACK yang mengabaikan perubahan -perubahan yang
  4. terjadi pada transaksi yang dibatalkan.

Sedangkan keunggulan dari not transaction-safe tables (NTST) dibandingkan dengan transaction-safe tables (TST) adalah:

  1. Proses lebih cepat karena tidak adanya beban transaksi (no transaction overhead ).
  2. Penggunaan ruang dalam hard disk yang lebih hemat karena tidak adanya beban transaksi.
  3. Penggunaan memori yang lebih hemat, juga karena tidak adanya beban transaksi.

Dari gambaran di atas, Anda bisa menentukan format tabel apa saja yang akan Anda pilih sesuai dengan kebutuhan. Tentu harus ada pertimbangan yang matang dalam hal pemilihan format tabel ini. Pada MySQL sendiri, format tabel MyISAM merupakan format default yang digunakan. Selanjutnya, mari kita bahas format tabel tersebut.

MyISAM

Tipe tabel MyISAM merupakan tipe tabel yang sederhana, stabil dan mudah digunakan. Jika kita akan menyimpan data sederhana yang tidak terlalu rumit, maka gunakanlah tipe tabel ini. Kelebihan utama MyISAM adalah kecepatan dan kestabilannya. Jika kita memilih tipe tabel MyISAM, maka MySQL secara otomatis akan menentukan salah satu dari tiga jenis tabel MyISAM, yaitu :

1. MyISAM static. Jenis ini digunakan ketika semua kolom dalam tabel didefinisikan dengan ukuran yang pasti (fixed). Dengan kata lain, tidak ada kolom yang memiliki tipe seperti VARCHAR, TEXT dan BLOB. Karena sifatnya yang fixed, maka jenis ini akan lebih cepat, aman dan stabil.

2. MyISAM dymanic. Jenis ini digunakan ketika terdapat kolom dengan tipe yang dinamis, seperti tipe kolom VARCHAR. Keuntungan utama dari jenis ini adalah ukuran yang dinamis. Jadi sifatnya lebih efektif karena ukuran data (file) menyesuaikan isi dari masing-masing kolom (field).

3. MyISAM Compressed. Kedua jenis MyISAM, static dan dynamic dapat dikompresi menjadi satu jenis yaitu MyISAM Compressed dengan perintah myisamchk. Tentunya hasilnya lebih kecil dari segi ukuran. Tabel yang terkompresi tidak dapat dikenakan operasi seperti INSERT, UPDATE dan DELETE.

Format tabel MyISAM merupakan pengembangan dan penyempurnaan dari format tabel ISAM, dan merupakan format tabel default pada MySQL. Pada MyISAM file indeks disimpan dengan nama akhiran .MYI dan file data disimpan dengan nama akhiran .MYD. Adapun penyempurnaan yang dilakukan pada MyISAM antara lain:

  1. Adanya suatu kode pembeda yang akan memberi tanda bila suatu tabel tidak ditutup dengan semestinya setelah dibuka. Bila Anda menjalankan program MySQL Server, mysqld, dengan pilihan –myisam-recover, maka secara otomatis tabel yang telah ditandai tersebut akan dipulihkan (bila rusak) atau ditutup dengan semestinya (bila belum ditutup). Hal ini sangat membantu untuk menjaga keutuhan dan validitas tabel.
  2. Kemampuan kolom AUTO_INCREMENT lebih handal dibandingkan dengan format tabel ISAM.
  3. Mendukung file ukuran besar (63-bit) pada sistem operasi tertentu yang juga mendukung
  4. pembuatan dan pembacaan file-file data ukuran besar.
  5. Pada kolom BLOB dan TEXT bisa dilakukan pengindeksan.
  6. NULL diperkenankan pada kolom yang diindeks (tetapi sebaiknya dihindari saja).
  7. Jumlah maksimum file indeks adalah 32 buah per tabelnya, dan masih dapat dikembangkan hingga mencapai 64 buah per tabel dengan kondisi tertentu tanpa harus mengkompilasi ulang program myisamchk.
  8. Program bantu myisampack dapat memadatkan kolom BLOB dan VARCHAR.

Walaupun format tabel MyISAM dapat dikategorikan sangat handal, tetapi pada suatu saat bisa saja terjadi kerusakan yang diakibatkan oleh:

  1. Server mati secara mendadak akibat aliran listrik padam.
  2. Kerusakan pada perangkat keras.
  3. Penghentian proses oleh perintah KILL pada saat proses sedang dalam kondisi menulis.
  4. Kesalahan pada program MySQL atau ISAM.
  5. Melakukan suatu proses dengan program bantu lain (seperti MyISAM) pada saat tabel sedang sibuk diakses.

Ciri-ciri tabel MyISAM yang mengalami kerusakan antara lain:

  1. Munculnya pesan kesalahan ‘ Incorrect key file for table: ‘…’
  2. Query tidak menghasilkan data yang lengkap.

Bila hal tersebut terjadi, yang dapat Anda lakukan adalah segera memperbaiki kerusakan tabel tersebut dengan menggunakan perintah CHECK TABLE atau REPAIR TABLE.

mysql> CHECK TABLE nama_tabel pilihan_pemeriksaan ;
mysql> REPAIR TABLE nama_tabel pilihan_perbaikan ;

Bila Anda ingin mengubah format tabel ke MyISAM, lakukan dengan cara:

mysql> ALTER TABLE nama_tabel TYPE=MYISAM ;

Pada saat pertama kali kita membuat tabel ini dengan perintah CREA TE TABLE, bisa dinyatakan dengan perintah sebagai berikut:
mysql> CREATE TABLE ujian
-> (NoSiswa INT NOT NULL AUTO_INCREMENT,
-> Nilai INT NOT NULL,
-> PRIMARY KEY (NoSiswa))
-> TYPE=MyISAM ;

Atau bisa juga dengan perintah di bawah ini, dengan menghilangkan perintah TYPE=MYISAM, karena format tabel MyISAM adalah format tabel default yang digunakan oleh MySQL.
mysql> CREATE TABLE ujian
-> (NoSiswa INT NOT NULL AUTO_INCREMENT,
-> Nilai INT NOT NULL,
-> PRIMARY KEY (NoSiswa))
-> ;

InnoDB

Tipe tabel InnoDB merupakan tipe tabel MySQL yang mendukung proses transaksi. Tipe ini memiliki beberapa keunggulan, antara lain:

1. Mendukung transaksi antar tabel.

2. Mendukung row-level-locking.

3. Mendukung Foreign-Key Constraints.

4. Crash recovery.

Format Tabel InnoDB mendukung proses transaksi dengan adanya fasilitas rollback dan commit, dan juga kemampuan untuk memulihkan tabel bila terjadi kerusakan pada tabel tersebut. Mampu melakukan penguncian (locking) pada tingkatan record dan juga mampu membaca pada perintah SELECT yang tidak dikunci (mirip dengan kemampuan Oracle). Kemampuan-kemampuan tersebut meningkatkan kecepatan dan kinerja penggunaan multi user. Ada banyak sekali fitur yang disediakan oleh Tabel InnoDb ini. Anda bisa mendapatkan informasi lebih rinci langsung di situs www.innodb.com. Anda bisa juga mendapatkan versi komersial dari InnoDB yang bisa didownload pada situs tersebut. InnoDb telah digunakan untuk database yang membutuhkan kinerja sangat tinggi dan berukuran sangat besar. Misal, Mytrix Inc, sebuah perusahaan yang bergerak di bidang riset statistik di Internet , menggunakan InnoDb untuk mengelola data lebih dari 1 Terabyte (1012 byte), dengan jumlah tabel lebih dari 100.000. Secara keseluruhan jumlah recordnya mencapai lebih dari 20 milyar record. Sebuah bursa saham Paris di Perancis menggunakan InnoDB sebagai solusi databasenya. Pada saat beban kerja sedang sepi, jumlah query yang dilayani mencapai rata-rata 800 proses insert/update per detiknya. Sedangkan pada saat ramai, jumlah query yang dilayani mencapai rata -rata 2.000 proses insert/update per detiknya.

Kelebihan format tabel InnoDB antara lain:

  1. Format Tabel InnoDB mendukung transaksi dengan menyediakan fasilitas rollback dan commit.
  2. InnoDB merupakan satu-satunya format tabel di dalam MySQL yang mendukung Foreign Key Constraint .
  3. Kecepatan InnoDB pada beberapa kasus bahkan melebihi kecepatan format tabel MyISAM. Informasi mengenai kecepatan ini dapat dilihat di halaman benchmark dengan alamat http://www.innodb.com/bench.html.
  4. InnoDB memiliki kemampuan melakukan penguncian pada tingkatan record ( row level locking). Bandingkan dengan MyISAM yang hanya memiliki kemampuan penguncian pada tingkatan tabel (table level locking). Hal ini sangat berpengaruh dalam meningkatkan kinerja akses multiuser.InnoDB memiliki fasilitas backup secara langsung, yaitu dapat melakukan backup pada database yang sedang berjalan tanpa harus melakukan proses locking dulu dan tidak akan mengganggu operasional database.
  5. InnoDB memiliki kemampuan memulihkan tabel secara otomatis pada tabel-tabel yang rusak.

Ukuran database InnoDB dapat melebihi 2 Gigabyte, walaupun sistem operasi yang digunakan saat itu tidak mendukung penggunaan database melebihi 2 Gigabyte

HEAP

Tabel dengan tipe HEAP tidak menyimpan datanya di hardisk, tetapi menyimpan di RAM (memori). Tipe tabel ini biasanya digunakan sebagai tabel sementara (temporary). Tabel secara otomatis akan dihapus (hilang) dari MySQL saat koneksi ke server diputus atau server MySQL dimatikan.

Dua jenis mesin utama penyimpanan tabel untuk database MySQL adalah InnoDB dan MyISAM.
Berikut ringkasan perbedaan fitur dan kinerja:

  1. InnoDB lebih baru sementara MyISAM lebih tua.
  2. InnoDB lebih kompleks, sementara MyISAM lebih sederhana.
  3. InnoDB semakin ketat dalam integritas data sementara MyISAM longgar.
  4. InnoDB menerapkan tingkat baris kunci untuk memasukkan dan meng-update baris sementara MyISAM menerapkan tingkat kunci tabel.
  5. InnoDB memiliki transaksi sementara MyISAM tidak.
  6. InnoDB memiliki kunci asing dan hubungan contraints sementara MyISAM tidak.
  7. InnoDB memiliki crash pemulihan lebih baik sementara MyISAM yang miskin memulihkan integritas data pada sistem crash.
  8. MyISAM memiliki indeks pencarian teks penuh (full text search) sementara InnoDB tidak.

Mengingat perbedaan-perbedaan, InnoDB dan MyISAM memiliki kelebihan dan kekurangan mereka yang unik terhadap satu sama lain. Mereka masing-masing lebih cocok dalam beberapa skenario dari yang lain.

Keuntungan dari InnoDB

  1. InnoDB harus digunakan di mana integritas data lebih prioritas.
  2. Lebih cepat dalam menulis-intensif (penyisipan, update) tabel karena menggunakan tingkat penguncian baris dan hanya tahan perubahan pada baris yang sama yang sedang dimasukkan atau diperbaharui.

Kekurangan dari InnoDB

  1. Karena InnoDB harus menjaga hubungan yang berbeda antara tabel, database administrator dan pencipta skema harus mengambil lebih banyak waktu dalam mendesain model data yang lebih kompleks daripada MyISAM.
  2. Mengkonsumsi sumber daya sistem yang lebih seperti RAM. Direkomendasikan bahwa mesin InnoDB dimatikan jika tidak perlu substansial untuk itu setelah instalasi MySQL.
  3. Tidak-pengindeksan teks penuh.

Keuntungan MyISAM

  1. Sederhana untuk merancang dan membuat, sehingga lebih baik untuk pemula. Jangan khawatir tentang hubungan luar negeri antara tabel.
  2. Lebih cepat dari InnoDB pada keseluruhan sebagai akibat dari struktur sederhana sehingga jauh lebih sedikit biaya sumber daya server.
  3. Pengindeksan teks lengkap.
  4. Sangat baik untuk membaca-intensif (select) tabel.

Kekurangan dari MyISAM

  1. Tidak ada integritas data (misalnya kendala hubungan), yang kemudian datang tanggung jawab dan overhead dari para administrator database dan pengembang aplikasi.
  2. Tidak mendukung transaksi yang penting dalam aplikasi perbankan.
  3. Lebih lambat dari InnoDB untuk tabel yang sering dimasukkan atau diperbaharui, karena seluruh tabel terkunci untuk memasukkan atau memperbarui.

Perbandingan tersebut cukup sederhana. InnoDB lebih cocok untuk data situasi kritis yang membutuhkan menyisipkan sering dan update.

MyISAM, di sisi lain, melakukan yang lebih baik dengan aplikasi yang tidak cukup bergantung pada integritas data dan kebanyakan hanya memilih dan menampilkan data.


sumber : http://sugengsuprayogi.wordpress.com/2010/04/14/myisam-vs-innodb/

http://harisanto.wordpress.com/2008/03/06/format-tabel-mysql/

Categories:

Leave a Reply