MySQL 中的非锁定 SELECT 查询
在 MySQL 中,并发修改表时,SELECT 操作期间可能会出现频繁锁定。要缓解此问题,请考虑使用允许非锁定读取的技术。
使用 READ UNCOMMITTED
一种方法是将事务隔离级别设置为 READ UNCOMMITTED,它允许在不获取锁的情况下进行读取。但是,此选项可能不适合从属服务器,因为它会损害数据完整性。
SQL 等效的WITH (NOLOCK)
与WITH (NOLOCK) 等效Microsoft SQL Server 中的子句,MySQL 提供了多步骤过程:
启动事务使用 READ UNCOMMITTED 隔离:
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
执行 SELECT 查询:
SELECT * FROM TABLE_NAME;
将事务隔离级别重置回 REPEATABLE阅读:
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
改进的非锁定查询执行
Michael Mior 提出了非锁定查询执行的改进版本:
将事务隔离级别设置为 READ未提交:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
执行 SELECT 查询:
SELECT * FROM TABLE_NAME ;
提交事务:
COMMIT ;
以上是如何在 MySQL 中执行非锁定 SELECT 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!