1 MyISAM, INNODB, dan HEAP
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 :
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:
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
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 kuncitabel.
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.
HEAP
Heap adalah sebuah binary tree dengan ketentuan sebagai berikut :
1. Tree harus complete binary tree
- Semua level tree mempunyai simpul maksimum kecuali pada level terakhir.
- Pada level terakhir, node tersusun dari kiri ke kanan tanpa ada yang dilewati.
2. Perbandingan nilai suatu node dengan nilai node child-nya mempunyai ketentuan
berdasarkan jenis heap, diantaranya :
- Max Heap mempunyai ketentuan bahwa nilai suatu node lebih besar atau sama dengan
( >= ) dari nilai childnya.
- Min Heap mempunyai ketentuan bahwa nilai suatu node lebih kecil atau sama dengan
( <= ) dari nilai childnya.
Contoh penggunaan heap adalah pada persoalan yang mempertahankan antrian prioritas (priority queue). Dalam antrian prioritas, elemen yang dihapus adalah elemen yang mempunyai prioritas terbesar (atau terkecil, tergantung keperluan), dan elemen inilah yang selalu terletak di akar (root). Suatu heap dapat sewaktu-waktu berubah baik itu penambahan elemen (insert) dan penghapusan elemen (delete).
Ada beberapa operasi yang dapat terjadi di sebuah heap, yaitu :
1. Reorganisasi Heap (mengatur ulang heap).
2. Membantuk Heap (mengatur binary tree agar menjadi heap)
3. Penyisipan Heap (menyisipkan node baru)
4. Penghapusan Heap (menghapus node root)
5. Pengurutan Heap (Heap sort)
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 :
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:
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
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 kuncitabel.
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.
HEAP
Heap adalah sebuah binary tree dengan ketentuan sebagai berikut :
1. Tree harus complete binary tree
- Semua level tree mempunyai simpul maksimum kecuali pada level terakhir.
- Pada level terakhir, node tersusun dari kiri ke kanan tanpa ada yang dilewati.
2. Perbandingan nilai suatu node dengan nilai node child-nya mempunyai ketentuan
berdasarkan jenis heap, diantaranya :
- Max Heap mempunyai ketentuan bahwa nilai suatu node lebih besar atau sama dengan
( >= ) dari nilai childnya.
- Min Heap mempunyai ketentuan bahwa nilai suatu node lebih kecil atau sama dengan
( <= ) dari nilai childnya.
Contoh penggunaan heap adalah pada persoalan yang mempertahankan antrian prioritas (priority queue). Dalam antrian prioritas, elemen yang dihapus adalah elemen yang mempunyai prioritas terbesar (atau terkecil, tergantung keperluan), dan elemen inilah yang selalu terletak di akar (root). Suatu heap dapat sewaktu-waktu berubah baik itu penambahan elemen (insert) dan penghapusan elemen (delete).
Ada beberapa operasi yang dapat terjadi di sebuah heap, yaitu :
1. Reorganisasi Heap (mengatur ulang heap).
2. Membantuk Heap (mengatur binary tree agar menjadi heap)
3. Penyisipan Heap (menyisipkan node baru)
4. Penghapusan Heap (menghapus node root)
5. Pengurutan Heap (Heap sort)