走る UPDATE INDEX STATISTICS
いくつかの巨大なテーブル。そして、それはすでに約1時間実行されます。このコマンドを実行する割合を見つけるための手順/方法はありますか? sp_who, sp_sysmon
役に立たない。ありがとう。
(SQLサーバーとは対照的に、DMVデータを公開するのとは対照的に)SybaseASEで直接実行する方法はありません。
UPDATE INDEX STATISTICS
がCPU
、Physical IO
を取得していて、blocked
になっていないかどうかを確認できます。
以下のクエリを使用します:
select l.spid
,p.status as status
,Db_name(l.dbid) as dbname
,p.hostname as hostname
,p.program_name as program_name
,substring(Object_name(l.id, l.dbid), 1, 30) as object
,p.blocked
,case
when type = 1
then "Exclusive table lock"
when type = 2
then "Shared table lock"
when type = 3
then "Exclusive intent lock"
when type = 4
then "Shared intent lock"
when type = 5
then "Exclusive page lock"
when type = 6
then "Shared page lock"
when type = 7
then "Update page lock"
when type = 8
then "Exclusive row lock"
when type = 9
then "Shared row lock"
when type = 10
then "Update row lock"
when type = 11
then "Shared next key lock"
when type = 256
then "Lock is blocking another process"
when type = 512
then "Demand lock"
end as "TYPE_OF_LOCK"
,l.page "Page"
,Substring(p.cmd, 1, 16) as executing_command
,p.physical_io as "PHYSICAL_I/O"
,p.cpu as cpu
from master..syslocks l
,master..sysprocesses p
where l.spid = p.spid
進行状況を予測することは非常に困難ですが、UPDATE STATISTICSコマンドが特定のテーブルで実行した論理IOの数がわかっている場合は、次回、その進行状況の大まかな指標として使用できます(インデックスが同じであると仮定) )。この情報は、monSysStatement
やmonProcess
などのMDAテーブルから取得できます。