Jenis Format Database MySQL

MyISAM adalah default storage engine MySQL. 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

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.

Penyebab kerusakan pada tabel MyIsam:

  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))

-> ;

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.

InnoDB

InnoDB merupakan default penyimpanan mesin untuk MySQL pada MySQL 5.5, termasuk sebagai standar dalam sebagian besar binari didistribusikan olehMySQL AB . Ini memberikan standar ACID -compliant transaksi fitur, bersama dengan kunci asing dukungan ( deklaratif Referential Integritas ).

InnoDB menjadi produk dari Oracle Corporation setelah akuisisi mereka Innobase Oy pada bulan Oktober 2005. Perangkat lunak ini berlisensi ganda , melainkan didistribusikan di bawah GNU General Public License , tetapi juga dapat dilisensikan kepada pihak yang ingin menggabungkan InnoDB di perangkat lunak berpemilik .

InnoDB adalah compliant penyimpanan yang aman (ASAM mesin transaksi untuk MySQL yang telah melakukan, rollback, dan-pemulihan kemampuan crash untuk melindungi data pengguna.

InnoDB

row-level locking (tanpa eskalasi untuk kasar kunci granularity) dan gaya yang konsisten nonlocking-Oracle reads meningkatkan concurrency multi-user dan kinerja. InnoDB data pengguna toko di indeks dikelompokkan untuk mengurangi I / O untuk pencarian yang umum berdasarkan kunci primer. Untuk menjaga integritas data, InnoDB juga mendukung FOREIGN KEY
-kendala integritas referensial. Anda bebas dapat mencampur InnoDB tabel dengan tabel dari MySQL storage engine lainnya, bahkan dalam pernyataan yang sama.

Format Tabel InnoDB

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 http://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.
  6. Ukuran database InnoDB dapat melebihi 2 Gigabyte, walaupun sistem operasi yang digunakan saat itu tidak mendukung penggunaan database melebihi 2 Gigabyte.

Tabel-tabel InnoDB mempunyai karakteristik sebagai berikut:

  1. Setiap table InnoDB disimpan dalam disk dengan format file .frm dalam direktori database. Sedangkan penyimpanan data dan index dalam InnoDB tablespace. InnoDB tablespace adalah salah satu area logical penyimpanan yang dibuat dari satu atau lebih file-file atau partisi dari disk. Table dishare oleh semua table-tabel innoDB.
  2. InnoDB mendukung transaction (menggunakan statement SQL commit dan rollback dengan acid (Automicity, Consistency, Isolation, Durability yang fleksibel)
  3. InnoDB menjalankan aut-recovery setelah terjadinya crash pada mySQL server atau crash pada host diamana server berjalan.
  4. InnoDB mendukung foreign key dan referential integrity, meliputi cascade dan update.
  5. MySQL mengelola contention query untuk table InnoDB menggunakan multi-versioning dan row-level locking. Multi-versioning memberikan setiap transaksi viewnya sendiri dari database. Ini dikmbinasikan dengan row-level locking menjaga contention ke minimum. Hasilnya adalah concurrency yang bagus bahkan dalam lingkungan yang terdapat campuran dari read and write. Akan tetapi, ada kemungkinan terjadinya deadlock

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.

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.

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)

Jenis dari Heap itu sendiri adalah sebagai berikut :

1. Max Heap mempunyai ketentuan bahwa nilai suatu node lebih besar atau sama dengan ( >= ) dari nilai childnya.

2. Min Heap mempunyai ketentuan bahwa nilai suatu node lebih kecil atau sama dengan ( <= ) dari nilai childnya.

Tabel-tabel HEAP mempunyai karakteristik sebagai berikut:

  1. Setiap table heap diwakilkan pada disk dengan format file .frm dalam direktori database. Data table dan index disimpan salam memory.
  2. Dalam memory hasil penyimpanan dalam performance yang sangat cepat
  3. Isi table HEAP tidak survive jika server direstart. Struktur tabelnya survive, tapi table tersebut berisi data kosong setelah restart.
  4. Table HEAP menggunakan banyak memory, sehingga sebaiknya tidak digunakan untuk table-tabel besar.
  5. My SQL mengelola contention query bagi table-tabel HEAP menggunakan table level locking. Deadlock tidak bisa terjadi.