点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
ASE版本-Adaptive Server Enterprise/16.0 SP02 PL07/EBF 27576 SMP/P/Sun_svr4/OS 5.10/ase160sp02plx/2924/64位/FBO/2017年12月19日星期二20:03:26
操作系统版本-SunOS spp2dbphx1 5.11 11.3 sun4v sparc sun4v
问题描述 – 我们计划从 ASE 15.0.3迁移 EBF 17156 ESD#3 到 ASE 16.0 SP02 PL07 。 作为迁移的一部分,在MDA表测试期间。 对于 ASE 16.0 SP02 PL02 PL07 ..
,我们有以下发现- 当命令为"更新索引统计信息表名"或其他相关的更新统计信息命令时,monProcessActivity,monProcessStatement和monSysStatement未显示正确的物理/逻辑I/O
- monProcessWaits也存在问题。 自流程开始以来的总时间与monProcessWaits中显示的时间之间存在很大差异。 那是monProcessWaits中的总等待时间的总和与查询运行时的总时间不同
以下详细信息–
案例1 – 我们运行了更新索引统计信息表名语句。 在我们观察的整个过程中,monProcessActivity均未显示该SPID的逻辑/物理I/O有所增加。 这是服务器上运行的唯一进程。 但是,我们发现monOpenObjectActivity和monProcessObject逻辑与物理I/O相应增加。 查询如下,附件中提供了详细信息。
命令-更新索引统计数据mytable
选择object_id('mytable')
-表ID为645446665。这是对象的ID,从sp_who中我们发现spid = 189
选择getdate()
从master..monOpenObjectActivity中选择*,其中ObjectID = 645446665
从master..monProcessActivity中选择*,其中Spid = 189
从master..monProcessWaits中选择w。*,i.description,在master..monWaitEventInfo i中选择i.WaitEventID = w.WaitEventID和Spid = 189
等待延迟" 00:00:30"
从master..monOpenObjectActivity中选择*,其中ObjectID = 645446665
从master..monProcessActivity中选择*,其中Spid = 189
从master..monProcessWaits中选择w。*,i.description,在master..monWaitEventInfo i中选择i.WaitEventID = w.WaitEventID和Spid = 189
案例2 – 我们运行了第二条语句(一条select语句)。 然后,在monProcessActivity和monProcessWaits上进行选择以收集MDA详细信息,然后等待等待20秒,并收集相同的MDA数据。 但是,对应的等待时间总和为20秒,总共仅返回14秒。 这比实际等待延迟时间少6秒。 因此,在monProcessActivity中缺少了30%的时间(20秒中的6分)
实际查询-通过check_no从big_test_table顺序中选择前1000000 *
-该过程的spid为829
选择getdate()
从master..monProcessActivity中选择*,其中Spid = 829
从monProcessWaits w,monWaitEventInfo i中选择w。*,i.description,其中i.WaitEventID = w.WaitEventID和Spid = 829
等待延迟" 00:00:20"
从master..monProcessActivity中选择*,其中Spid = 829
从monProcessWaits w,monWaitEventInfo i中选择w。*,i.description,其中i.WaitEventID = w.WaitEventID和Spid = 829
- 请确认所做的观察是正确的。
- 请告知我,是否在ASE SP02 PL08或ASE PL03 SP05及更高版本上存在相同的详细信息。 想知道哪个版本比该版本更高...我正在测试的版本没有此错误。
- 我该如何引起SAP的注意? 除了通过SAP提起诉讼外,还有其他方法吗?
致谢
Anurag Bhattacharjee。
我碰巧注意到了这一点,并认为我会在几年前敲响铃铛时做出回应。
Sybase/SAP经历了各种计数器的无数次迭代,这些计数器在各种情况下均无法正常工作,我们放弃了说实话,因为每次它们修复一个计数器又一个计数器损坏时。
我们的主要监视查询使用sysprocesses中的physical_io(是的,在95%的情况下可以使用此方法),并且有条件地将monProcessObject用于您提到的命令(以及其他)
我没有看过您的第二个例子。
请记住,等待时间就是在事件上花费的时间,因此,如果您错过了6秒,则可能是引擎上的任务花费的时间,即cpu时间 在本质上。 因此,在这20秒钟中,有70%的时间是在等待,有30%的时间是在使用CPU。
我假设您将"内核模式"设置为"线程化" 新的ASE 16安装。 这改变了一些有关I/O如何运行以及ASE中谁(哪个线程)实际运行I/O的事情。
如果您运行
并转到输出的"线程利用率"部分,您将看到有单独的线程在做网络I/O和磁盘I/O。
我想知道您的进程是否显示更多空闲状态,因为在线程模式下,您的进程在等待网络I/O或磁盘I/O线程时不会显示为繁忙。
在sp_sysmon中的"内核使用率"部分中,FYI大多也忽略I/O繁忙号码。 如果有任何I/O待处理(甚至只有1个),则任何空闲引擎都将被视为I/O繁忙
尊敬的西蒙,
这对于物理/逻辑I/O错误很有帮助。 出于任何原因,您从sysprocesses而不是monProcessObject中获取物理I/O? 谢谢!!
最后,对monProcessWaits的任何评论。 让我们知道的是,MonProcessWaits(应该被认为是MDA等待的前7个表之一)并没有考虑到将近30%的时间,这让我们感到不安。 我们的查询很简单....
->按col4从表顺序中选择*
**我们发现spid是597
从monProcessWaits中选择*,其中SPID = 597-sample1
等待延迟" 00:00:20"
从monProcessWaits中选择*,其中SPID = 597-sample2
monProcessWaits中的数据显示,sample1和sample2之间等待SPID 597的总时间为14秒,而不是实际的20秒。 因此,缺少20秒中的6秒。 换句话说,monProcessWaits缺少了将近30%的采样时间。
致谢
Anurag Bhattacharjee。
一周热门 更多>