我们的生产服务器在 CentOS 5.2 版(最终版)上运行 PostgreSQL v8.2.3。
我们已经在我们的生产服务器中设置了 PITR。由于某些原因,设置 PITR 后,我们无法对其进行管理和维护。最终,我们的 WAL 存档驱动器(辅助驱动器)已满(100% 使用),并且要存档的其他 WAL 存档段累积在 pg_xlog/ 目录本身(可在主驱动器中使用)
PITR 设置细节
有2个驱动器:
现在,我们决定停止/禁用 PITR。
我的问题是,在这种情况下,如何停止/禁用 PITR 并安全地清除两个驱动器中的所有 WAL 段?
推荐/建议的方法是什么?非常感谢专家对此的建议/想法/建议。
我的查询(从现有表创建新表)需要很长时间。所以我在我的办公室建立了一个远程数据库——那里有更多的内存。
我可以像往常一样使用 psql 从家里连接到我的数据库。
如何告诉远程服务器从终端执行我的查询而不必等待响应?
(postgresql-9.2 , linux 环境)
编辑:我对其他解决方案持开放态度,没有必要使用 psql
我试图获得两个不同日期之间的天数,周末除外。
我不知道如何达到这个结果。
我有一个包含大约 1000 万行的表和一个日期字段的索引。当我尝试提取索引字段的唯一值时,即使结果集只有 26 个项目,Postgres 也会运行顺序扫描。为什么优化器会选择这个计划?我能做些什么来避免它?
从其他答案我怀疑这与查询和索引一样多。
explain select "labelDate" from pages group by "labelDate";
QUERY PLAN
-----------------------------------------------------------------------
HashAggregate (cost=524616.78..524617.04 rows=26 width=4)
Group Key: "labelDate"
-> Seq Scan on pages (cost=0.00..499082.42 rows=10213742 width=4)
(3 rows)
Run Code Online (Sandbox Code Playgroud)
表结构:
http=# \d pages
Table "public.pages"
Column | Type | Modifiers
-----------------+------------------------+----------------------------------
pageid | integer | not null default nextval('...
createDate | integer | not null
archive | character varying(16) | not null
label | character varying(32) | not null
wptid | character varying(64) | …Run Code Online (Sandbox Code Playgroud) postgresql performance index postgresql-9.4 query-performance
这个问题是针对我正在为学校写的报告。从技术上讲,什么是 Psycopg2?在本教程中,他们将其称为“适配器”和“驱动程序”
Psycopg2 是一个积极开发的符合 DB API 2.0 的 PostgreSQL驱动程序。它是为多线程应用程序设计的,并管理自己的连接池。适配器的其他有趣功能是,如果您使用 PostgreSQL 数组数据类型,Psycopg 会自动将使用该数据类型的结果转换为 Python 列表。
既然它被import编入了 Python,我会认为它是一个库吗?
库、驱动程序和适配器之间有什么区别?
说我有一个约束
ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5);
Run Code Online (Sandbox Code Playgroud)
需要修改,以便邮政编码长度为6.
我是否zipchk先删除约束然后重新创建它?
ALTER TABLE distributors DROP CONSTRAINT zipchk;
ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 6);
Run Code Online (Sandbox Code Playgroud)
或者是否有MODIFY(类似)命令:
ALTER TABLE distributors MODIFY CONSTRAINT zipchk CHECK (char_length(zipcode) = 6);
Run Code Online (Sandbox Code Playgroud) 我看到其他问题的答案是否定的(即索引不会随标准转移pg_restore)。但是,它看起来像在我最近的转储/恢复中一样,我不确定它是否真的转移了。
我将我的数据库从 PostgreSQL 9.3 迁移到 9.4.5 并使用转储/恢复来这样做。
下面是使用的命令:
sudo -u postgres pg_dump -h localhost -p 5432 -d nominatim -F d -f dump/postgres/backup -j 20
sudo -u postgres pg_restore --create --dbname=nominatim --exit-on-error -h localhost -p 5432 -F d -j 7 dump/postgres/backup
Run Code Online (Sandbox Code Playgroud)
转储和恢复成功(没有错误)。
我在进行恢复时将 autovacuum 设置为关闭,因此我analyze从 psql 中运行(无参数)并连接到已恢复的数据库。
我注意到的第一件事是,在 9.3 下,数据目录占用了大约 860GB,而在 9.4 下,它占用了大约 680GB。9.4 是不是更高效?
我注意到的第二件事是我看到了数据库中的索引:
nominatim=# \d country_name
Table "public.country_name"
Column | Type | Modifiers
-------------------------------+---------------------------------
country_code | character varying(2) |
name | hstore |
country_default_language_code …Run Code Online (Sandbox Code Playgroud) 我有这个查询:
EXPLAIN (ANALYZE, BUFFERS)
SELECT * FROM test
WHERE
timestamp_range @> '2015-01-22 23:00:00'::timestamp
AND data_int_array @> '{49, 61}'::integer[];
Run Code Online (Sandbox Code Playgroud)
哪些输出:
Bitmap Heap Scan on test (cost=16.74..20.75 rows=1 width=113) (actual time=0.364..0.367 rows=2 loops=1)
Recheck Cond: ((timestamp_range @> '2015-01-22 23:00:00'::timestamp without time zone) AND (data_int_array @> '{49,61}'::integer[]))
Heap Blocks: exact=1
Buffers: shared hit=8
-> BitmapAnd (cost=16.74..16.74 rows=1 width=0) (actual time=0.351..0.351 rows=0 loops=1)
Buffers: shared hit=7
-> Bitmap Index Scan on ix_test_interval (cost=0.00..4.40 rows=17 width=0) (actual time=0.130..0.130 rows=12 loops=1)
Index Cond: (timestamp_range @> '2015-01-22 …Run Code Online (Sandbox Code Playgroud) 我的要求是在触发器执行时执行像 (ls) 或 C 程序这样的系统命令。有没有办法创建一个触发函数来解决这个问题。
1.我们有一个 Google 的 Protocol Buffers 格式的模式定义,我们用它来为不同的 gRPC 实现(Python、PHP)生成代码
2.我们有一个数据库 (PostreSQL),它从映射 Protocol Buffers 结构的 SQL 文件初始化。
问题: protobuf 规范经常发生变化。这必须反映在数据库中,这是一项繁琐的任务,手动完成时容易出错。
我们最近转移到 Alembic 迁移,以便在我们更新协议缓冲区规范时将持续更新迁移到(实时)数据库结构。但是,我们仍然觉得我们需要维护两个基本相同或至少非常相似的结构:ProtoBuf 和 SQL-Code(通过 Alembic Migrations 或在纯 *.sql 文件中管理)。
我一遍又一遍地搜索,关于其他人如何解决这个问题的信息很少。理想情况下,我们希望建立一个 CI/CD 流程,将 protobuf 规范(例如,消息名称从 更改teaspoon为knife)转换为 SQL 模式定义(例如CREATE TABLE teaspoon (...);)或从中创建 SQL 迁移代码(例如ALTER TABLE teaspoon RENAME TO knife;)。
我知道它实际上比我的简单示例更复杂,但我什至找不到支持半自动和人工监督转换的代码。有什么建议吗?
到目前为止我发现了什么:
postgresql ×10
index ×2
constraint ×1
datetime ×1
explain ×1
performance ×1
psql ×1
python ×1
rdbms ×1
restore ×1
unix ×1