首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该使用哪个MySql InnoDB事务隔离级别?

我应该使用哪个MySql InnoDB事务隔离级别?
EN

Stack Overflow用户
提问于 2019-01-11 23:04:30
回答 1查看 293关注 0票数 2

我使用.NET MySqlClient v6.6.4.0来对付MySql服务器5.7.19

代码语言:javascript
复制
Show table Status 

显示所有表都使用InnoDB引擎。

代码语言:javascript
复制
SHOW VARIABLES LIKE 'tx_isolation';

返回

代码语言:javascript
复制
tx_isolation    REPEATABLE-READ

我的问题很简单。

我有一个过程,它每分钟执行以下操作

代码语言:javascript
复制
Open a database connection
Begin a Transaction (using default isolation mode of RepeatableRead)
Delete all rows from a table
Insert a bunch of rows - at least 50 or 60
Commit transaction
Close connection

我还拥有多个独立的进程,它们可以在任何时候查询该表。

我预计,如果在事务范围内写入表时对其进行查询,则读取器将阻塞直到事务完成,然后取回所有50或60行。

相反,我发现读者并没有阻止和接收到这一点之前已经写好的东西。

我需要什么隔离级别,以便在填充表并接收完整数据时,读取器阻塞?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-11 23:52:45

因此,我不会更改事务隔离级别。我宁愿使用显式表写锁

持有锁的会话可以读取和写入表。 只有持有锁的会话才能访问表。在释放锁之前,其他会话都不能访问它。 在保留写锁时,通过其他会话块锁定表请求。

因为锁和解锁表语句在给定的集合中提交了任何打开的事务,所以您需要小心使用它们。Mysql在上面的链接中提供了以下示例:

代码语言:javascript
复制
SET autocommit=0;
LOCK TABLES t1 WRITE;
... do something with table t1 here ...
COMMIT;
UNLOCK TABLES;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54155180

复制
相关文章

相似问题

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