FLUSH TABLES WITH READ LOCK 和 LOCK TABLES

來源:互聯網
上載者:User

今天在解決資料庫同步異常的時候用到了flush tables with read lock 這個命令,於是順便就學習了下鎖表的相關知識。

1.FLUSH TABLES WITH READ LOCK

這個命令是全域讀鎖定,執行了命令之後所有庫所有表都被鎖定唯讀。一般都是用在資料庫聯機備份,這個時候資料庫的寫操作將被阻塞,讀操作順利進行。

解鎖的語句也是unlock tables。

2.LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}

這個命令是表層級的鎖定,可以定製鎖定某一個表。例如: lock tables test read; 不影響其他表的寫操作。

解鎖語句也是unlock tables。

這兩個語句在執行的時候都需要注意個特點,就是 隱式提交的語句。在退出mysql終端的時候都會隱式的執行unlock tables。也就是如果要讓表鎖定生效就必須一直保持對話。

P.S. MYSQL的read lock和wirte lock


read-lock: 允許其他並發的讀請求,但阻塞寫請求,即可以同時讀,但不允許任何寫。也叫共用鎖定

write-lock: 不允許其他並發的讀和寫請求,是排他的(exclusive)。也叫獨佔鎖


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.