検索時には大変お世話になっているインデックス。 使われなくても文句も言わずに更新され続けるインデックス。 ずっと放置して運用しているといつの間にか肥大化しているインデックス。 今回は、そんなインデックスを再構築する際に気をつけることをまとめてみました。 まずは、インデックスを作成、または再作成するやり方について簡単に。 CREATE INDEX 普通にインデックスを作成。 他のトランザクションはテーブルを読み取ることはできるが、対象テーブル内の行を挿入、更新、削除しようとすると、 インデックス作成が完了するまでブロックされる。 CREATE INDEX CONCURRENTLY 挿入、更新、削除をブロックしないインデックスの作成方法。 テーブルを2回スキャンする必要があり、潜在的にそのインデックスを使用する可能性がある、実行中のすべての トランザクションが終わるまで待機する必要がある。 通
以下の5ステップで,適切なインデックスを作成し,SQLを高速化できる。 (1) パフォーマンスを改善すべきSQL(もしくはカラム)を特定 (1−1) ログを閲覧し,実行秒数の大きいものを抽出する。 (1−2) 統計テーブルを閲覧し,よく利用されるテーブルを特定する。 (2) 該当SQLのプランやコストを確認 (3) 該当カラムに対してインデックスを作成 (4) インデックスが作成されたことを確認 (5) SQLのプランやコストが改善されたことを確認 補足 ※↑ もくじジェネレータ で自動生成 DBはPostgreSQLを想定。 (1)パフォーマンスを改善すべきSQL(もしくはカラム)を特定 まず,インデックスを作成すべきカラムを見極める。 その方法は2つある。 (1−1)ログを閲覧し,実行秒数の大きいものを抽出する。 SQLの実行ログを閲覧する。 たとえば,Ruby on Railsなら,
NTT オープンソースソフトウェアセンタ 鈴木 幸市 4. 物理バックアップ 前記事では pg_dump や pg_dumpall を用いた論理バックアップを紹介しました。本章では物理バックアップについて解説していきます。 pg_dump などを利用した論理バックアップでは、特定のデータベースやテーブル、あるいはスキーマなどを個別にバックアップできました。 一方、物理バックアップはデータベース・クラスタ全体の粒度でのみバックアップできます。 物理バックアップには、オフライン・バックアップとオンライン・バックアップがあります。 本章ではこれらについて解説します。 5. オフライン・バックアップとリストア オフライン・バックアップは、PostgreSQLの運転を停止させ、データベースの内容をまるごとそのままバックアップするものです。 操作は単純で、バックアップは tar や rsync などの
おもむろに次のようなテーブルを作ってみる。 CREATE TABLE hoge( col1 INT NOT NULL , col2 INT NOT NULL , CONSTRAINT pkey_hoge PRIMARY KEY(col1, col2) ) ; CREATE TABLE foo( col1 INT NOT NULL , col2 INT NOT NULL , col3 INT NOT NULL , col4 INT NOT NULL , CONSTRAINT pkey_foo PRIMARY KEY(col1, col4) , CONSTRAINT uniq1 UNIQUE(col1, col2) , CONSTRAINT uniq2 UNIQUE(col4, col2, col3) , CONSTRAINT ref1 FOREIGN KEY(col1, col4) REFE
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く