G-Page

Rabu, 06 Januari 2016

Table Partition pada MySQL

Partisi table adalah memecah table menjadi beberapa segmen/partisi. Dengan melakukan partisi table, kita dapat membuat table yang berukuran besar menjadi lebih scalable dan manageable. Sebagai contoh suatu table transaksi yang kita partisi sesuai dengan periode terjadinya transaksi.
 
Sebelum kita melakukan partisi, kita cek terlebih dahulu apakah database MySQL yang kita gunakan mendukung table partition atau fitur tersebut telah aktif. Salah satunya adalah dengan syntax berikut ini:
 
mysql> SHOW VARIABLES LIKE '%partition%';
atau
mysql> SHOW PLUGINS;
 
 
Pada tulisan ini, saya bermaksud membuat contoh sederhana bagaimana melakukan partisi table. Hal ini saya awali dengan membuat table dengan struktur dan isian  seperti di bawah ini.
 
CREATE TABLE penjualan(
 id INT(11) PRIMARY KEY AUTO_INCREMENT,
 tglJual DATE
);
 
INSERT penjualan(tglJual) VALUES
('2011-01-01'),('2011-01-05'),('2011-02-01'),
('2012-03-03'),('2012-03-10'),('2012-04-02'),
('2013-05-05'),('2013-05-20'),('2013-06-03');
 
 
Maka langkah selanjutnya adalah melakukan partisi pada table penjualan.
 
ALTER TABLE penjualan REMOVE PARTITIONING;
ALTER TABLE penjualan DROP PRIMARY KEY, ADD INDEX(id);
 
ALTER TABLE penjualan PARTITION BY RANGE (to_days(tglJual)) (
PARTITION p0 VALUES LESS THAN (to_days('2012-01-01')),
PARTITION p1 VALUES LESS THAN (to_days('2013-01-01')),
PARTITION p2 VALUES LESS THAN (to_days('2014-01-01')),
PARTITION p3 VALUES LESS THAN MAXVALUE);
 
 
Untuk menampilkan data berdasarkan partisi yang dibuat dengan menggunakan syntax berikut ini.

--MySQL Versi 5.6 ke atas
SELECT * FROM penjualan PARTITION(p0);
 

--MySQL Versi 5.6 ke bawah
EXPLAIN PARTITIONS SELECT * FROM penjualan WHERE tglJual BETWEEN '2011-01-01' AND '2011-12-31'\G
 
INSERT penjualan(tglJual) VALUES ('2011-04-01');
 
EXPLAIN PARTITIONS SELECT * FROM penjualan WHERE tglJual BETWEEN '2011-01-01' AND '2011-12-31'\G
 
 
Berdasarkan contoh di atas, table partition lebih terasa jika kita menggunakan MySQL versi 5.6 ke atas. Semoga tulisan ini dapat membantu.
 
 

Tidak ada komentar:

Posting Komentar