有什么方法可以选择而不会导致 MySQL 锁定?
本教程将介绍有什么方法可以选择而不会导致 MySQL 锁定?的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。
问题描述
查询:
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 锁定?的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。