MySQL服务器的内部锁定 |
本文标签:MySQL服务器 内部锁定是MySQL服务器锁定的两种方式之一,下面就对MySQL服务器的内部锁定作详尽的介绍,如果您对MySQL服务器锁定方面感兴趣的话,不妨一看 。 内部锁定 内部锁定可以避免客户机的请求相互干扰——例如,避免客户机的SELECT查询被另一个客户机的UPDATE查询所干扰 。也可以利用内部锁定机制防止MySQL服务器在利用myisamchk或isamchk检查或修复表时对表的访问 。 语法: 锁定表:LOCK TABLES tbl_name {READ | WRITE},[ tbl_name {READ | WRITE},…] 解锁表:UNLOCK TABLES LOCK TABLES为当前线程锁定表 。UNLOCK TABLES释放被当前线程持有的任何锁 。当线程发出另外一个LOCK TABLES时,或当MySQL服务器的连接被关闭时,当前线程锁定的所有表自动被解锁 。 如果一个线程获得在一个表上的一个READ锁,该线程(和所有其他线程)只能从表中读 。如果一个线程获得一个表上的一个WRITE锁,那么只有持锁的线程READ或WRITE表,其他线程被阻止 。 每个线程等待(没有超时)直到它获得它请求的所有锁 。 WRITE锁通常比READ锁有更高的优先级,以确保更改尽快被处理 。这意味着,如果一个线程获得READ锁,并且然后另外一个线程请求一个WRITE锁, 随后的READ锁请求将等待直到WRITE线程得到了锁并且释放了它 。 显然对于检查,你只需要获得读锁 。再者钟情跨下,只能读取表,但不能修改它,因此他也允许其它客户机读取表 。对于修复,你必须获得些所以防止任何客户机在你对表进行操作时修改它 。
|