このページはCalíope 1.7を紹介しています。私がいま作っているバージョンです。1.6は、Mac、iPad、iPhone、Apple Watch、Apple TV、Apple Vision Pro向けにApp Storeで公開中です。それぞれの機能がどのバージョンで入ったかは変更履歴に書いてあります。

すべてのトピックに「Calíopeで開く」ボタンを追加します。アプリがインストールされている場合にのみ機能します。

プロセスリスト

実行中のプロセスを表示

サーバのアクティブなセッションを一覧表示します。

場所: ワークスペース › ツール › プロセス

ワークスペースのナビゲーションバーから「プロセス」を開きます。表には、ID、ユーザ、ホスト、データベース、コマンド、時間、状態、SQLの列で、すべてのプロセスが表示されます。

一覧は開いた時点から「間隔」で指定した秒数ごとに自動で更新され、フッタには次の更新までのカウントダウンが表示されます。⏸で一時停止、▶で再開、↻ですぐに読み直します。ユーザのフィルタを使うと、特定のユーザのプロセスだけを表示できます。表では、列のヘッダをクリックまたはタップすると、その列で並べ替えます。iPhoneでは、各プロセスが列なしで3行に積み重ねて表示されます。

SQL Server

SQL Serverでは、メニューに「KILL QUERY」がなく、バーにも実行中のものを「終了」する項目がありません。SQL ServerのKILLはクエリーだけでなくセッション全体を閉じるので、終了できるのはセッションだけです。

ClickHouse

ClickHouseでは、各行は接続ではなく実行中のクエリーです。識別子はそのquery_idで、このエンジンにしかない列が2つあります:「メモリー」と「読み取った行」です。一覧の下には、あるときだけ「未完了のミューテーション」のセクションが続きます。キューに入ったUPDATEやDELETEごとに、テーブル、その識別子、コマンド、残りのパーツ、そして失敗した場合はその理由が表示されます。キューに入った変更は誰にも気づかれずに失敗することがありますが、ここではそれが見えます。そのⓧボタン「ミューテーションをキャンセル」は、確認を求めてからKILL MUTATIONを送ります。すでに書き直された分はそのまま残ります。

Oracle

Oracleでは、各行はV$SESSIONのユーザセッションで、識別子はSID,SERIAL#です。SIDだけでは、あるセッションが閉じて別のセッションが開いたときに重複します。「状態」には進行中の待機と、あればそれをブロックしているセッションが表示されます。「SQL」は実行中の文で、アイドル状態のセッションなら最後に送った文です。一覧を読むCalíope自身の接続には、ノートパソコンのアイコンが付きます。一覧を見るにはV$SESSIONの権限(SELECT_CATALOG_ROLE)が必要です。権限がない場合は、一覧を空で表示する代わりに、一覧の下のバーにサーバの理由が表示され、ダッシュボードの「ユーザ別の接続」も同じことを伝えます。

キーワード: プロセス、スレッド、PROCESSLIST、SHOW PROCESSLIST、アクティブ

プロセスを強制終了

サーバの特定のスレッドを終了します。

場所: プロセスリスト › 右クリック › KILL CONNECTION / KILL QUERY

一覧のプロセスでコンテキストメニューを開き(macOSでは右クリック、iPadでは長押し)、「KILL CONNECTION」(接続全体を終了)または「KILL QUERY」(実行中のクエリーだけをキャンセル)を選びます。どちらの操作も、実行の前に確認が表示されます。

サーバが拒否した場合(たいていは、スレッドが別のユーザのもので、自分のアカウントにその権限がないため)、一覧の下のバーにそのことが表示されます:「スレッド#…は終了されませんでした:」に続けて、サーバの理由です。この内容は読み上げられ、✕で閉じます。実際に終了したスレッドについては何も表示されず、ただ一覧から消えます。

SQL Server

SQL Serverでは、メニューには「KILL CONNECTION」しかありません。KILLはセッション全体を終了して開いているトランザクションをロールバックし、クエリーを実行していたクライアントには、セッションがKILL状態にあるというサーバの応答が返ります。

ClickHouse

ClickHouseでは、メニューには「KILL QUERY」しかありません。各行はクエリーで、閉じるべき別の接続はなく、クエリーは終わると一覧から消えます。

Oracle

Oracleでは、「KILL CONNECTION」はALTER SYSTEM KILL SESSION … IMMEDIATEです。セッションはすぐに終わり、開いているトランザクションはロールバックされ、そのクライアントは接続を失います(sqlplusは*ORA-03113*を報告します)。「KILL QUERY」はALTER SYSTEM CANCEL SQLです。文には*ORA-01013*が返り、セッションは開いたままです。どちらにもALTER SYSTEM権限が必要で、権限がなければ淡色表示になり、一覧の下のバーがそのことを伝えます。一覧を読むCalíope自身の接続は、終了の対象として表示されません。

Apple Vision Pro:行を見てピンチしたまま保持すると、コンテキストメニューが開きます。

書き込みを確認する環境タグが付いていると、終了の確認ではタイトルにタグの名前が入り、二度は確認しません。読み出し専用のタグなら、終了のボタンとメニューは表示されません。

キーワード: KILL、終了、キャンセル、プロセスを強制終了、スレッド、KILL CONNECTION、KILL QUERY

アイドル状態や実行中のスレッドを一括で強制終了

ある状態がN秒より長く続いているスレッドを一括でキャンセルします。

場所: プロセスリスト › アイドル > / アクティブ > · 終了

ツールバーの「アイドル >」と「アクティブ >」の横に秒数を入力し、そのフィールドの「終了」ボタンをクリックします。アイドルは、それより長く待機しているすべての接続を閉じます。アクティブは、それより長く実行されているすべてのクエリーをキャンセルし、接続は開いたままにします。実行の前に、Calíopeは見つかったスレッドの数を伝えて確認を求めます。

その後、同じ一覧の下のバーに結果がまとめられます:見つかったうち何個を終了したか、そしてサーバが拒否したものがあれば、その数と最初の1件の理由です。たとえば「5個中3個を終了しました。2個は拒否されました:…」のように表示されます。

MySQLMariaDBAurora

サーバ自身のスレッド(レプリケーションとイベントスケジューラ)は決して含まれません。

PostgreSQL

サーバ自身のプロセス(チェックポインタ、WALライター、自動VACUUMのランチャー)は一覧に表示されますが、決して含まれません。

SQL Server

SQL Serverには「アイドル >」しかありません。KILLはセッション全体を閉じるので、実行中のクエリーだけをキャンセルすることはできません。サーバ自身のセッションは、一覧にも表示されません。

ClickHouse

ClickHouseには「アクティブ >」しかなく、それより長く実行されているすべてのクエリーをKILL QUERYでキャンセルします。閉じるべきアイドル接続はありません。ダッシュボードでは、クエリーがないとき、「ユーザ別の接続」は何も実行されていないと表示します。

Oracle

Oracleでは両方があります。「アイドル >」はALTER SYSTEM KILL SESSIONでセッションを閉じ、「アクティブ >」はALTER SYSTEM CANCEL SQLで文をキャンセルして、セッションは開いたままにします。一覧を読むCalíope自身の接続は決して含まれず、ALTER SYSTEM権限がなければ「終了」ボタンは両方とも淡色表示になります。

キーワード: アイドル、ビジー、一括、一括終了、SLEEP、しきい値