我已经使用下面的查询从 Postgresql 目录表中获取 Sequence 对象的完整信息
select s.sequence_name, s.start_value, s.minimum_value, s.maximum_value, s.increment, s.cycle_option
from information_schema.sequences s
where s.sequence_schema='schema1'
我无法获取的另一个属性值是“缓存”值。
我正在使用 Postgresql 9.2
这是带有缓存的序列的 DDL 语法,
ALTER SEQUENCE [ IF EXISTS ] name [ INCREMENT [ BY ] increment ]
[ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
[ START [ WITH ] start ]
[ RESTART [ [ WITH ] restart ] ]
[ CACHE cache ] [ [ NO ] CYCLE ]
[ OWNED BY { table_name.column_name | NONE } ]
是否有任何 Postgres 函数可以获取此序列缓存值?
谢谢,
拉维
最佳答案
使用 PostgreSQL 10 或更新版本,可以从系统 View 中获取缓存大小 pg_sequences
或系统表 pg_sequence
:
SELECT cache_size FROM pg_catalog.pg_sequences
WHERE schemaname='public' and sequencename='s';
或者替代地
SELECT seqcache FROM pg_catalog.pg_sequence
WHERE seqrelid = 'public.s'::regclass;
在第二个查询中省略模式限定(public
或更一般的模式名称)以自动使用 search_path
而不是固定模式。
对于早于 v10 的版本,您可以像查询表格一样查询序列本身。
例如:
CREATE SEQUENCE s CACHE 10;
SELECT cache_value FROM s;
结果:
cache_value
-------------
10
或者
\x
SELECT * FROM s;
结果:
-[ RECORD 1 ]-+-------------------- sequence_name | s last_value | 1 start_value | 1 increment_by | 1 max_value | 9223372036854775807 min_value | 1 cache_value | 10 log_cnt | 0 is_cycled | f is_called | f
关于postgresql - 如何从 Postgresql 目录表中检索 Postgresql 序列缓存值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18085197/