MySQL 插入时表级锁锁定什么?

发布于 2024-07-12 04:59:49 字数 133 浏览 6 评论 0原文

我多次读到MySQL会在插入期间对MyISAM表执行表级锁。 如果该锁仅用于序列化插入/删除命令,那对我来说没问题。 无论如何,在我的网站上插入内容很少。

但是,在插入命令完成之前,该锁是否也会阻止所有 Select 查询?

I have read many times that MySQL will perform table level locks on MyISAM tables during inserts. It's OK with me if that lock is ment for serializing insert/delete commands only. Inserts are very infrequent on my website any way.

But will that lock block all Select queries too until the insert command finishes?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

满意归宿 2024-07-19 04:59:49

写锁将阻止所有使用您已锁定的表的选择。

A write lock will block all selects that use the tables you've locked.

白况 2024-07-19 04:59:49

要在 MySQL 服务器中实现隔离级别,您可以使用 SET SESSION 命令更改会话隔离模式。

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
SELECT * FROM TABLE_NAME ;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ;

上面的语句将像WITH(nolock)一样工作,即读取未提交的数据。 您还可以为所有连接全局设置隔离级别。

SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;

MySQL服务器中有两个与隔离级别相关的系统变量。

SELECT @@global.tx_isolation;
SELECT @@tx_isolation;

第一个语句将返回全局隔离级别,第二个语句将仅返回当前会话。

在 SQL Server 中,您还可以像这样在事务级别设置隔离级别。

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
GO

阅读更多@: 带有 nolock 的 mysql

To accomplish isolation levels in MySQL server you can change the session isolation mode using SET SESSION command.

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
SELECT * FROM TABLE_NAME ;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ;

The above statement will work like WITH (nolock) i.e READ UNCOMMITTED data. You can also set the isolation level globally for all connections.

SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;

There are two system variables related to isolation level in MySQL server.

SELECT @@global.tx_isolation;
SELECT @@tx_isolation;

The first statement will return the global isolation level, the second will return only for current session.

In SQL Server you can also set the isolation level at transaction level like this.

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
GO

reade more @: mysql with nolock

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文