2.1 PARTISI TABEL PADA MYSQL
Partitioning memungkinkan kita untuk mendistribusikan
data-data di suatu tabel yang sama ke filesystem
yang berbeda di tempat yang berbeda pula. MySQL mendukung horizontal partitioning yang berarti row-row yang berbeda akan
didistribusikan ke partisi yang berbeda. Partisi berlaku untuk semua data dan
indeks dari tabel, kita tidak dapat melakukan partisi hanya data dan bukan
indeks, atau sebaliknya, Anda juga tidak bisa partisi hanya sebagian
dari tabel.
Beberapa
keuntungan dari partisi tercantum di sini:
a.
Partisi memungkinkan untuk menyimpan
lebih banyak data dalam satu meja daripada yang dapat diselenggarakan pada disk
tunggal atau berkas partisi sistem.
b.
Data-data yang kehilangan kegunaannya
sering dapat dengan mudah dihapus dari tabel dipartisi dengan menjatuhkan
partisi (atau partisi) yang hanya berisi data tersebut. Sebaliknya, proses
penambahan data baru dapat di beberapa kasus sangat difasilitasi dengan
menambahkan satu atau lebih partisi baru untuk menyimpan data yang khusus.
c.
Beberapa pertanyaan dapat sangat
dioptimalkan dalam kebajikan fakta bahwa data memenuhi klausa WHERE yang
diberikan dapat disimpan hanya pada satu atau lebih partisi, yang secara
otomatis tidak termasuk partisi yang tersisa dari pencarian. Karena partisi
dapat diubah setelah tabel partisi telah dibuat, Anda dapat mengatur ulang data
Anda untuk meningkatkan permintaan sering yang tidak mungkin telah sering
digunakan ketika skema partisi pertama kali didirikan. Kemampuan untuk
mengecualikan partisi non-pencocokan (dan dengan demikian setiap baris
mengandung) adalah sering disebut sebagai pemangkasan partisi, dan
dilaksanakan di MySQL.
Manfaat lain biasanya berhubungan
dengan partisi termasuk yang di daftar berikut. Fitur-fitur ini tidak saat ini
diterapkan di MySQL Partisi, tetapi tinggi pada daftar prioritas.
a.
Pertanyaan yang melibatkan fungsi
agregat seperti SUM()
dan COUNT()
dapat dengan mudah diparalelkan. Sederhana contoh permintaan tersebut mungkin
salesperson_id SELECT, COUNT (order) sebagai order_total FROM GROUP BY
penjualan salesperson_id;. Dengan "diparalelkan," kita berarti bahwa
query dapat dijalankan secara bersamaan pada setiap partisi, dan hasil akhir
yang diperoleh hanya dengan menjumlahkan hasil yang diperoleh untuk semua
partisi.
b.
Mencapai throughput yang lebih besar
permintaan dalam kebajikan menyebarkan data yang berusaha selama beberapa disk.
2.2 JENIS-JENIS PARTISI
Ada empat tipe partition
yang didukung oleh MySQL, berikut adalah deskripsi dari keempat tipe tersebut:
A. RANGE partitioning
Tabel yang dipartisi menggunakan range dipartisi dimana setiap partisinya
memiliki row yang mengandung variabel yang berada pada rentang nilai tertentu.
Rentang nilai (range) dapat kontinu tetapi tidak overlap dan didefinisikan melalui operator VALUES LESS THAN.
Partisi jenis ini akan berguna pada kondisi
sebagai berikut:
-
jika kita ingin menghapus data lama, terutama untuk data
yang besar, kita dapat melakukan penghapusan ataupun perubahan secara efisien,
contoh:
DELETE FROM employees WHERE
YEAR(separated) <= 1990;
.
-
jika kita ingin menggunakan kolom berisikan tanggal atau
waktu
-
jika kita akan sering menjalan query yang bergantung pada
kolom yang dipartisi.
Partisi
Range, adalah membuat partisi berdasarkan sebuah range, misalkan berdasarkan
tanggal, sebuah nilai, contoh nya seperti di bawah ini
CREATE
TABLE tbl_penjualan (
id INT NOT NULL,
nama VARCHAR(30),
tgl_transaksi DATE NOT NULL DEFAULT
'1970-01-01') PARTITION BY RANGE ( YEAR(tgl_transaksi) ) (
PARTITION
p0 VALUES LESS THAN (1990),
PARTITION
p1 VALUES LESS THAN (1995),
PARTITION
p2 VALUES LESS THAN (2000),
PARTITION
p3 VALUES LESS THAN MAXVALUE
);
contoh di
atas membuat partisi
berdasarkan tahun transaksi,
jadi transaksi yg
dari tahun 1990 akan masuk ke partisi p0, kemudian dari tahun 1995
akan masuk ke partisi p1,
kemudian yang dari tahun 2000 akan masuk ke partisi p2 dan selebihnya akan
masuk ke partisi p3.
B. LIST partitioning
Pada list
partitioning, setiap partisi didefinisikan dan diklasifikasikan berdasarkan
keanggotaan sebuah nilai suatu kolom terhadap suatu daftar nilai. Partisi
dilakukan oleh perintah PARTITION BY LIST(expr) di mana expr adalah nama kolom yang hendak
dijadikan dasar partisi dan setiap partisi didefinisikan melalui perintah
VALUES IN (value_list) di mana value_list adalah daftar bilangan bulat yang dipisahkan oleh koma.
Partisi
List, adalah membuat
partisi berdasarkan kondisi
dari sebuah nilai yang nilainya cocok dengan yang sudah
di tentukan, contohnya seperti dibawah ini.
CREATE
TABLE tbl_pegawai (
kode_pegawai VARCHAR(30),
kode_golongan INT,
nama_lengkap VARCHAR(255)
)
PARTITION
BY LIST(kode_golongan) (
PARTITION
p0 VALUES IN (1, 2, 3),
PARTITION
p1 VALUES IN (4, 5, 6)
);
contoh diatas membuat partisi berdasarkan golongan
pegawai, jadi pegawai dengan golongan 1,2 dan 3 akan masuk ke partisi p0
sedangkan karyawan dengangolongan 4,5 dan 6 akan masuk ke partisi p1.
C. HASH partitioning
Partisi dengan hash
dilakukan untuk menjamin pendistribusian yang adil (seragam) pada setiap data
yang dimasukkan. Dengan partisi jenis ini, kita tidak perlu mendefinisikan
keanggotaan setiap partisi. Kita hanya perlu menspesifikasi suatu ekspresi yang
memiliki input suatu nilai kolom dan mempunyai output nomor partisi dari data
tersebut. MySQL juga mendukung suatu varian dari hash partitioning yaitu LINEAR HASH partitioning.
Partisi
Hash, adalah membuat partisi berdasarkan sebuah kolom yg sudah ditentukan
dengan pembagian segmen nya diatur oleh MySQL, contohnya seperti dibawah ini.
CREATE TABLE tbl_pegawai (
kode_pegawai
VARCHAR(30),
kode_golongan
INT,
nama_lengkap
VARCHAR(255)
)
PARTITION BY HASH(
kode_pegawai )
PARTITIONS 4;
contoh diatas
membuat partisi berdasarkan
kode pegawai, jadi
data pegawai akan
di pecah menjadi empat
partisi, dan yg
mengatur sebuah kode
pegawai masuk ke
partisi yang mana langsung di atur otomatis oleh MySQL.
D. KEY partitioning
Partisi dengan key memiliki prinsip yang hampir sama dengan hash partitioning. Yang menjadi perbedaan adalah fungsi hashing
untuk partisi jenis ini dibuat langsung oleh server MySQL dengan fungsi MD5()
pada MySQL Clusters. Untuk storage engine yang lain, server telah mengembangkan
fungsi yang menerapkan algoritma yang hampir sama bernama PASSWORD().
Partisi Key,
adalah membuat partisi
berdasarkan sebuah key
dari tabel, contoh
nya seperti dibawah ini.
CREATE
TABLE tbl_nama (
id
INT NOT NULL PRIMARY KEY,
nama_lengkap
VARCHAR(255)
)
PARTITION
BY KEY()
PARTITIONS
2;
Contoh diatas
membuat partisi berdasarkan
primary key yang bernama id,
jadi data dari tbl_nama
akan di pecah
menjadi 2 partisi,
dan yang mengatur
sebuah data masuk kepartisi yang mana, diatur otomatis
oleh MySQ. Misalkan saya mempunyai tabel seperti dibawah ini..
CREATE
TABLE anggota (
username
VARCHAR(16) NOT NULL,
namalengkap
VARCHAR(25) NOT NULL,
tanggal
DATE NOT NULL,
PRIMARY
KEY(username)
)
PARTITION
BY KEY(username)
PARTITIONS
6;
Dari table diatas kita ingin melihat
apakah tabel anggota mempunyai 6 partisi, dan sebuah data berada di partisi
yang mana.
1. Untuk
melihat partition dari tabel, bisa dengan cara di bawah ini
explain
partitions select * from anggota;
2. Untuk
melihat sebuah data berada di partisi yang mana, bisa dengan cara explain
partitions select * from anggota where username='50000' ; Membuat benchmark
antara tabel yang tidak di partisi, dengan tabel yang di partisi dengan KEY,
dan tabel yang di partisi dengan RANGE, di bawah ini adalah struktur tabel nya,
jumlah data untuk ekperimen ini sebanyak 100.000 record.
1.
Tabel Tanpa Partisi
CREATE
TABLE anggota
username INT NOT NULL,
namalengkap VARCHAR(25) NOT NULL,
tanggal DATE NOT NULL,
PRIMARY KEY(username);
2.
Tabel Dengan Partisi KEY
CREATE
TABLE anggota2 (
username INT NOT NULL,
namalengkap VARCHAR(25) NOT NULL,
tanggal DATE NOT NULL,
PRIMARY KEY(username)
)
PARTITION
BY KEY(username)
PARTITIONS
6;
3.
Partisi Dengan Partisi RANGE
CREATE
TABLE anggota3 (
username INT NOT NULL,
namalengkap VARCHAR(25) NOT NULL,
tanggal DATE NOT NULL,
PRIMARY KEY(username)
)
PARTITION
BY RANGE(username) (
PARTITION
P0 VALUES LESS THAN (20000),
PARTITION
P1 VALUES LESS THAN (40000),
PARTITION
P2 VALUES LESS THAN (60000),
PARTITION
P3 VALUES LESS THAN (80000),
PARTITION
P4 VALUES LESS THAN (100001)
)
Pengukurannya dengan query sederhana
saja dan yang menjadi ukuran nya adalah waktu yang di butuhkan dalam eksekusi
query tersebut, dibawah ini adalah hasilnya:
1.
TIDAK MENGGUNAKAN PARTISI
Select count(*) from anggota where
username > 25000 and username < 85000
2.
MENGGUNAKAN PARTISI KEY
Select count(*) from anggota2 where
username > 25000 and username < 85000
3.
Menggunakan Partisi RANGE
Select count(*) from anggota3 where
username > 25000 and username < 85000
Ternyata yang terlama adalah tabel
yang menggunkan partisi KEY (0.20 sec) dan yang tercepat adalah tabel yang
menggunakan partisi RANGE (0.07)
2.3 BACKUP DAN RECOVERY
Data dan database merupakan komponen
terpenting dalam suatu sistem informasi manajemen, disamping tentu saja aplikasi
untuk sistem informasi harus tersedia, keduanya saling tergantung. Suatu
aplikasi sistem informasi manajemen tidak ada gunanya jika tidak mempunyai data
yang lengkap, demikian juga sebaliknya jika punya data tetapi tidak mempunyai
aplikasi yang digunakan untuk mengelolanya sehingga tidak dapat dihasilkan
suatu laporan, statistik atau pun informasi.
1.
Backup
Data
Backup data merupakan salah satu
kegiatan yang harus dilakukan oleh pengelola database untuk melakukan
penyalinan sistem, data dan aplikasi. Backup data harus dilakukan untuk menjaga
jangan sampai terjadi kerusakan sistem dari luar ataupun dari dalam sistem,
yang disengaja atau pun tidak disengaja.
Proses backup data dilakukan secara
rutin sesuai dengan jadwal yang telah ditentukan, jika dimisalkan pada sebuah
perusahaan memiliki 1 database yang melayani 100 transaksi perhari bisa kita
bayangkan berapa banyak data yang terkumpul dalam 1 bulan, dan jika terjadi
kerusakan system maka data yang begitu banyak akan hilang atau akan menjadi
pekerjaan input data baru yang membuang buang waktu, dengan adanya proses
backup data kejadian tersebut bisa dihindari, misalnya secara rutin
administrator database melakukan penyimpanan data setiap minggu sehingga jika
pada minggu ketiga hari kedua terjadi crash system atau kerusakan system yang
terjadi akibat gangguan system atau factor gangguan cuaca seperti gempa, banjir
dan tanah longsor yang merusak data secara fisik. Maka data yang hilang hanya 2
hari, sehingga total data yang hilang adalah 200 transaksi, dari ilustrasi
diatas kita bisa mengetahui betapa pentingnya proses backup data untuk daur
hidup suatu system database.
2. Restore Data
Restore adalah proses mengembalikan
backup ke dalam sistem. Restore dilakukan untuk mengembalikan keadaan sistem
kembali pada keadaan semula, keadaan terakhir pada saat operasional, sebelum
terjadi kerusakan sistem. Pada proses ini akan dilakukan pengembalian data baik
struktur maupun isi dari database, secara teori proses ini adalah proses
minimum pengembalian system tergantung dari waktu scheduling yang menjadi dasar
proses backup, jika waktu scheduling dijadwalkan terlalu lama maka akan banyak
data nya hilang.
3. Skenario kegagalan dan Resiko
Backup
Kegagalan sebuah sistem bisa
disebabkan oleh banyak sekali faktor, salah satu faktor bencana alam yang tidak
pernah diduga dan diperkirakan sehingga skenario kegagalan sistem harus
diperhitungkan dengan pembangunan sistem backup harian dengan media backup yang
disimpan ditempat berbeda. Dengan menggunakan basis data web ini semuanya bisa
dilakukan dengan mudah.
4. Metoda backup dan recovery
Proses backup data sangatlah penting
bagi keamanan data agar bisa terjaga dengan baik terutama saat terjadi crash
pada sistem basis data yang disebabkan oleh kerusahakan fisik hardware ataupun
karena faktor alam. Banyak sekali cara untuk melakukan backup data, berikut ini
metoda yang bisa dlakukan saat akan melakukan backup data :
a)
Backup Logika vs backup Physic
b)
Backup online vs backup offline
c)
Backup local vs backup remote
d)
backup penuh vs backput bertambah sebagian
e)
Point in time recovery
f)
Backup scheduling, compression dan encryption
g)
Table Maintenance
MYSQL BACKUP DAN RECOVERY
Lebih
jauh berikut ini penjelasan tentang masing masing metoda backup :
1. Backup Logika vs backup Physic
Backup logika adalah menyimpan
perintah logic dari struktur database dan isinya yang direpresentasikan dalam
perintah SQL. Seperti CREATE DATABASE, CREATE TABLE dan INSERT DATA. Backup
fisik adalah mengambil datatabase dalam bentuk fisik, untuk database yang
menggunakan Appserv secara fisik data disimpan pada folder
C:\\Appserv\Mysql\data\. Pada folder tersebut terdapat file database, setiap
table diciptakan dari 3 file yaitu .MYD, ,FRM dan .MYI, pada saat pengambilan
data dilakukan dengan mengcopy folder yang didalamnya menyimpan data dari
database yang kita punya. Data yang diambil adalah seluruh database dan tidak
bisa terpilih, sangat berbeda dengan backup secara logika, data yang diambil
bisa dipilih sesuai dengan yang diinginkan.
Berikut
ini karakteristik backup secara logika :
a.
Backup dilakukan melalui server MySQL
untuk mengambil struktur dan informasi data.
b.
Backup berjalan lebih lambat karena
server harus mengakses informasi data dan mengirimkannya dalam bentuk logika
pada file backup.
c.
Output bisa lebih besar dari pada bentuk
fisik, misalkan data yang disimpan 5 MB dalam bentuk file sql maka pada saat
recovery akan terjadi kehabisan memori karena prosesnya akan menghabiskan
banyak memori untuk mengembalikan dalam bentuk semula.
d.
Backup dan Restore dilakukan dengan
mengabaikan mesin yang digunakan.
e.
Backup logika tidak melibatkan banyak
file hanya satu file logika yang biasanya disimpan dalam file .SQL
f.
Data disimpan dalam bentuk logika yang
merupakan bahasa DDL dan DML.
g.
Backup data dilakukan saat server sudah
dijalankan.
h.
Program untuk backup digunakan
mysqldump.exe yang memanggil file dikeluarkan dalam bentuk logika file, seperti
tsiswa.sql
i.
Untuk mengeluarkan data dalam bentuk
file lain bisa digunakan perintah : SELECT …..INTO OUTFILE
Berikut
ini karakteristik backup fisik
1.
Backup terdiri dari salinan file dan
database, ini adalah salinan dari semua bagian direktori MySQL, data dari table
memori tidak disampan pada disk.
2.
Backup data secara fisik lebih cepat
karena tidak melakukan memrosesan logika, hanya pengcopian secara fisik.
3.
Outputnya lebih sederhana dibandingkan
backup logika.
4.
Sebagai tambahan dari database, backup
dapat meliputi file manapun yang terdiri dari file MYi, MYD dan FRM.
2. Backup online vs backup offline
Backup online dilakukan saat server
MySQL sedang berjalan sedangkan backup offline dilakukan saat server sedang
dihentikan.
Metoda
Backup Online mempunyai karakteristik :
a.
Lebih sedikit mengganggu klien lain
karena dapat menggunakan mysql server tanpa harus menghentikan pekerjaan selama
proses backup.
b.
Backup data hanya dilakukan pada data
yang tidak sedang terlibat dalam transaksi.
Metoda
Backup Offline mempunyai karakteristik :
a.
Mempengarui klien yang kurang baik sebab
server tidak berjalan selama proses berlangsung.
b.
Backup lebih sederhana memeriksa
prosedur sebab tidak ada kemungkinan gangguan campur tangan dari aktifitas
klien.
3. Backup local vs backup remote
Suatu backup local dilakukan pada
host yang sama pada server MySQL yang sedang running, sedangkan suatu backup
remote diaktifkan dari suatu host yang berbeda.
a.
Mysqldump dapat menghubungkan ke server
remote atau local. Karena output SQL (perintah create dan insert) local atau
remote dapat diselesaikan dan degenerate dari client.
b.
Mysqlhotcopy melaksanakan hanya backup
local, menghubungkan ke server untuk menguncinya untuk menghindari modifikasi
data dan kemudian menyalin file ke local.
c.
Select ………into outfile dapat diaktifkan
dari satu host remote dari client, tetapi field output diciptakan pada host
server.
d.
Backup fisik secara khas diaktifkan pada
server mysql sedemikian hingga server dapat diambil saat ofline, walaupun cara
pengambilannya bisa dengan remote.
4. Snapshot Backup
Beberapa file system implementasi
memungkinkan snapshot untuk diambil. Ini menyeddiakan salinan logika menyangkut
file system pada titik yang telah ditentukan waktunya, tanpa keharusan untuk
secara fisik mengcopy seluruh file system. MySQL sendiri tidak menghasilkan
kemampuan untuk mengambil file system snapshot. Itu tersedia melalui aplikasi
lain seperti veritas atau LVM.
5. Backup penuh vs Backup bertambah
sebagian
Suatu backup penuh meliputi semua
data yang diatur oleh suatu MySQL Server pada titik ditentukan pada waktunya.
Suatu incremental backup terdiri dari perubahan pada data sesuai dengan log
pada server.
6. Point in time recovery
Metoda lain menggunakan log binary
untuk mencapai point in time recovery. Ini dilaksanakan dengan recovery yang
pertama dari backup yang pertama dan merecovery seperti semula dan memodifikasi
prosesnya sampai waktu yang kita tentukan.
7. Backup scheduling, compression
dan encryption
Backup scheduling adalah suatu yang
penting untuk otomatisasi prosedur backup. Proses ini bisa menghindari proses
hacking yang dilakukan diinternet sehingga data selalu terjaga. Proses ini biasa
diterapkan pada system online yang mengcover banyak data pada transaksi.
8. Table Maintenance
Integritas data dapat disepakati
jika table mengalami corrupt. My SQL menyediakan program untuk memeriksa table
dan perbaikan jika terdapat masalah yang ditemukan, program ini biasa
diterapkan pada table MyIsam.
0 comments:
Post a Comment