1.FLUSH TABLES WITH READ LOCK
这个命令是全局读锁定,执行了命令之后所有库所有表都被锁定只读。一般都是在数据库联机备份,这个时候数据库的写操作将被阻塞,读操作顺利进行。
解锁的语句也是unlock tables
2.LOCK TABLES tabl_name[AS alias] {READ [LOCAL]|[LOW_PRIORITY]|WRITE}
这个命令是表级别的锁定,可以定制锁定某一个表。例如:lock tables test read;不影响其他表的写操作
解锁的语句也是unlock tables。
这两个语句在执行的时候需要注意个特点,就是 隐式提交的语句。在退出mysql终端的时候都会隐式的执行unlock tables。 也就是如果要让表锁定生效必须一直保持对话。
read-lock:不允许其他发的读和写请求,但阻塞写请求,既可以同时读,但不允许任何写。也叫共享锁
write-lock:不允许其他并发的读和写请求,是排他的(exclusive)。也叫独占锁
本文转自 xinsir999 51CTO博客,原文链接:http://blog.51cto.com/xinsir/1665326,如需转载请自行联系原作者