没有合适的资源?快使用搜索试试~ 我知道了~
默认情况下,表锁和行锁都是自动获得的,不需要额外的命令,但是在有的情况下,需要明确的进行锁表或者进行事务的控制,以确保整个事务的完整性,这样就需要使用事务控制和
资源推荐
资源详情
资源评论
http://blog.csdn.net/fuzhongyu2/article/details/52729371
事务控制和锁定语句
分类:
mysql 不懂要快学啊(13)
版权声明:本文为博主原创文章,未经博主允许不得转载。
MySQL 支持对 MyIsam 和 memory 存储引擎的表进行 表级锁定,对 bdb
存储引擎的表进行 行页级锁定,对 InnoDB 存储引擎的表进行 行级锁定。
默认情况下,表锁和行锁都是自动获得的,不需要额外的命令,但是在有的情况
下,需要明确的进行锁表或者进行事务的控制,以确保整个事务的完整性,这样
就需要使用事务控制和锁定语句来完成。
一,lock table 和 unlock table
lock tables 可以锁定用于当前线程的表。如果表被其他线程锁定,则当前线
程会等待,知道可以获取到所有锁定为止。
unlock table 可以释放当前线程获得的任何锁定。当前线程执行另一个 lock
tables 时,或当与服务器的连接被关闭时,所有由当前线程锁定的表被隐含的
解锁。
下面我们演示一个例子:表 t16 获得 read 锁的情况,其他 session 更新该表
记录 会等待锁,t16 表释放锁以后,其他 session 可以进行更新操作。其中
session1 和 session2 表示两个同时打开的 session,表格中的每一行表示同一
时刻两个 session 的运行状况。
1. mysql> create table t16(
2.
3. id int(11),
4. name varchar(63),
5. age int(3)
6. );
7. Query OK, 0 rows affected (0.31 sec)
8.
9. mysql> desc t16;
10. +-------+-------------+------+-----+---------+-------+
11. | Field | Type | Null | Key | Default | Extra |
12. +-------+-------------+------+-----+---------+-------+
13. | id | int(11) | YES | | NULL | |
14. | name | varchar(63) | YES | | NULL | |
15. | age | int(3) | YES | | NULL | |
16. +-------+-------------+------+-----+---------+-------+
17. 3 rows in set (0.00 sec)
18.
19. mysql> insert into t16(id,name,age)values(1,'fzy1',1),(1,'fzy1',1),(3,
'fzy3',3);
20.
21. Query OK, 3 row affected (0.13 sec)
22.
获得表锁和释放表锁事例
session_1
session_2
获得表 t16 的 read 锁定
1. mysql> lock table t16 read;
2. Query OK, 0 rows affected (0.00 sec)
当 session 可以查询该表记录
[java] view plain copy
1. mysql> select * from t16 where id=1;
其他 session 也可以查询该表的记录
[java] view plain copy
1. mysql> select * from t16 where id=1;
剩余18页未读,继续阅读
资源评论
ask_ai_app
- 粉丝: 18
- 资源: 326
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功