Monday, March 11, 2013

Storage and Indexing dalam MySQL

Storage

MySql mendukung banyak storage engine dengan berbagai tipe table, dimana storage engine itu sendiri terbagi atas 2 tipe, yaitu engine yang menagani transction-safe table dan yang tidak. Pada umumunya, MyISAM merupakan engine yang non-transactional table, MyISAM menyediakan proses penyimpanan dan pengambilan data dengan cepat, serta dilengkapi dengan kemampuan fulltext searching. Hal ini menyebabkan MyISAM menjadi default engine pada MySQL. Beberapa storage engine yang lain:

1. MEMORY storage engine (HEAP engine), menyediakan in-memory tables. Engine ini dibantu oleh MERGE storage engine yang fungsinya meyatukan beberapa table menjadi satu.

2. InnoDB dan BDB storage engine menyediakan transaction-safe tables

3. EXAMPLE storage engine hanya merupakan stub engine yang tidak melakukan apapun. Walaupun dapat membuat table, tetapi tidak ada data yang bisa disimpan atau diambil. Kegunaan sebenarnya hanya sebagai ilustrasi bagaimana membuat storage engine baru.

4. NDB Cluster storage engine digunakan untuk menggabungkan table yang dibagi-bagi ke banyak computer walaupun terdapat perbedaan sistem operasi. Engine ini hanya dapat di-support oleh Linux, Solaris dan Mac.

5. ARCHIEVE storage engine berguna untuk menyimpan data berukuran besar tanpa menggunakan index.

6. CSV storage engine menyimpan data dalam bentuk text file, dengan menggunakan tanda koma (,) sebagai separatornya.

7. BLACKHOLE storage engine dapat menerima data tetapi tidak menyimpannya, bila dilakukan pengambilan data maka akan me-return set kosong.

8. FEDERATE storage engine menimpan data dalam remote database.



Indexes

Index adalah salah satu cara untuk mempercepat waktu search dari set data yang besar. Misalkan bila kita tidak menggunakan indexing dan memiliki sampai jutaan user, maka akan membutuhkan waktu yang sangat lama untuk menemukan seseorang berdasarkan nama belakangnya karena program harus memeriksa setiap entry pada field “LastName” dan membandingkannya dengan string yang kira cari. Hal ini dapat diatasi dengan index sebingga database hanya perlu mencari bagian data set yang perlu saja, sehingga pencarian lebih cepat.

Index dapat diimplementasikan dengan RDBMS (Relational Database Management System) sebagai sebuah table yang mengumpulkan semua value yang ada dalam field dan mengurutkannya, kemudian di-mapping ke letak sebenarnya pada table database, sehingga database dapat melakukan pencarian dengan cepat, misalnya dengan menggunakan binary search.

Creating Indexes
Ada 2 hal yang harus diperhatikan dalam membuat index:
• Ketika mencari dan memilih field-field yang belum memiliki index, dibutuhkan pemeriksaan table secara keseluruhan.
• Walaupun index mempercepat pemilihan state, tetapi hal ini justru memperlambat proses insert, update dan delete.

Using indexes in MySQL

1. Primary Keys
Primary key adalah suatu field dalam table yang membedakan setiap baris dalam table. Beberapa syarat primary key:
• Primary key sebaiknya integer karena MySQL bekerja lebih cepat dengan integer.
• Primary key tidak boleh bernilai null.
• Primary key harus unik, MySQL menyediakan feature autoincrement untuk field primary key.

2. Unique
Unique index merupakan penyempurnaan dari primary key, dimana didalam unique index terdapat lebih dari satu primary key. Unique indexes masih lebih baik daripada primary key karena memungkinkan pencarian sesuatu dengan menggunakan lebih dari satu field.

3. Fulltext
Fulltext index menggunakan sebuah table yang menyimpan parameter dari index, kemudian table kedua digunakan untuk menyimpan data sebenarnya, dapat ditambahkan table lain untuk menyimpan informasi tambahan tergantung dari tipe indexnya (misalnya konversi dari String ke numeric).

0 comments:

Post a Comment

 
Copyright © . Only-me - Posts · Comments
Theme Template by BTDesigner · Powered by Blogger