Tuesday, September 11, 2012

Belajar Lock Table and Unlock Tables Pada Mysql

ilustrasi
misalkan terdapat tabel temp dengan spefikasi berikut
temp
*idtemp int(10) Primary Key Auto Increment
*name varchar (30)

contoh kasus
SI A ingin mengisi table temp dengan idtemp yang urut 1-100000 bersamaan dengan itu SI B ingin mengisi beberapa record tanpa menentukan nilai idtemp. dengan kasus seperti ini besar kemungkinannya akan terjadi tabrakan karena SI A mengisi idtemp secara manual sedangkan SI B mengisi idtemp secara otomatis.

SI A bisa menggunakan fungsi lock tables;
SI A SESSION
mysql>lock table temp write
mysql>insert into (idtemp,name) values(1,"a");
mysql>insert into (idtemp,name) values(2,"a");
mysql>insert into (idtemp,name) values(3,"a");



.
. # proses mengisi sampai 100000
.
mysql>insert into (idtemp,name) values(100000,"a");
mysql>unlock tables;

Misalkan pada ketika SI B menambahkan data sebelum SI A selesai mengeksekusi query maka perintah query SI B akan di tunda sampai SI A selesai
SI B SESSION
mysql>insert into (name) values("xy");  <--- akan di pending sampai SI A selesai

Pada lock table Parameternya bisa menggunakan WRITE atau menggunakan READ Perbedaanya ketika menggunakan WRITE si B tidak bisa men SELECT dan tidak bisa INSERT,UPDATE,DELETE sebelum si A selesai. sedangkan ketika menggunakan READ si B bisa men SELECT meskipun si A belum selesai tapi si B tetap tidak bisa men INSERT,UPDATE,DELETE sebelum si A Selesai.

contoh write :
mysql>lock table temp write
contoh read :
mysql>lock table temp read