mysql 锁表问题
2015-10-10 16:44
567 查看
最近项目用的mysql数据库,在多个表同时修改时遇到锁表的问题,
测试得知,InnoDB在明确指定表主键id时才会执行ROwLock,否则执行表lock,
select * from table1 where id=1 for update; 此时会执行该行数据的lock
select * from table1 where name=1
for update; select * from table1 where id like '1%'
for update; 此时执行的表lock;
在mysql中可以启用事务自测。
代码中,一般事务定义在服务层,在服务层中可以执行
select * from table1 where id=1 for update;
update table1 set name=2 where id=1;
这样可以在保证数据唯一性的前提下 修改数据
测试得知,InnoDB在明确指定表主键id时才会执行ROwLock,否则执行表lock,
select * from table1 where id=1 for update; 此时会执行该行数据的lock
select * from table1 where name=1
for update; select * from table1 where id like '1%'
for update; 此时执行的表lock;
在mysql中可以启用事务自测。
代码中,一般事务定义在服务层,在服务层中可以执行
select * from table1 where id=1 for update;
update table1 set name=2 where id=1;
这样可以在保证数据唯一性的前提下 修改数据
相关文章推荐
- C#连接mysql数据库的完整方法
- mysql远程访问权限
- mysql sql语句为表批量增加字段
- mysql 知识点总结
- mysql5.5 max_connections参数设置失效
- Mysql命令行添加用户
- mysql limit分页查询效率
- mysql遇到的报错
- mysql show processlist 命令详解
- mysql kill操作
- MySQL 主从复制
- mysql反引号的使用
- mysql设置root密码
- mysql对查询的结果集排序
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
- mysql启动的四种方式
- mysql数据库的一些常用命令(一)
- mysql修改字符集utf8
- mysql按时间段查询
- [MySQL] - errno:150