web-dev-qa-db-ja.com

Sybase ASEが実行中のプロセスを見つける

走る UPDATE INDEX STATISTICSいくつかの巨大なテーブル。そして、それはすでに約1時間実行されます。このコマンドを実行する割合を見つけるための手順/方法はありますか? sp_who, sp_sysmon役に立たない。ありがとう。

2
Daria

(SQLサーバーとは対照的に、DMVデータを公開するのとは対照的に)SybaseASEで直接実行する方法はありません。

UPDATE INDEX STATISTICSCPUPhysical 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
1
Kin Shah

進行状況を予測することは非常に困難ですが、UPDATE STATISTICSコマンドが特定のテーブルで実行した論理IOの数がわかっている場合は、次回、その進行状況の大まかな指標として使用できます(インデックスが同じであると仮定) )。この情報は、monSysStatementmonProcessなどのMDAテーブルから取得できます。

1
RobV