show effective_cache_size;我们在 CentOS 6 上运行 PostgreSQL 9.2,当我运行命令与查询时,我发现设置报告有所不同select * from pg_settings where name = 'effective_cache_size';。据我所知,这些命令应该是相同的。例如
显示有效缓存大小; 有效缓存大小 ---------------------- 2816MB (1 行)
与
选择名称,从 pg_settings 设置,其中 name = ' effective_cache_size'; 名称 | 有效缓存大小 设置 | 360448
我正在尝试找出 PostgreSQL 使用的值。如果我以超级用户身份运行它,我会得到相同的结果。我该相信哪一个?
我有一个 PostgreSQL 示例表,其中最多允许有一行不是“c”类型的行。
我将不胜感激任何帮助创建一个强制执行这一点的约束。
CREATE TABLE example
(
example_id serial PRIMARY KEY,
example_state CHAR(1) NOT NULL
);
ALTER TABLE example ADD CONSTRAINT
example_constraint
CHECK (example_state = 'a' OR example_state = 'b' OR example_state = 'c');
Run Code Online (Sandbox Code Playgroud) postgresql database-design constraint exclusion-constraint postgresql-9.3
如何使用字符串和DECLARE变量的组合动态引用序列名称(如下所示)?下面的代码是否正确或者是否有其他方法可以做到这一点?
DO我的目标是出于性能原因在/块中执行此操作BEGIN,而且它将通过做一些有用的事情来帮助我理解 plpgsql,因此除非确实必须,否则我不会将其混合到 PHP 中。
DO $$
DECLARE PKEY VARCHAR;
BEGIN
SELECT pg_attribute.attname INTO PKEY
FROM pg_index, pg_class, pg_attribute
WHERE pg_class.oid = 'parts1'::regclass
AND indrelid = pg_class.oid
AND pg_attribute.attrelid = pg_class.oid
AND pg_attribute.attnum = any(pg_index.indkey)
AND indisprimary;
--SELECT setval('parts1_id_seq', (SELECT MAX(pkey) + 1 FROM parts));
SELECT setval('parts1_' || PKEY || '_seq', (SELECT MAX(pkey) + 1 FROM parts));
END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud) 我正在使用 PostgreSQL 并且有两个表:
Table_A
colA | colB | colC | colD | colE | colF | colG | colH | colI | colJ
Table_B
colA | colB | colC | columnD | colE | columnF | colG | colH | colI | colJ
Run Code Online (Sandbox Code Playgroud)
我正在尝试将多行插入table_B到 中table_A。我的问题是Table_A有一个基于colA, colB, colC, colD, and colE. Table_B没有这个限制,这意味着简单的方法insert不起作用:
INSERT INTO Table_A (colA, colB, colC, colD, colE, colF, colG, colH, colI, colJ)
SELECT colA, colB, colC, columnD, …Run Code Online (Sandbox Code Playgroud) 我有一个 postgres 9.1 主服务器和 2 个从服务器,设置了带有 WAL 存档的流式复制。
现在,我正在尝试为 PITR 设置至少 1 周的窗口期。这是为了弥补任何管理错误(例如错误地删除重要的表)。这是我对 PITR 的理解
使用上面的 2 个方法,我们可以将数据库重建到中间的任何点。
涉及的数据库很大,大约1TB,每周增长30GB
我想了解在运行实例上实现快速基础备份创建和低性能开销的最佳方法是什么。我可以想到以下替代方案,但不确定
如果有其他更好的选择
是每周进行一次基本备份并累积 WAL 直到下一次基本备份还是只进行一次基本备份(比如现在)并每周只备份 WAL 更好。
如果我们每周都进行基础备份,那么使用 pg_basebackup 或 pg_start_backup + rsync + pg_stop_backup 更好。如果我由于 rsync 而每周使用相同的目标磁盘/卷/文件夹,第二个选项会明显更快吗?
是否最好对主服务器运行基本备份,或者是否可以在暂时停止其中一个从服务器并在快照后恢复复制后拍摄 postgres 集群的磁盘快照。如果我想要执行 PITR,此快照是否可用于在恢复模式下设置实例,或者是否会出现任何数据一致性或时间线问题?
感谢您的任何见解。
关于损坏的 wiki建议立即通过停止 postmaster 并使用 来对数据库进行文件级备份tar,但我的印象是使用pg_basebackup是更好的选择。有什么理由我不应该使用吗pg_basebackup?
我在 Postgres 数据库中有一个表TEXT,其中有一列名为data,我用它来存储 IP 地址和域名。我想知道是否可以选择表中data列为有效 IP 地址的所有行。
WHERE可以使用基于类型转换的子句来完成此操作吗?
假设我有一个表,其中有一个名为 的表上的bytea列,我该如何:datat
data。我正在使用 Postgresql 9.5。
我的查询是:
SELECT Acol1, Acol2, Bcol1, Bcol2, Ccol1, Ccol2
FROM tableA LEFT JOIN
(tableB FULL JOIN tableC ON (Bcol1 = Ccol1))
ON (Acol1 = Bcol1)
Run Code Online (Sandbox Code Playgroud)
EXPLAIN ANALYZE给我:
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------
Hash Right Join (cost=99.65..180.45 rows=1770 width=24) (actual time=0.043..0.103 rows=3 loops=1)
Hash Cond: (tableb.bcol1 = tablea.acol1)
-> Hash Left Join (cost=49.83..104.08 rows=1770 width=16) (actual time=0.011..0.062 rows=3 loops=1)
Hash Cond: (tableb.bcol1 = tablec.ccol1)
-> Seq Scan on tableb (cost=0.00..27.70 rows=1770 width=8) (actual time=0.001..0.002 rows=3 loops=1)
-> Hash (cost=27.70..27.70 rows=1770 width=8) (actual time=0.004..0.004 …Run Code Online (Sandbox Code Playgroud) 在 PostgreSQL 中,我可以使用SELECT INTOSELECT将结果保存到另一个表:
SELECT id INTO new_record_ids FROM new_table
EXCEPT
SELECT id FROM old_table
ORDER BY id;
Run Code Online (Sandbox Code Playgroud)
然而,这不适用于连接:
-- doesn't work:
SELECT * INTO new_records FROM new_table
JOIN new_record_ids ON new_record_ids.id = new_table.id
ORDER BY new_table.id;
Run Code Online (Sandbox Code Playgroud)
连接本身是正确的:
-- works:
SELECT * FROM new_table
JOIN new_record_ids ON new_record_ids.id = new_table.id
ORDER BY new_table.id;
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何将联合表保存到另一个表?
postgresql ×10
join ×2
cast ×1
constraint ×1
corruption ×1
dynamic-sql ×1
explain ×1
index ×1
performance ×1
plpgsql ×1
replication ×1
where ×1