[pgsql-jp: 36041] Re: PostgreSQLのシーケンス番号処理について
T.Nishimura
nisimura @ weloveya.com
2005年 9月 22日 (木) 22:33:08 JST
早川様
中村様
ご回答ありがとうございます。
西村です。
psqlを実行してて、何か自分で解決出来た気がしてきました。
まず、psqlの実行結果ですが。
>
> SELECT NEXTVAL('table_no_seq') FROM table;
>
honban=# SELECT NEXTVAL('table_no_seq') FROM table;
nextval
----------
5528
5529
5530
5531
5532
5533
(6 rows)
>
> SELECT no FROM table;
>
> 無駄にシーケンスをカウントアップする事は重大な問題だと思います
> が...。
>
確かに無駄にシーケンスが増えるのは重大な問題だと思います。
> 私の予想も、早川様と同じくMAXVALUE絡みだと思います。
> 西村様は、他のテーブルでは発生していないのでMAXVALUEでは
> 無いと
> お考えのようですが、SQLを実行する回数によっては、5
> 万件のテーブルより
> 数百件のテーブルに方が先にMAXVALUEに到達してしまいます。
>
> この辺の疑問をクリヤにする為にも以下のSQLの結果を教えて
> ください。
>
> select * from table_no_seq;
honban=# SELECT * FROM table_no_seq;
sequence_name | last_value | increment_by |
max_value | min_value | cache_value | log_cnt |
is_cycled | is_called
table_no_seq | 5533| 1 |
9223372036854775807 | 1 | 1
| 27 | f | t
(1 row)
> select count( * ) , max( no ) from table;
>
honban=# SELECT count(*), max(no) FROM table;
count | max
--------+--------
7 | 5525
(1 row)
上記結果が返ってきました。
それで、自己解決できそうなのは、
test=# SELECT NEXTVAL('table_no_seq') FROM table;
nextval
----------
(0 rows)
と、テストDBにもSQLを投げた時に見つけたのですが、レ
コード件数0件だと、0rowsで、ワーニングが出てた?のかも
と・・・・
この、tableは、無尽造に件数が増えるので、クーロンで
DELETE文を流していたので、件数が0件の時NEXTVAL(FROM付き)
を流すと、0 rowsとして、ワーニングが出てた様な気がします。
(間違ってます?皆様)
色々とありがとうございました。
また、間違った理解をしている様でしたら、ご指摘お願いします。
pgsql-jp メーリングリストの案内