无锁MySQL

6

我正在使用MySQL构建一个桌面应用程序,其中后端数据库是MySQL。 MySQL是否支持No Lock或类似于SQL中的等效事物?

Select * from Tablename (NoLock);

假设我正在使用联接从多个表中获取数据,那么在从每个表中选择行时,我是否需要实现此代码?

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
SELECT * FROM 'Table1' 
 iNNERjOIN TABLE2 ON TABLE2.FK=TABLE1.PK ;
COMMIT ;
2个回答

12

试试这个

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

如果我使用连接,单个语句是否可以在多个表上工作? - Shashank
据我所知,它应该可以工作。但我不确定。 - PSR
它适用于许多表和连接。实际上,它将忽略所有锁定,直到您使用以下命令将其还原:SET TRANSACTION ISOLATION LEVEL READ COMMITTED; - Gerardo Grignoli

1
你可以在mysql配置文件中设置隔离级别,避免需要为每个查询调用SET TRANSACTION:
[mysqld] transaction-isolation = READ-UNCOMMITTED

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接