博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LOCK TABLES和UNLOCK TABLES
阅读量:5309 次
发布时间:2019-06-14

本文共 972 字,大约阅读时间需要 3 分钟。

1)       ORACLESQL Server数据库当中没有这种语法

2)       MySQL服务器层实现的,与存储引擎无关

3)       命令格式LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE} [, tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}] ...

a          修饰符LOW_PRIORITY用于之前版本的MySQL,它会影响锁定行为,但是从MySQL 5.6.5以后,这个修饰符已经被弃用。如果使用它则会产生警告

b          一个线程获得在一个表上的read

该线程和所有其他线程只能从表中读数据

当前线程执行写insert和更新update操作都会报错:ERROR 1099 (HY000): Table 'test' was locked with a READ lock and can't be updated

其他线程执行写insert和更新update操作都会被阻塞,直到释放资源后执行

c       一个线程获得在一个表上的read local

该线程和所有其他线程只能从表中读数据

当前线程执行写insert和更新update操作都会报错:ERROR 1099 (HY000): Table 'test' was locked with a READ lock and can't be updated

其他线程可以进行写insert操作,但是更新update操作被阻塞,直到释放资源后执行

d      对于事务型表,如InnoDB表,READ LOCALREAD相同,因为MySQL的默认事务级别为REPEATABLE COMMITTED

e      一个线程在一个表上得到一个WRITE,那么只有拥有这个锁的线程可以从表中读取和写表。其它的线程被阻塞

4)       unlock tables;会解锁当前线程的所有锁

特别注意
lock tables
和事务互相影响可能会产生无法预料的结果,因此建议除了事务禁用了
AUTOCOMMIT
,其他时候不要显式使用
lock table    

转载于:https://www.cnblogs.com/JavaTWW/p/11432525.html

你可能感兴趣的文章
模块搜索路径
查看>>
如何成为一名优秀的程序员?
查看>>
HDU(4528),BFS,2013腾讯编程马拉松初赛第五场(3月25日)
查看>>
C++期中考试
查看>>
Working with Characters and Strings(Chapter 2 of Windows Via C/C++)
查看>>
vim中文帮助教程
查看>>
Android 创建与解析XML(四)—— Pull方式
查看>>
CodeForces 411B 手速题
查看>>
同比和环比
查看>>
SpringMvc拦截器运行原理。
查看>>
MySQL基础3
查看>>
云计算数据与信息安全防护
查看>>
全局设置导航栏
查看>>
RxJS & Angular
查看>>
面向对象(多异常的声明与处理)
查看>>
MTK笔记
查看>>
ERROR: duplicate key value violates unique constraint "xxx"
查看>>
激活office 365 的启动文件
查看>>
9款免费的Windows远程协助软件
查看>>
Maven(八) Maven项目和testng结合应用
查看>>