Teradata 在通过具有访问权限的视图访问 table 时锁定 table 以供读取
Teradata locks table for read while accessing to table through view with access rights
这真的很奇怪。
我有 2 个视图,一个具有 table 的访问权限,另一个具有读取权限。
replace view v1_read as locking row for read
select id1 from t1;
replace view v2_access as locking row for access
select id2 from t2;
然后我运行这样select查询并查看解释计划:
select id1, id2
from v2_access left join v1_read on v2_access.id2=v1_read.id1;
Teradata 块 table t2 用于读取,但它应该块用于访问。是错误吗?
我可以说 Teradata 以这种方式手动启动它以阻止访问:
lock table t2 for access -- before the query
但是这种解决方案存在问题 - 管理员不提供此类授权。
TD 发布:15.10.03.07
TD版本:15.10.03.09
我该如何解决?
如果您编写这样的 select 查询而没有指定任何内容,TD 将从两个视图中获得最大权限。所以这就是 t2
被阻止读取的原因。
- 总是用
explain
检查方块
- 如果不同意,请手动屏蔽
lock table t2 for access
这真的很奇怪。
我有 2 个视图,一个具有 table 的访问权限,另一个具有读取权限。
replace view v1_read as locking row for read
select id1 from t1;
replace view v2_access as locking row for access
select id2 from t2;
然后我运行这样select查询并查看解释计划:
select id1, id2
from v2_access left join v1_read on v2_access.id2=v1_read.id1;
Teradata 块 table t2 用于读取,但它应该块用于访问。是错误吗?
我可以说 Teradata 以这种方式手动启动它以阻止访问:
lock table t2 for access -- before the query
但是这种解决方案存在问题 - 管理员不提供此类授权。
TD 发布:15.10.03.07
TD版本:15.10.03.09
我该如何解决?
如果您编写这样的 select 查询而没有指定任何内容,TD 将从两个视图中获得最大权限。所以这就是 t2
被阻止读取的原因。
- 总是用
explain
检查方块
- 如果不同意,请手动屏蔽
lock table t2 for access