Storage Engine InnoDB dan MyIsam pada MySQL

Pada MySQL terdapat beberapa engine diantaranya InnoDb, MyIsam, XML, MEMORY dan sebagainya. Kali ini kita tidak akan membahas semua engine, tapi kita akan fokus membahas seputar storage engine InnoDB dan MyIsam yang banyak digunakan sebagai default engine pada banyak web hosting dan paket software seperti XAMPP, WAMPP, PHPTriad dan sebagainya.

Seperti dikutip dari situs resmi mysql, storage engine MyIsam memiliki detail sebagai berikut.
Storage limits
256TB
Transactions
No
Locking granularity
Table
MVCC
No
Geospatial data type support
Yes
Geospatial indexing support
Yes
B-tree indexes
Yes
T-tree indexes
No
Hash indexes
No
Full-text search indexes
Yes
Clustered indexes
No
Data caches
No
Index caches
Yes
Compressed data
Yes
Encrypted data
Yes
Cluster database support
No
Replication support
Yes
Foreign key support
No
Backup / point-in-time recovery
Yes
Query cache support
Yes
Update statistics for data dictionary
Yes


Sedangkan untuk storage engine InndoDB memiliki detail sebagai berikut.
Storage limits
64TB
Transactions
Yes
Locking granularity
Row
MVCC
Yes
Geospatial data type support
Yes
Geospatial indexing support
Yes
B-tree indexes
Yes
T-tree indexes
No
Hash indexes
No
Full-text search indexes
Yes
Clustered indexes
Yes
Data caches
Yes
Index caches
Yes
Compressed data
Yes
Encrypted data
Yes
Cluster database support
No
Replication support
Yes
Foreign key support
Yes
Backup / point-in-time recover
Yes
Query cache support
Yes
Update statistics for data dictionary
Yes

Seperti terlihat pada dua tabel diatas, InnoDB dan MyIsam memiliki kelebihan dan kekuarangan diantaranya adalah storage limit atau batas penyimpanan. Pada MyIsam data yang dapat tersimpan dapat hingga 256 TB sedangkan InndoDB hanya 64 TB. Tapi untuk ukuran database, 1 GB saja sudah dapat mencakup data yang besar apalagi ini ukurannya TB (Terabyte).

Kelebihan dan kekurangan tiap storage diatas mungkin hanya profesional yang mengerti dan memanfaatkannya untuk memlih storage engine. Sebagai developer aplikasi biasanya tidak banyak memikirkan kelebihan atau kekurangan diatas karena yang penting adalah bisa menyimpan data, update data dan mengolah data agar bisa dijadikan informasi dalam sebuah aplikasi, baik aplikasi desktop maupun aplikasi web. 

Note : Sebagai catatan adalah Data tabel diatas dan perbedaan tersebut berlaku pada versi stabil saat ini (MySQL 5.7)..

Kalau bahas satu persatu mungkin susah tapi seperti terlihat diatas, perbedaan yang jelas adalah InnoDB support terhadap transaction serta foreign key sedangkan MyIsam tidak support keduanya. Memang apa bedanya? Karena kedua fungsi tersebut merupakan kelengkapan yang terdapat pada database kantoran seperti Oracle, MSSQL, dan sebagainya. Selain itu InnoDB menerapkan penguncian tingkat baris untuk insert dan update baris, sementara MyISAM menerapkan penguncian tingkat tabel.

Disini kita akan bahas mengenai Foreign Key karena Foregin key ini merupakan bagian penting dalam relasi database. Dengan Foreign key ini, tabel dalam database dapat merujuk sebuah data pada tabel lainnya. 

Sebagai contoh begini ada 2 buah tabel pertama tabel barang kemudian yang kedua adalah tabel order_barang. Disini tabel order_barang merujuk pada tabel barang dengan menggunakan rujukan kode_barang.
Kemudian didalam tabel barang ada dua buah data yang pertama dengan kode_barang ‘B001’ dengan nama barang Sampo dan kode_barang ‘B0002’ dengan nama barang Mi Instan. Jika anda melakukan penambahan (insert) data pada tabel order_barang dengan storage engie MyIsam, anda dapat memasukan kode_barang ‘B0003’ walaupun data tersebut tidak ada dalam tabel barang. Berbeda dengan storage engine InnoDB, Jika anda memasukan kode_barang ‘B0003’ maka akan terjadi error karena kode tersebut tidak terdaftar pada tabel barang. 
Untuk contoh relasi antara tabel dengan storage engine InndoDB dan MyIsam dapatl dilihat dalam video berikut.

Storage Apa Yang Harus Saya Pilih
Lalu storage apa yang perlu saya gunakan dalam aplikasi saya? Sebenarnya itu tergantung dari penggunaan dari aplikasi yang anda kembangkan. Apabila aplikasi tersebut tidak memerlukan fungsi transaction dan foreign key seperti aplikasi web standar maka MyIsam bisa menjadi pilihan. Tetapi jika memerlukan foreign key dan memiliki kompleksitas tinggi seperti aplikasi data karyawan, aplikasi penggajian, aplikasi inventory barang maka Storage InddoDB bisa jadi pilihan.
Sebagai tambahan dari pengalaman saya, tabel dengan MyIsam dapat anda langsung pindahkan (copy) dengan mudah dari satu komputer ke komputer lain dengan menyalin (copy) folder pada \mysql\data\nama_database. Setiap penyimpanan database akan membuat folder sendiri pada folder\mysql\data. Sedangkan untuk storage engine InnoDB tidak dapat di copy langsung tetapi harus melalui proses export dan import.

Kalau untuk aplikasi kantoran kenapa tidak menggunakan database kantoran seperti Oracle, MSSQL atau yang lainnya? Perlu anda ketahui database Kantoran tersebut biasanya menggunakan lisensi berbayar sekitar 10.000 Dollar Amerika dan berlaku 1 tahun. Kalau kantor anda bonafit ya tentu tidak akan masalah bahkan sangat disarankan menggunakan database tersebut. Kelebihannya memang cukup signifikan, seperti anda akan rutin mendapat update keamanan, bahkan anda dapat support 24 jam apabila terjadi error pada aplikasi tersebut. Akan tetapi apabila budget kantor anda masih biasa-biasa saja namun ingin develop sistem informasi perkantoran sendiri, MySQL ini cukup dapat diandalkan. Namun jika ingin MySQL juga terdapat versi eterprise, harga lisensinya tidak terlalu jauh dengan database kantoran lainnya. 

Sekian dulu, sepertinya pembahasannya jadi melebar :D

Tidak ada komentar:

Posting Komentar

Silakan Comment Tapi yang membangun ya (Jangan Spam) (^.^)

Trend Minggu Ini