使用LOCK TABLES、UNLOCK TABLES语句验证MySQL存储引擎MyISAM锁机制(一)
来源:互联网 发布:r11支持5g网络吗 编辑:程序博客网 时间:2024/06/15 21:00
背景:
假设表T_01表创建语句如下:
create table t_01 (name varchar(31), age int) engine=myisam;
一、验证获取MyISAM表读锁后,能否对数据进行更新
1. 登录MySQL服务器,启动会话A,获取表T_01读锁
mysql> lock tables t_01 read;
2. 同一会话继续执行插入语句
mysql> insert into t_01(name, age) values ('name01', 23);
注:这个语句执行会抱错"ERROR 1099 (HY000): Table 't_01' was locked with a READ lock and can't be updated"
3. 启用另外的client登录MySQL服务器,启动会话B,执行插入语句
shell> mysql -uxxx -p test
mysql> insert into t_01(name, age) values ('name01', 23);
注:一直等待执行,游标一直闪烁;原因是被读锁阻止执行。
4. 使用会话A,执行释放锁语句
mysql> unlock tables;
注:会话A释放表锁后,会话B自动获取t_01表锁,第三步中的插入语句执行成功
5. 查看记录是否插入成功
mysql> select * from t_01;
注:('name01', 23)这条记录插入成功
结论:
MyISAM表读锁会阻止表上其它写操作
二、验证获取MyISAM表读锁后,能否对数据进行读取
1. 登录MySQL服务器,启动会话A,获取表T_01读锁
mysql> lock tables t_01 read;
2. 同一会话执行查询语句
mysql> select * from t_01;
注:能正常显示表记录结果
3. 启用另外的client登录MySQL服务器,启动会话B,执行插入语句
shell> select * from t_01;
注:能正常显示表记录结果
结论:
MyISAM表读锁不会阻止任何会话在此表上读操作
假设表T_01表创建语句如下:
create table t_01 (name varchar(31), age int) engine=myisam;
一、验证获取MyISAM表读锁后,能否对数据进行更新
1. 登录MySQL服务器,启动会话A,获取表T_01读锁
mysql> lock tables t_01 read;
2. 同一会话继续执行插入语句
mysql> insert into t_01(name, age) values ('name01', 23);
注:这个语句执行会抱错"ERROR 1099 (HY000): Table 't_01' was locked with a READ lock and can't be updated"
3. 启用另外的client登录MySQL服务器,启动会话B,执行插入语句
shell> mysql -uxxx -p test
mysql> insert into t_01(name, age) values ('name01', 23);
注:一直等待执行,游标一直闪烁;原因是被读锁阻止执行。
4. 使用会话A,执行释放锁语句
mysql> unlock tables;
注:会话A释放表锁后,会话B自动获取t_01表锁,第三步中的插入语句执行成功
5. 查看记录是否插入成功
mysql> select * from t_01;
注:('name01', 23)这条记录插入成功
结论:
MyISAM表读锁会阻止表上其它写操作
二、验证获取MyISAM表读锁后,能否对数据进行读取
1. 登录MySQL服务器,启动会话A,获取表T_01读锁
mysql> lock tables t_01 read;
2. 同一会话执行查询语句
mysql> select * from t_01;
注:能正常显示表记录结果
3. 启用另外的client登录MySQL服务器,启动会话B,执行插入语句
shell> select * from t_01;
注:能正常显示表记录结果
结论:
MyISAM表读锁不会阻止任何会话在此表上读操作
- 使用LOCK TABLES、UNLOCK TABLES语句验证MySQL存储引擎MyISAM锁机制(一)
- mysql lock tables unlock tables
- MySQL的LOCK TABLES/UNLOCK TABLES
- MySQL锁表lock tables和unlock tables
- mysql中的LOCK TABLES和UNLOCK TABLES
- MySQL LOCK TABLES 与UNLOCK TABLES
- MySQL LOCK TABLES 与UNLOCK TABLES
- MySQL LOCK TABLES 与UNLOCK TABLES
- mysql 锁表lock tables/unlock tables
- MySQL的lock tables和unlock tables的用法
- MySQL的lock tables和unlock tables的用法
- MYSQL lock tables 与unlock tables 表加锁与解锁
- MySQL的lock tables和unlock tables的用法
- MySQL的lock tables和unlock tables的用法
- MySQL的lock tables和unlock tables的用法
- MySQL的lock tables和unlock tables的用法
- mysql的lock tables与unlock tables的用法
- MySQL的lock tables和unlock tables的用法(转载)
- Windows注册表HIVE文件格式解析
- 卓越乃一生之追求,而非其他
- c#如何获取MP4文件时长
- Android应用开发之( TableLayout中stretchColumns、shrinkColumns的用法)
- pendingIntent简单理解
- 使用LOCK TABLES、UNLOCK TABLES语句验证MySQL存储引擎MyISAM锁机制(一)
- 像访问数组一样访问对象
- 让Editplus和SVN集成
- Linux中几个在备份中常用的命令(cp,scp,rsync)
- RFC2616 HTTP/1.1 标志转换及通用语法
- Hibernate关联关系映射_单边一对多
- linphone在android中,怎么读取音频之探索过程!终于找到它是怎么读声音的!
- CListCtrl使用
- 探索推荐引擎内部的秘密