首页 > 数据库 > mysql教程 > 如何在不加锁的情况下从MySQL从数据库中选择数据?

如何在不加锁的情况下从MySQL从数据库中选择数据?

DDD
发布: 2024-12-13 05:02:09
原创
530 人浏览过

How to Select Data from a MySQL Slave Database Without Locking?

MySQL 中不加锁选择数据

查询被事件主动修改的表时,有可能会遇到表锁,这会导致影响性能。有没有办法在 MySQL 中执行 select 语句时不会导致此类锁?

从数据库的解决方案

标题为“MYSQL WITH”的文章中提到的解决方案NOLOCK”在这种情况下不适用,因为它是从数据库。此外,将事务隔离级别设置为 READ-UNCOMMITTED 将导致配置为基于 STATEMENT 的二进制日志记录的从属数据库出现错误。

MySQL 特定方法

为了避免在MySQL从库上选择数据时锁定,可以使用以下方法:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT COUNT(online.account_id) cnt from online;
COMMIT;
登录后复制
登录后复制

此方法临时设置将事务隔离级别设置为 READ UNCOMMITTED,这允许 select 语句在不获取锁的情况下继续进行。但是,请务必记住,此设置只能在具有后续 COMMIT 语句的事务中使用。

改进建议

作为替代方案,您可以考虑使用Michael Mior 建议的以下语法:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT COUNT(online.account_id) cnt from online;
COMMIT;
登录后复制
登录后复制

以上是如何在不加锁的情况下从MySQL从数据库中选择数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板