首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql表锁而不是行锁

Mysql表锁而不是行锁
EN

Stack Overflow用户
提问于 2013-12-02 13:23:36
回答 1查看 362关注 0票数 1

Mysql (5.5) Innodb在这种情况下使用的是表锁而不是行锁。

这会导致对表的其他insert查询失败。此外,这也是一个更大事务的一部分。

代码语言:javascript
复制
Insert into table x(x1,x2)
Select y1,y2 from y
where 'big sql case based conditions'

现在,select查询只选择表的一部分(基于哪个用户),而不是整个表。

但是mysql innodb正在设置表锁。

有什么办法可以避免这种情况吗?任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2013-12-02 22:24:48

我认为你是在REPEATABLE READ模式下使用tx。你能看看这个吗?

代码语言:javascript
复制
mysql> show session variables like '%isol%';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| tx_isolation  | REPEATABLE-READ |
+---------------+-----------------+

如果是这样,请将其更改为“READ COMMITTED”,如下所示:

代码语言:javascript
复制
mysql> set session transaction isolation level read committed;
Query OK, 0 rows affected (0.00 sec)

mysql> show session variables like '%isol%';
+---------------+----------------+
| Variable_name | Value          |
+---------------+----------------+
| tx_isolation  | READ-COMMITTED |
+---------------+----------------+

然后,客户机A启动INSERT INTO .. SELECT并从客户机B插入一行。我认为客户机B的插入会成功。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20321407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档