1.mysql全局上锁
FLUSH TABLES WITH READ LOCK
这个命令是全局读锁定,执行了此命令之后所有库所有表都被锁定只读。在搭建主从的时候,此命令可以很好地保证主库状态
执行此语句后,库执行create语句也会等待
解锁语句是unlock tables。
flush tables table_name with read lock
执行这个语句是锁定特定表
2.LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}
这个命令是表级别的锁定,可以定制锁定某一个表。例如: lock tables test read; 不影响其他表的写操作。
解锁语句是unlock tables。
这两个语句在执行的时候需要注意,就是隐式提交的语句。在退出mysql终端的时候都会隐式的执行unlock tables。也就是如果要让表锁定生效就必须一直保持对话