[pgsql-jp: 42061] Re: BRIN indexについて

Kohei KaiGai kaigai @ heterodb.com
2020年 9月 18日 (金) 08:52:15 UTC


海外です

2020年9月18日(金) 17:29 NISHIMURA Yutaka <iscream @ nugae.org>:
>
> 西村です。
>
> > 海外です
> >
> > 横から失礼します(シュッ!
> >
> > CLUSTERコマンドは内部的に CREATE TABLE AS SELECT .... ORDER BY index_key と
> > 同じ事をやっています。テーブルに紐づいたファイルの物理的にもう一つ作成し、それを
> > スワップする事で、「物理的に望ましい順序」でデータが配置されたテーブルを作っています。
> > ですので、わざわざ b-tree を一度作成するくらいなら、CREATE TABLE AS を実行する方が
> > ひと手間少ないかと思います。
>
> ありがとうございます
>
> なるほど。
> CLUSTERってそういう感じになっていたんですね
> と言う事は、CLUSTERでインデックス指定出来るようになってますけど
> 処理の早い遅いはあれどインデックス以外の物指定出来ても問題ないわけですね
> BRINとか任意のカラム指定出来れば良いのに…
>
要は、一行一行を読み出す時に、インデックスの順に従うため、
B-treeのように大小関係を定義できるインデックスでないとダメという事です。
任意のクエリーで作るのであれば、排他ロックをした上で CREATE TABLE AS を
実行するのと変わりません。

> あれ、そうすると、Ver.9.0あたりでVACUUM FULLがCLUSTER相当の処理に変更っ
> てありましたけど
> CLUSTER設定されたテーブルにVACUUM FULLを実行したときって ORDER BYはどう
> なるのかしら…CLUSTER相当になるのかな
>
CLUSTERで物理順がインデックスの通りに並ぶのは、あくまでもCLUSTERを実行した
直後ですので、その後、ゴチャゴチャデータが入ってくれば、ゴチャゴチャしてきます。
(なので、CLUSTER設定された、という状態は存在しません)

CLUSTER と VACUUM FULL の違いは、元テーブルを読み出す時にインデックスの順に
従うか、単に先頭から読み出すか、です。
「単に先頭から読み出す」だとどのテーブルに対しても実行でき、新しく作成された
テーブルにはゴミデータが存在しない(VACUUM FULL実行直後)が、特に物理的な
順序は考慮しない形となります。


> > 2020年9月18日(金) 14:31 NISHIMURA Yutaka <iscream @ nugae.org>:
> > >
> > > 西村です。
> > >
> > > > 佐藤です。
> > > >
> > > > > 西村です。
> > > > >
> > > > > ちょっとばかりデータサイズが大きいのでBRIN indexを使おうかと思っているのですが
> > > > > BRINはそのブロックが保持する最小値と最大値を記載したindexと言う認識です
> > > > > ですので、実データが物理的にソートされて格納されている事が望ましいと言う事なので
> > > > > メンテナンス時点でCLUSTERでもしようかと思ったのですが
> > > > > BRIN indexではCLUESTERに指定出来ない様なのでどうしたものかと
> > > > > 何か良い方法ありませんか?
> > > > >
> > > > > CREATE TABLE ASを使ってTABLEをリネームするしか無いんでしょうか?
> > > >
> > > > ほかに B-tree インデックスの作成後に CLUSTER、その後、BRIN インデック
> > > > スの作成くらいしかなさそうですね。
> > >
> > > ありがとうございます
> > > やはり、一時的にb-treeインデックスをつけてCLUSTERしてインデックス落とすしか無いですか
> > > これならb-treeそのまま使った方がって感じもしますね
> > >
> > > ありがとうございました
> > >
> > > CLUSTERもBRINでこそ役に立つので対応してくれればいいのに…
> > >
> > > --
> > > NISHIMURA,Yutaka./西村ゆたか <iscream @ nugae.org>
> > >
> > >
> >
> >
> > --
> > HeteroDB, Inc / The PG-Strom Project
> > KaiGai Kohei <kaigai @ heterodb.com>
>
> --
> NISHIMURA,Yutaka./西村ゆたか <iscream @ nugae.org>
>
>


-- 
HeteroDB, Inc / The PG-Strom Project
KaiGai Kohei <kaigai @ heterodb.com>


pgsql-jp メーリングリストの案内