Jenis Tabel MySQL

mysql> select engine from engines;
+------------+
| engine     |
+------------+
| EXAMPLE    |
| CSV        |
| MyISAM     |
| BLACKHOLE  |
| MRG_MYISAM |
| InnoDB     |
| ARCHIVE    |
| MEMORY     |
| FEDERATED  |
+------------+
9 rows in set (0.00 sec)

Akhir-akhir ini saya lagi keranjingan dengan namanya Database MySQL.😀 Sampai-sampai whitepapernya MySQL 5.1.x saya baca untuk mengetahui lebih jauh feature apa saja yang terdapat pada database yang satu ini. Dulu, biasanya saya hanya memakainya sebatas routine, syntax, trigger, view, penyimpan data dan pendukung aplikasi yang saya buat. Sekarang, saya benar-benar tertarik untuk menggali lebih jauh dan mengenalnya. Selain pekerjaan yang juga salah satunya memakai database ini, MySQL juga database kedua yang saya kenal setelah PostgreSQL .😀 Pada postingan ini saya ingin menjelaskan jenis-jenis tabel yang ada pada mysql versi 5 keatas. Secara garis besar, Tabel MySQL dibedakan menjadi dua jenis, yaitu Transaction Safe dan Non-Transaction Safe.

  • Transaction Safe merupakan tabel yang mendukung transaksi. Dalam proses transaksi kita dapat memperkecil terjadinya kesalahan dalam pemrosesan data. Jenis tabel ini yang saya gunakan dalam penerapan aktifitas koding. Namun sayang, tabel jenis ini performa dalam hal kecepatan lebih lambat daripada jenis tabel non-transaction safe karena membutuhkan resource yang lebih banyak. Mungkin tabel jenis ini lebih memprioritaskan kapasitas/data daripada kecepatan.
  • Non Transaction Safe merupakan tabel yang tidak mendukung adanya transaksi. Garis besarnya jenis tabel ini kebalikan dari Transaction Safe. Tabel jenis ini mempunyai kelebihan dalam hal kecepatan. Namun tidak ada toleransi dalam kesalahan pemrosesan data. Misalkan ada kesalahan dalam update data, maka data tersebut tidak dapat dikembalikan. Tabel berjenis MyISAM, MEMORY, ARCHIVE termasuk dalam jenis ini.

Dibawah ini adalah jenis-jenis tabel yang terdapat pada MySQL. Baik itu Transaction Safe maupun Non-Transaction Safe :

1. EXAMPLE : Tabel jenis ini disediakan oleh MySQL tanpa didukung feature apapun. tabel jenis ini hanya digunakan sebagai contoh untuk memulai membuat sebuah tabel. Ketika kita membuat tabel dengan jenis ini, filenya tetap akan disimpan pada database direktori dengan ekstensi .frm. Tidak ada data yang akan disimpan dalam direktori database. Kita juga tidak dapat melakukan penyimpanan data dalam tabel jenis ini.

2. CSV : Tabel jenis ini menyimpan data pada text file dengan pemisah koma. Ketika kita membuat tabel dengan jenis ini, filenya akan disimpan pada database direktori dengan ekstensi frm, dan data akan disimpan dengan ekstensi .CVS berdasarkan nama tabel yang dibuat.

3. MyISAM : Tabel jenis ini diperuntukkan bagi anda yang membutuhkan kecepatan yang tinggi, namun dengan kelemahan tidak ada toleransi kesalahan dalam pemrosesan data. Adapun kelebihan dari jenis ini adalah mendukung fasilitas pencarian dengan fungsi full-text dan kemudahan dalam perbaikan tabel. Data-data MyISAM disimpan dalam direktori database terdiri atas 3 jenis, yaitu nama_tabel.frm, nama_tabel.myd, nama_tabel.myi. FRM menyimpan schema tabel, MYD menyimpan data-data, MYI menyimpan data-data index. Tabel jenis ini mendukung jumlah index sampai dengan 64 buah index.

4. BLACKHOLE : Inilah salah satu jenis tabel yang paling unik, karena sewaktu kita membuat tabel dengan jenis ini dan kita menambahkan data, maka tabel blackhole tidak akan menyimpannya namun melemparkannya. Pada prakteknya tabel blackhole sering dipakai pada seseorang yang tidak menginginkan menyimpan sebuah data pada tabel namun file log. File Log sangat bermanfaat untuk proses replikasi replikasi. Kita dapat mengatur agar master tidak menerima data apapun, namun berguna untuk meneruskan data pada Slave sehingga hanya Slave yang memiliki data.

5. MRG_MYISAM : Tabel jenis ini juga merupakan jenis tabel yang unik. Jenis ini merupakan gabungan dari beberapa tabel MyISAM. Penggabungan ini dimaksudkan untuk mempermudah pencarian dan manajemen data terhadap beberapa tabel MyISAM karena hanya menggunakan sebuah tabel MRG_ISAM saja. Yang perlu diperhatikan ketika membuat jenis tabel ini adalah, diantara tabel MRG_MyISAM dan tabel Merge yang merupakan gabungan harus mepunyai kolom2 yang identik. Tabel ini tidak mempunyai batasan penyimpanan, namun tabel2 MyISAM yang merupakan gabungannya mempunyai batasan berdasarkan Sistem Operasinya. Tabel jenis ini seperti InnoDD dalam hal penyimpanan data.

