mysql不能在更新一个表的同时查询同样的一张表
来源:互联网 发布:ica 四阶统计量算法 编辑:程序博客网 时间:2024/05/16 08:41
记得在看高性能mysql的时候,说过mysql不能在更新一个表的同时查询同一张表,今天看了一个stackoverflow的求助帖,突然间想起了这件事情。
http://stackoverflow.com/questions/20786453/mysql-update-a-table-and-select-from-the-same-table-in-a-subquery
stackoverflow帖子地址
对于这个问题,个人认为是mysql读写锁锁定的问题
网络上关于读写锁的解释:
读锁:
若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
写锁:
若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁。这保证了其他事务在T释放A上的锁之前不能再读取和修改A。
加了共享锁的对象,可以继续加共享锁,不能再加排它锁。加了排它锁后,不能再加任何锁。
那么说我在更新一个表的时候,我锁定了一行,这一行我是不能加读锁的了,所以这时我查询这张表,就会出现这种问题。
这里面还有许多需要细化分析的地方,比方说mvcc等,还需要再看一下
http://www.xiangyu123.com/1059.html
关于mysql锁的一篇文章
0 0
- mysql不能在更新一个表的同时查询同样的一张表
- mysql如何在一个表中插入数据的同时,更新另一个表的数据?
- mysql查询在一张表存在而另外一张表的不存在的写法
- mysql查询在一张表不在另外一张表的记录
- mysql查询在一张表不在另外一张表的记录
- mysql查询在一张表不在另外一张表的记录(外连接)
- 查询在一张表不在另外一张表的记录
- 查询在一张表不在另外一张表的记录
- 查询在一张表不在另外一张表的记录
- 查询在一张表不在另外一张表的记录
- 查询在一张表不在另外一张表的记录
- 查询在一张表不在另外一张表的记录
- mysql 为什么不能在同一个表上查询和更新?
- 在一张表中,查询出一个字段相同,一个字段不同的记录
- 查询一张表的数据去更新另一张表
- mysql 查询一张表没有存在在另一张表的数据
- Mysql 把查询的数据插入另外一张表
- MYSQL 不允许在子查询的同时删除原表数据的解决方法 specify target table
- Tomcat中的docBase配置(映射非webapps目录下的项目)
- 程序的内存分配
- 2013年个人微博推荐技术资料汇总
- Object-C 的构造函数析构函数
- ZOJ-1814
- mysql不能在更新一个表的同时查询同样的一张表
- SAP关于单位换算
- Leetcode: Add Two Numbers
- 设计一个移动应用的本地缓存机制
- 甲壳虫
- 在R12下加载Java Bean,配置FORMS_WEB_CONFIG_FILE文件
- 软件工程试验报告一
- 12月怎么也得写一篇文章
- Android性能优化之数据库优化