單個表鎖定:
格式: LOCK TABLES tbl_name {READ | WRITE},[ tbl_name {READ | WRITE},……]
例子: lock tables db_a.tbl_aaa read; // 鎖定了db_a庫中的tbl_aaa表
解鎖: unlock tables;
全局表鎖定:
命令: FLUSH TABLES WITH READ LOCK; // 所有庫所有表都被鎖定只讀
解鎖: unlock tables;
注意:以上兩個鎖表語句在執行的時候都需要注意個特點,就是隱式提交的語句,在退出mysql終端的時候都會隱式的執行unlock tables,也就是如果要讓表鎖定生效就必須一直保持對話。
查看表鎖定:
命令: show open tables in_use > 0;
mysql> show open tables where in_use > 0; +-----------+---------+--------+-------------+ | Database | Table | In_use | Name_locked | +-----------+---------+--------+-------------+ | db_a | tbl_aaa | 1 | 0 | +-----------+---------+--------+-------------+ 1 row in set (0.00 sec)
