Cara menggunakan mysql unlock tables

MySQL – Latu – 13505019 – Mengunci dan Membuka Tabel -4 by catbasdat

Mei 30, 2007, 11:50 am
Filed under: Eksplorasi MySQL

Penguncian tabel secara permanen, terkadang diperlukan sekali ketika kita ingin melakukan backup maupun
recovery dengan sempurna. Perintah ini akan mengunci semua tabel pada database secara permanen sehingga
hanya dapat ditampilkan saja tanpa bisa dimodifikasi, sampai user root membuka kembali tabel tersebut.

Penguncian secara permanen: FLUSH TABLES WITH READ LOCK;

Selain penguncian secara permanen, kita juga dapat melakukan penguncian tabel yang sifatnya sementara, yaitu:
LOCK TABLES nama_tabel READ;

Option selain READ adalah WRITE,
perbedaannya adalah jika kita menggunakan READ, maka user masih bisa melihat informasi yang ada di dalam tabel.

Unlock tabel hanya bisa dilakukan oleh user yang mengunci tabel tersebut. Perintah unlock:
UNLOCK TABLES;

Iklan

Share this:

  • Twitter
  • Facebook

Menyukai ini:

Suka Memuat...

Terkait


Tinggalkan sebuah Komentar so far
Tinggalkan komentar

RSS feed for comments on this post. TrackBack URI



Tinggalkan Balasan

Ketikkan komentar di sini...

Isikan data di bawah atau klik salah satu ikon untuk log in:

Email (wajib) (Alamat takkan pernah dipublikasikan)

Nama (wajib)

Situs web

You are commenting using your WordPress.com account. ( Logout /   )

You are commenting using your Twitter account. ( Logout /   )

You are commenting using your Facebook account. ( Logout /   )

Batal

Connecting to %s

Beri tahu saya komentar baru melalui email.

Beritahu saya pos-pos baru lewat surat elektronik.

Δ

START TRANSACTION | BEGIN [WORK] COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE] ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE] SET AUTOCOMMIT = {0 | 1}
START TRANSACTION dan BEGIN digunakan memulai transaksi baru. Dan COMMIT digunakan untuk melakukan (yang disimpan) transaksi berjalan berarti yang membuat perubahan permanen. ROLLBACK digunakan untuk mengulang kembali transaksi berjalan berarti membatalkan perubahan. SET AUTOCOMMIT pernyataan digunakan untuk menonaktifkan atau mengaktifkan default autocommit modus untuk transaksi berjalan.

Kata kunci opsional PEKERJAAN digunakan untuk mendukung untuk COMMIT dan ROLLBACK. Dan chain dan RELEASE digunakan untuk mengontrol tambahan atas penyelesaian transaksi. The And Chain klausa digunakan untuk memulai sebuah transaksi baru ketika arus satu berakhir. Dan ini baru memiliki tingkat isolasi yang sama. Klausa RELEASE digunakan untuk memutuskan hubungan server dengan koneksi klien saat setelah mengakhiri transaksi berjalan. Secara default MySQL dalam modus autocommit. Ketika kita menggunakan mesin transaksi penyimpanan yang aman seperti BDB, InnoDB maka kita dapat menonaktifkan modus autocommit dengan menggunakan pernyataan berikut:


mysql> SET AUTOCOMMIT=0;
Query OK, 0 rows affected (0.06 sec)

 Dengan menggunakan pernyataan di atas kita dapat menonaktifkan autocommit mode, maka kita harus menggunakan COMMIT untuk menyimpan perubahan dalam disk. Dan jika kita ingin mengabaikan perubahan maka kita bisa menggunakan ROLLBACK. Untuk menonaktifkan modus autocommit dengan serangkaian pernyataan tunggal maka kita bisa menggunakan pernyataan START TRANSACTION. Contoh:

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
mysql> UPDATE Emp SET Perks=Perks*1.03 WHERE Salary>15000;
Query OK, 4 rows affected (0.01 sec)
Rows matched: 4  Changed: 4  Warnings: 0
mysql> COMMIT;
Query OK, 0 rows affected (0.02 sec)

Pernyataan yang tidak dapat Rolled Kembali

Dalam MySQL beberapa pernyataan yang tersedia bahwa kita tidak dapat diperpanjang kembali ini termasuk DDL (Data Definition Language) pernyataan seperti membuat database, membuat tabel, drop database, tabel drop, mengubah tabel. Pastikan Anda transaksi tidak termasuk jenis ini laporan. Jika Anda telah mengeluarkan pernyataan DDL awal transaksi dan laporan lain gagal maka anda tidak dapat bergulir kembali efek penuh transaksi dengan menerbitkan pernyataan ROLLBACK.

SAVEPOINT dan ROLLBACK ATAS SAVEPOINT

Sintaks umum SAVEPOINT dan ROLLBACK TO SAVEPOINT adalah:
SAVEPOINT savepoint_name
ROLLBACK [KERJA] ATAS savepoint_name SAVEPOINT
RELEASE SAVEPOINT savepoint_name

