[pgsql-jp: 36406] Re: pgbench開始前のvacuum
Satoshi Nagayasu
nagayasus @ nttdata.co.jp
2005年 11月 16日 (水) 16:03:12 JST
永安です。
concurrent vacuumしていればパフォーマンスは安定するんですよ、みたいな
話に持っていこうと思ってたら、どんどんpgbenchスコアが劣化していくんで
「・・・。」という感じです。
余談ですが、
> 最小限の vacuum などを行います.すなわち,history の削除,
> と history, branches, history の vacuum を行います.
historyをvacuumしすぎです。2回もvacuumする必要はありません。
ていうか、コード中ではtellersをvacuumしてます。当たり前ですが。typoですな。
J.Kuwamura wrote:
> くわむらです
>
> README.pgbench_jis によると、
>
> --
> -v このオプションを指定すると,ベンチマーク開始前に vacuum と
> history のクリアを行ないます.-v と -n を省略すると,
> 最小限の vacuum などを行います.すなわち,history の削除,
> と history, branches, history の vacuum を行います.
> これは,vacuum の時間を最小限にしながら,パフォーマンスに
> 影響するゴミ掃除を効果的に行います.通常は -v と -n を
> 省略することをおすすめします.
> --
>
> となっています。具体的な影響というのがなんだかは、よくわかりません。
> # 答になってない。mOm
>
>
> On Wed, 16 Nov 2005 15:16:07 +0900
> Satoshi Nagayasu <nagayasus @ nttdata.co.jp> wrote:
>
>> 永安です。
>>
>> pgbenchを繰り返してかけていたのですが、
>> pgbenchが始まる前のvacuum処理でacocuntsテーブルだけ
>> vacuumされていないことに気付きました(オプション無しの時)。
>>
>> -vオプションを指定すると、accountsもvacuum analyze fullされる
>> ようですが、オプションを指定しないとvacuumされません(concurrentも)。
>>
>> -------------------------------------------------------
>> res = PQexec(con, "vacuum history");
>> if (PQresultStatus(res) != PGRES_COMMAND_OK)
>> {
>> fprintf(stderr, "%s", PQerrorMessage(con));
>> exit(1);
>> }
>> PQclear(res);
>>
>> fprintf(stderr, "end.\n");
>>
>> if (is_full_vacuum)
>> {
>> fprintf(stderr, "starting full vacuum...");
>> res = PQexec(con, "vacuum analyze accounts");
>> if (PQresultStatus(res) != PGRES_COMMAND_OK)
>> {
>> fprintf(stderr, "%s", PQerrorMessage(con));
>> exit(1);
>> }
>> PQclear(res);
>> fprintf(stderr, "end.\n");
>> }
>> }
>> PQfinish(con);
>> -------------------------------------------------------
>>
>> pgbenchを繰り返しているとaccountsだけがどんどん肥大していくのですが、
>> なぜaccountsだけconcurrent vacuumの対象外になっているのか、
>> 理由をご存知の方はおられますでしょうか?
>>
>> どなたかご存知でしたら教えていただけると助かります。
>>
>> よろしくお願いします。
>> --
>> NAGAYASU Satoshi <nagayasus @ nttdata.co.jp>
>>
>
>
--
NAGAYASU Satoshi <nagayasus @ nttdata.co.jp>
pgsql-jp メーリングリストの案内