メンテナンスオペレーション

このページでは、開発に関連するさまざまなデータベース関連のオペレーションについて詳しく説明します。

インデックスの無効化

インデックスを削除する前に、そのインデックスを無効にしたい場合があります:

  • インデックスが大きなテーブル上にあり、リバート時にインデックスを再構築するのに時間がかかる場合。
  • インデックスが完全に見えない方法で使用されているかどうかは不明です。

インデックスを削除する前に無効にするには

  1. プロダクション・インフラストラクチャのイシューを開き、「Production Change」テンプレートを使用します。
  2. イシュー@gl-database または Slack#databaseでデータベースチームに報告してください。
  3. インデックスが使用されていることを確認するステップを追加してください(これは、インデックスを使用することが知られているEXPLAIN コマンドになるでしょう)。
  4. インデックスを無効にするステップを追加します:

    UPDATE pg_index SET indisvalid = false WHERE indexrelid = 'index_issues_on_foo'::regclass;
    
  5. インデックスが無効であることを確認するステップを追加します(これは、インデックスを無効にする前の確認に使用されるものと同じでしょう)。
  6. レプリカ上でインデックスが無効であることを確認します:

    SELECT indisvalid FROM pg_index WHERE indexrelid = 'index_issues_on_foo'::regclass;
    
  7. 無効化をロールバックする手順を追加します:
    1. インデックス無効化のロールバック

      UPDATE pg_index SET indisvalid = true WHERE indexrelid = 'index_issues_on_foo'::regclass;
      
    2. インデックスが再び使用されていることを確認します。

インフラストラクチャーのイシューの例を参照してください。