Sebetulnya tabel jenis ini tidak mempunyai data apapun, ia hanya memiliki link atau lokasi kedalam kedua tabel MyISAM yang telah digabung. Ketika kita menghapus data dalam tabel MRG_MyISAM, maka data pada lokasi aslinya turut terhapus. Perlu diperhatikan, kita tidak diperkenankan untuk menggunakan perintah ALTER TABLE pada jenis tabel ini karena jika demikian, maka link atau lokasi pada tabel penggabungan akan hilang.

6. InnoDB : Jenis tabel ini adalah jenis tabel favorit saya. Selain mendukung proses transaksi, tabel jenis ini juga diperuntukkan bagi kita yang tidak dapat mentolerir transaksi. Cocok digunakan sebagai komputer server yang memproses data yang sangat besar. Untuk kecepatan, InnoDB memang kalah dibanding MyISAM namun dalam hal pemrosesan data tabel ini jauh lebih baik. Tabel ini menyimpan data2 yang sedang diproses dalam memori komputer untuk mempercepat proses MySQL. InnoDB tidak mempunyai batasan penyimpanan data meskipun file system OS mempunyai batasan penyimpanan. InnoDB juga mempunyai kriteria Row level Locking yang memungkinkan penguncian tabel hanya untuk data-data tertentu saja. Penguncian ini hanya akan dilakukan ketika data tersebut sedang digunakan sehingga tidak tersedia bagi user yang lain.

Tabel InnoDB mempunyai file Log tersendiri dan terdiri dari beberapa buah. Kita dapat mementukan jumlah file log yang digunakan melalui konfigurasi innodb_log_files_in_group. InnoDB mendukung penggunaan Constraint FOREIGN KEY sehingga memudahkan pendeklarasian foreign key. Selain itu juga mendukung penggunaan keyword ON DELETE dan ON UPDATE. Operasi yang dapat digunakan terhadap tabel foreign key antara lain :

CASCADE

Jika ada perubahan maupun penghapusan pada tabel Primary Key, maka MySQL juga akan turut menghapus atau mengubah data pada tabel Foreign Key.

RESTRICT

Jika ada perubahan maupun penghapusan pada tabel Primary Key, maka MySQL tidak akan menghapus atau mengubah data yang sama pada tabel Foreign Key.

SET NULL

Jika ada perubahan maupun penghapusan pada tabel Primary Key, maka MySQL mengosongkan data yang sama pada tabel Foreign Key.

NO ACTION

Keyword ini berguna untuk menolak perubahan atau penghapusan data pada tabel Primary Key jika terdapat data yang sama pada tabel Foreign Key. Bila pada tabel Foreign Key tidak sudah tidak ada yang sama, maka akan diijinkan untuk melakukan penghapusan atau perubahan data pada tabel Primary.

7. ARCHIVE : Tabel jenis ini adalah jenis tabel yang dipadatkan. Tabel ini diperuntukkan bagi yang menyimpan data-data yang besar karena penyimpanan dari tabel ini sangat kecil. Kita dapat menggunakan perintah SELECT dan INSERT namun kita tidak dapat menggunakan perintah DELETE, UPDATE maupun REPLACE karena tabel ini hanya digunakan untuk memasukkan dan membaca saja. Tabel ini juga tidak mendukung klausa ORDER BY dalam perintah SELECT.

8. MEMORY : Pemyimpan data pada jenis tabel ini tersimpan secara sementara dalam memory komputer. Ketika Server komputer dimatikan, secara otomatis data akan dihapus dari memori komputer. Tabel jenis ini cocok digunakan untuk pembuatan tabel sebelum membuat tabel aslinya. Sudah pasti tabel ini bekerja lebih cepat daripada tabel lainnya karena bekerja dalam memori komputer. Besar penyimpanan tabel ini pun dialokasikan dengan ukuran yang lebih kecil mengingat penyimpanannya ada pada memori dan bersifat statik.

9. FEDERATED : Tabel ini digunakan untuk mengakses data pada tabel lainnya. Tabel jenis ini tidak mempunyai data apapun seperti halnya tabel MRG_MyISAM. Tabel ini biasanya digunakan untuk mengakses tabel MySQL Remote. Tabel jenis ini juga tidak mendukung transaksi dan perintah DDL(Data Definition Language) dan tidak bisa mengetahui apabila telah terjadi perubahan Schema tabel pada tabel remote yang diakses.

Penjelasan diatas hanya garis besarnya saja. Masih banyak penjelasan tentang jenis-jenis tabel MySQL. Seperti InnoDB yang mempunyai konfigurasi yang cukup penting tentang performa tabel. Dari semua jenis tabel MySQL diatas, hanya InnoDB, CSV dan MyISAM yang pernah saya pakai. Mungkin lain kali saya akan menyelami lebih jauh satu persatu jenis tabel ini. Semoga postingan ini bermanfaat bagi rekan-rekan yang akan membuat tabel pada MySQL yang mempertimbangkan jenis tabel apa yang akan dipakai..😀

3 Responses to “Jenis Tabel MySQL”

  1. afs Says:

    well dun fren…🙂 paling tidak menginspirasi gw yg juga lagi
    belajar mendalami MySql.

    bahas reindex, clustering, replicate dan kawan2 dunk. thanks eniwei.

  2. Putri Says:

    thx 4 your info
    now i can finally finish my ERD design :p thx very muach

  3. dedi Says:

    makasi yaaa buat makalah niihhh thankz2….. link nya pasti saya lampirkan…. tq mas yahya


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: