有什么方法可以选择而不会导致 MySQL 锁定?

本教程将介绍有什么方法可以选择而不会导致 MySQL 锁定?的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

有什么方法可以选择而不会导致 MySQL 锁定? 教程 第1张

问题描述

查询:

SELECT COUNT(online.account_id) cnt from online;

但是在线表也是被事件修改的,所以经常运行show processlist可以看到锁.

MySQL中有什么可以让select语句不引起锁的语法?

我忘记在上面提到它在 MySQL 从属数据库上.

在我添加到 my.cnf:transaction-isolation = READ-UNCOMMITTED 之后从机将遇到错误:

错误'无法进行二进制日志记录.消息:InnoDB 中的事务级别 'READ-UNCOMMITTED' 对于查询时的 binlog 模式 'STATEMENT'' 不安全

那么,有什么兼容的方法来做到这一点?

推荐答案

找到一篇题为MYSQL WITH NOLOCK"的文章

在 MS SQL Server 中,请问执行以下操作:

SELECT * FROM TABLE_NAME WITH (nolock)

和 MYSQL 的等价物是

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

编辑

Michael Mior建议以下(来自评论)

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
SELECT * FROM TABLE_NAME ;
COMMIT ;

好了关于有什么方法可以选择而不会导致 MySQL 锁定?的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。