gpt4 book ai didi

postgresql - 如何从 Postgresql 目录表中检索 Postgresql 序列缓存值?

转载 作者:行者123 更新时间:2023-11-29 12:33:43 27 4
gpt4 key购买 nike

我已经使用下面的查询从 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 | slast_value    | 1start_value   | 1increment_by  | 1max_value     | 9223372036854775807min_value     | 1cache_value   | 10log_cnt       | 0is_cycled     | fis_called     | f

关于postgresql - 如何从 Postgresql 目录表中检索 Postgresql 序列缓存值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18085197/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com