在具有重组契约的表上拒绝的选择查询正在同一表上执行

2020-08-15 23:56发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

在我的客户端环境中,具有DRL(未分区)的表在执行时已进行重组,同时,当我尝试执行选择操作时,该表被拒绝。 ASE 15.7 SP136 sp-lock.txt

个人环境-我试图通过在测试环境中的示例数据库中创建一个表-Test(a,b和100万行,没有索引)来复制同一表,并触发了reorg compact。 同时,我可以在表Test上执行选择,更新,删除和插入操作,尽管我看到sp_lock的锁类型为Test上的reorg SPID的Ex_intent。 ---附上细节。 测试:16.0 SP03 PL08

因此,我想在下面进行澄清。
1. reorg compact的实际行为是什么?
2.为什么sp_lock显示Ex_intent并仍允许Select和DML? ---通过保留DRL和DPL进行了相同的检查。
3.为什么在生产环境中只有一个选择操作失败了?
4. 15.7 SP136上的reorg compact是否存在任何已知问题?

请告知。

关于,
Dilip Voora

sp-lock.txt (7.9 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

在我的客户端环境中,具有DRL(未分区)的表在执行时已进行重组,同时,当我尝试执行选择操作时,该表被拒绝。 ASE 15.7 SP136 sp-lock.txt

个人环境-我试图通过在测试环境中的示例数据库中创建一个表-Test(a,b和100万行,没有索引)来复制同一表,并触发了reorg compact。 同时,我可以在表Test上执行选择,更新,删除和插入操作,尽管我看到sp_lock的锁类型为Test上的reorg SPID的Ex_intent。 ---附上细节。 测试:16.0 SP03 PL08

因此,我想在下面进行澄清。
1. reorg compact的实际行为是什么?
2.为什么sp_lock显示Ex_intent并仍允许Select和DML? ---通过保留DRL和DPL进行了相同的检查。
3.为什么在生产环境中只有一个选择操作失败了?
4. 15.7 SP136上的reorg compact是否存在任何已知问题?

请告知。

关于,
Dilip Voora

sp-lock.txt (7.9 kB)
付费偷看设置
发送
4条回答
spaceman01
1楼-- · 2020-08-16 00:48

以下是实际帖子的答案。

1. reorg compact的实际行为是什么?a)每当在数据行锁定表上首先执行reorg compact时,它将 带有Ex_intent锁,表明它是排他锁,只是不允许出现任何冲突的表级锁(如共享,更新锁)。
b)Reorg compact通过扫描范围来完成其工作。
c)如果reorg compact找到转发的行,则即使它在扩展区中的页面上工作,它也会排它地锁定整个表。 br> d)在第3步中,如果在同一张表上触发了选择查询(全表,范围查询,来自同一范围reorg compact的数据当前正在运行)),则将使用sh_intent锁定,并允许其读取数据 直到reorg契约已处理到一定程度,并将通过等待事件150移至阻塞状态。
e)一旦reorg契约释放了独占表表,select查询将继续处理。

2。为什么sp_lock显示Ex_intent并仍允许Select和DML?
Ex_intent只是告诉获得的进程可能请求排他锁(先删除后插入),并避免其他表级 锁。

Sh-intent本质上是一个共享锁,即使将ex_intent锁放在表上,也可以从行或页中读取数据

3。为什么在生产环境中选择操作失败了?
选择实际上由于阻塞而超时(在上面的步骤4中进行了解释),我们的车间认为超时有所减少(为避免税收, 根据中央银行关于超时交易的规定。

谢谢!

追夢秋陽
2楼-- · 2020-08-16 00:41

(I)仍然不知道" 拒绝"是什么意思。 如果客户使用的是" 拒绝的"一词,那么最好从客户那里获得关于" 拒绝的"的含义的其他反馈(例如, 解释说' declined '不是谈论ASE查询时通常使用的术语。

直到对' declined '的含义有一个解释,

huskylover
3楼-- · 2020-08-16 00:43

一旦reorg compact请求并被授予实际的独占表锁,其他进程将被禁止从表中进行选择(除非它们是

我的理解是,意图锁由系统实用程序命令(创建表,更改表,重组等)使用。 与查询命令(选择,更新,删除)相比,我们认为该命令有时可能需要升级为表锁,但由于我们更喜欢允许并发性,因此默认情况下不希望使用该命令。

spaceman01
4楼-- · 2020-08-16 00:41

布雷特,我同意您的观点,即获得排他锁的SPID将不接受任何其他表锁。 我复制了相同的场景并找到了以下内容。

1。 使用char(20); col 19 varchar(30),col20作为标识(10,0)创建了一个包含18列(col1,col2 ....,col18)的表,并通过在col19中指定''插入了30万行。/p>

2。现在用"这是我在reorg压缩表vs select上的测试"更新col19。

3。 步骤2之后,我在表上运行了optdiag,发现有3003条转发的行。
4。 在表上触发了reorg compact并立即检查了sp_lock,我按预期看到了" Ex_intent",reorg compact正在进行中
5。在另一个会话中,我从

中选择*,并且看到它处于处理状态并处于锁定状态 它获得的是Sh_intent。

6。从第三个会话开始,我再次使用第20列中的范围运行了一个选择查询,并按预期方式将它作为shared_intent-Blk进行查找,因为选择已在会话2的表上运行。 现在在刺我,

1。 即使有转发的行,我如何从会话2中进行选择查询也成功执行?

2。如果通过获取sh_intent锁进行重组压缩并选择操作(完全或范围操作)想要读取相同的行/页/范围,行为将如何? ---我希望在完成之前从整个表的会话2中选择一个等待事件150,这是我没有看到的。

关于,
Dilip Voora

一周热门 更多>

向帮助了您的网友说句感谢的话吧!