[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 メーリングリストの案内