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:
- Transaction-Safe Tables (TST) Format Tabel Innodb
- 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:
- Lebih aman. Seperti pada contoh kasus di atas.
- Cukup menggunakan satu perintah COMMIT saja untuk mengupdate beberapa perintah di atasnya.
- Dapat menjalankan perintah ROLLBACK yang mengabaikan perubahan -perubahan yang
- terjadi pada transaksi yang dibatalkan.
Sedangkan keunggulan dari not transaction-safe tables (NTST) dibandingkan dengan transaction-safe tables (TST) adalah:
- Proses lebih cepat karena tidak adanya beban transaksi (no transaction overhead ).
- Penggunaan ruang dalam hard disk yang lebih hemat karena tidak adanya beban transaksi.
- Penggunaan memori yang lebih hemat, juga karena tidak adanya beban transaksi.
- 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.
- Kemampuan kolom AUTO_INCREMENT lebih handal dibandingkan dengan format tabel ISAM.
- Mendukung file ukuran besar (63-bit) pada sistem operasi tertentu yang juga mendukung
- pembuatan dan pembacaan file-file data ukuran besar.
- Pada kolom BLOB dan TEXT bisa dilakukan pengindeksan.
- NULL diperkenankan pada kolom yang diindeks (tetapi sebaiknya dihindari saja).
- 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.
- Program bantu myisampack dapat memadatkan kolom BLOB dan VARCHAR.
- Server mati secara mendadak akibat aliran listrik padam.
- Kerusakan pada perangkat keras.
- Penghentian proses oleh perintah KILL pada saat proses sedang dalam kondisi menulis.
- Kesalahan pada program MySQL atau ISAM.
- Melakukan suatu proses dengan program bantu lain (seperti MyISAM) pada saat tabel sedang sibuk diakses.
- Munculnya pesan kesalahan ‘ Incorrect key file for table: ‘…’
- Query tidak menghasilkan data yang lengkap.
mysql> REPAIR TABLE nama_tabel pilihan_perbaikan ;
mysql> CREATE TABLE ujian
-> (NoSiswa INT NOT NULL AUTO_INCREMENT,
-> Nilai INT NOT NULL,
-> PRIMARY KEY (NoSiswa))
-> TYPE=MyISAM ;
mysql> CREATE TABLE ujian
-> (NoSiswa INT NOT NULL AUTO_INCREMENT,
-> Nilai INT NOT NULL,
-> PRIMARY KEY (NoSiswa))
-> ;
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.
Perbedaan fitur dan kinerjanya adalah:
- InnoDB lebih baru sementara MyISAM lebih tua.
- InnoDB lebih kompleks, sementara MyISAM lebih sederhana.
- InnoDB semakin ketat dalam integritas data sementara MyISAM longgar.
- InnoDB menerapkan tingkat baris kunci untuk memasukkan dan meng-update baris sementara MyISAM menerapkan tingkat kunci tabel.
- InnoDB memiliki transaksi sementara MyISAM tidak.
- InnoDB memiliki kunci asing dan hubungan contraints sementara MyISAM tidak.
- InnoDB memiliki crash pemulihan lebih baik sementara MyISAM yang miskin memulihkan integritas data pada sistem crash.
- 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
- InnoDB harus digunakan di mana integritas data lebih prioritas.
- 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
- 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.
- Mengkonsumsi sumber daya sistem yang lebih seperti RAM. Direkomendasikan bahwa mesin InnoDB dimatikan jika tidak perlu substansial untuk itu setelah instalasi MySQL.
- Tidak-pengindeksan teks penuh.
Keuntungan MyISAM
- Sederhana untuk merancang dan membuat, sehingga lebih baik untuk pemula. Jangan khawatir tentang hubungan luar negeri antara tabel.
- Lebih cepat dari InnoDB pada keseluruhan sebagai akibat dari struktur sederhana sehingga jauh lebih sedikit biaya sumber daya server.
- Pengindeksan teks lengkap.
- Sangat baik untuk membaca-intensif (select) tabel.
Kekurangan dari MyISAM
- Tidak ada integritas data (misalnya kendala hubungan), yang kemudian datang tanggung jawab dan overhead dari para administrator database dan pengembang aplikasi.
- Tidak mendukung transaksi yang penting dalam aplikasi perbankan.
- 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.
warna tulisan ga match jadi sulit dibaca gan