Teradata:选择无锁定表

zuc*_*ori 3 locking teradata

据我了解,从 Teradata 中的表中选择时,该表默认处于锁定状态。我想做一个简单的select * from table不锁定表。意思是,我想做一个选择并允许其他用户从同一个表中进行选择,而不必等待我的选择结束。

我知道我可以使用LOCKING修饰符降级选择锁,如下所示:

locking table my_table for access select * from my_table
Run Code Online (Sandbox Code Playgroud)

但这将允许我的操作不等待锁定。据我了解,它仍然会锁定表,因此其他操作将不得不等待锁定。

dno*_*eth 6

如果这些其他用户只需要从该表中选择,则您和其他会话都不必添加LOCKING修饰符。

一个选择READ默认应用一个锁,它不会阻止其他选择,只有插入/更新/删除和 DDL 被阻止。

如果您希望其他会话能够修改行,您应该使用LOCK ROW ACCESS它允许脏读,即第二个会话可能会在您阅读时修改数据。

Teradata 支持四个标准 SQL 事务隔离级别中的两个,限制最少和最严格:

Read Uncommited -> ACCESS LOCK
Read Commited
Repeatable Read
Serializable -> READ LOCK
Run Code Online (Sandbox Code Playgroud)

Teradata 15.10 实现了一个名为Load Isolation的新功能,它添加了一种Read Commited