SAVEPOINT pernyataan digunakan untuk menetapkan savepoint transaksi bernama dengan nama apapun. The ROLLBACK ATAS SAVEPOINT pernyataan digunakan untuk memutar kembali transaksi untuk savepoint bernama. Berarti modifikasi pada baris yang kami buat dalam transaksi berjalan setelah savepoint, kita modifikasi ini digulung kembali. Kita dapat menghapus savepoint bernama dari set savepoints transaksi saat ini dengan menggunakan SAVEPOINT RELEASE. Contoh:


mysql> SELECT * FROM Emp;
+-----+---------+----------+-------------------+--------+-------+
| Eid | Ename   | City     | Designation       | Salary | Perks |
+-----+---------+----------+-------------------+--------+-------+
| 1   | Rahul   | Delhi    | Manager           | 10300  | 879   |
| 2   | Gaurav  | Mumbai   | Assistant Manager | 10300  | 879   |
| 3   | Chandan | Banglore | Team Leader       | 15450  | 1060  |
| 5   | Tapan   | Pune     | Developer         | 20600  | 1178  |
| 6   | Amar    | Chennai  | Developer         | 16000  | 1193  |
| 7   | Santosh | Delhi    | Designer          | 10000  | 891   |
| 8   | Suman   | Pune     | Web Designer      | 20000  | 698   |
+-----+---------+----------+-------------------+--------+-------+
7 rows in set (0.46 sec)
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
mysql> UPDATE Emp
    -> SET Salary=Salary*1.03 WHERE Salary>=10000;
Query OK, 7 rows affected (0.10 sec)
Rows matched: 7  Changed: 7  Warnings: 0
mysql> SAVEPOINT sve_point;
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO Emp VALUES(10,'Chandan','Delhi','Designer',20000,965);
Query OK, 1 row affected (0.03 sec)
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
0
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
1
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
2
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
3
LOCK TABLES dan UNLOCK TABLES
Sintaks umum untuk mengunci dan membuka tabel adalah:LOCK TABLES tbl_name [AS alias] {READ [LOKAL] | [LOW_PRIORITY] WRITE} [, tbl_name [AS] alias {BACA [LOKAL] | [LOW_PRIORITY] WRITE}] ... UNLOCK TABLES
 

Para LOCK TABLES digunakan untuk mengunci tabel dasar untuk thread ini. Jika ada thread lain mengunci tabel maka tabel ini diblokir sampai semua kunci dapat diperoleh. The UNLOCK TABLES digunakan untuk secara eksplisit melepaskan kunci yang dipegang oleh thread ini. Thread ini secara implisit membuka semua tabel jika isu-isu lain LOCK TABLES atau jika koneksi ke server ditutup. Setelah mendapatkan kunci global baca kita juga bisa menggunakan UNLOCK TABLE dengan FLUSH TABLES WITH READ LOCK untuk melepaskan kunci. Tetapi untuk menggunakan LOCK TABLES Anda memerlukan LOCK TABLES dan hak SELECT untuk tabel yang terlibat.
Sebuah mengunci tabel digunakan untuk melindungi hanya terhadap tidak pantas menulis atau dibaca oleh klien lain. Jika klien ada memegang kunci bahkan kunci membaca maka client dapat melakukan operasi tingkat tabel seperti DROP TABLE. Tapi operasi memotong tidak dapat dilakukan karena mereka tidak transaksi aman.
Penggunaan TABEL LOCK dengan tabel transaksional:

    
* Seperti yang kita diskusikan LOCK TABLES tidak transaksi aman dan secara implisit melakukan melakukan operasi pada setiap transaksi aktif sebelum melakukan untuk mengunci meja. Dan mulai melakukan transaksi secara implisit suatu TABEL UNLOCK.
    
* Untuk menggunakan LOCK TABLES dengan tabel transaksional seperti InnoDB, kita harus menetapkan AUTOCOMMIT = 0 dan kita tidak menyebutnya TABEL UNLOCK sampai kita komit transaksional secara eksplisit. Jika kita menelepon LOCK TABLES kemudian InnoDB internal membawanya kunci meja sendiri dan MySQL juga mengambil kunci tabel sendiri. Pada berikutnya melakukan InnoDB dirilis mengunci tabel tetapi untuk melepaskan MySQL kita harus memanggil UNLOCK TABLES. Namun jika kita AUTOCOMMIT = 1 maka InnoDB dirilis kunci meja segera setelah panggilan LOCK TABLES itu sebabnya kebuntuan dengan mudah dapat terjadi.
    
* ROLLBACK tidak dapat melepaskan MySQL non kunci tabel transaksional.
    
* FLUSH TABLES DENGAN READ LOCK digunakan untuk mendapatkan kunci global daripada kunci tabel.
Ketika kita menggunakan LOCK TABLES maka kita harus mengunci semua tabel yang kita gunakan dalam laporan kami. LOCK TABLES tidak bisa mengunci pandangan itulah sebabnya jika kita menggunakan tampilan apapun maka kita harus mengunci semua tabel dasar yang pandangan-pandangan ini tergantung. Ketika kita memperoleh kunci dengan pernyataan TABEL LOCK maka kita tidak bisa mengakses tabel yang tidak terkunci. Tetapi jika anda menggunakan alias dalam hal ini Anda harus mendapatkan kunci untuk masing-masing alias terpisah.