一、FLUSH TABLES WITH READ LOCKmysql
這個命令是全局讀鎖定,執行了命令以後全部庫全部表都被鎖定只讀。通常都是用在數據庫聯機備份,這個時候數據庫的寫操做將被阻塞,讀操做順利進行。解鎖的語句也是unlock tables。sql
二、LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}數據庫
這個命令是表級別的鎖定,能夠定製鎖定某一個表。例如: lock tables test read; 不影響其餘表的寫操做。解鎖語句也是unlock tables。併發
這兩個語句在執行的時候都須要注意個特色,就是 隱式提交的語句。在退出mysql終端的時候都會隱式的執行unlock tables。也就是若是要讓表鎖定生效就必須一直保持對話。spa
三、MYSQL的read lock和wirte lockit
read-lock: 容許其餘併發的讀請求,但阻塞寫請求,便可以同時讀,但不容許任何寫。也叫共享鎖table
write-lock: 不容許其餘併發的讀和寫請求,是排他的(exclusive)。也叫獨佔鎖class