我在 postgres-8.4 中有一个简单的博客数据库,它有两个表,articles和comments. 我有一个查询(由 Django 生成),想要获取类型为“NEWS”的最新文章并查找该文章的评论数量。它通过以下查询做到这一点:
SELECT "articles"."id", "articles"."datestamp", "articles"."title", "articles"."shorttitle", "articles"."description", "articles"."markdown", "articles"."body", "articles"."idxfti", "articles"."published", "articles"."type", COUNT("comments"."id") AS "comment__count"
FROM "articles"
LEFT OUTER JOIN "comments" ON ("articles"."id" = "comments"."article_id")
WHERE ("articles"."type"='NEWS')
GROUP BY "articles"."id", "articles"."datestamp", "articles"."title", "articles"."shorttitle", "articles"."description", "articles"."markdown", "articles"."body", "articles"."idxfti", "articles"."published", "articles"."type"
ORDER BY "articles"."datestamp" DESC
LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
这些表都不是特别大,但该查询需要 46 毫秒。执行计划是:
Limit (cost=119.54..119.58 rows=1 width=1150) (actual time=46.479..46.481 rows=1 loops=1)
-> GroupAggregate (cost=119.54..138.88 rows=455 width=1150) (actual time=46.475..46.475 rows=1 loops=1)
-> Sort (cost=119.54..120.68 rows=455 width=1150) (actual …Run Code Online (Sandbox Code Playgroud) 我正在尝试在一台机器上设置两台 PostgreSQL 服务器并执行流式复制。我已经成功过一次,但是当我按照完全相同的步骤再次尝试时它不起作用..这些是步骤:我有 $PGDATA = home/postgresql/9.1/data 和 $STANDBY = home/postgresql/9.1 /数据2
initdb -D $PGDATA initdb -D $STANDBY
host replication repuser 127.0.0.1/0 md5在 postgresql.conf 中的 master 节点中设置:
max_wal_senders = 1 归档模式 = 开 存档命令 = 'cp %p ~/postgresql/backup/archivedir/%f' wal_level = 存档 wal_keep_segments = 32
启动主节点并做基础备份:
psql -d dellstore2 -c "SELECT pg_start_backup('backup for replication', true)"
rsync -av ${PGDATA}/ $STANDBY --exclude postmaster.pid
psql -d dellstore2 -c "选择 pg_stop_backup()"
pg_stop_backup 表示一切正常,所有 WAL 文件都已存档在备用 (data2) 节点中,我使用以下命令创建 …
我的 Rails 数据库由 Postgres 数据库支持。您可能知道,Rails 中的每个表都分配了一个主键,该主键是 Integer 类型并已编入索引。
我的列表视图以相反的时间顺序显示记录。所以我只是按照主键的相反顺序对我的结果集进行排序。
我的问题是:查询会使用主键索引吗?如果是,那么那么有效吗?我如何验证?
在此先感谢您的时间。
巴拉特
在将应用程序移植到 PostgreSQL (9.1) 时,我发现一个奇怪的 SQL 不兼容性与round()函数有关,特别是采用指示舍入精度的第二个参数的版本。
在 MySQL 中, round(some_float_column, 2)按预期工作,将some_float_column四舍五入的值返回到小数点后两位。在 Postgres 中,它错误ERROR: function round(double precision, integer) does not exist并建议HINT: No function matches the given name and argument types. You might need to add explicit type casts..
如文档所示...
http://www.postgresql.org/docs/9.1/static/functions-math.html
...Postgres 有两个轮函数,round(value)它采用双精度或数字,并round(value, precision)采用数字仅和一个整数。
所以,我不明白为什么 round 的两个参数形式不以 double 开头,但无论如何。在搜索中,我发现了这个问题的两种解决方案。一种是简单地创建我自己的版本round(value, precision),采用 (double, int) 并使用显式转换包装现有的 (numeric, int) 版本。这当然有效,但我不喜欢它(我的背景是 Oracle,它甚至没有真正的浮点类型)。在我看来,float/double 应该隐式转换为数字。事实证明,这些类型的 ASSIGNMENT 类型转换是预先定义的。但是 ASSIGNMENT 不适用于函数调用,正如我们在这里看到的,它需要是 IMPLICIT。与麻烦 …
是否可以使用archive_command发送到多台机器?它是否像用 a 分隔一样简单,&&因为它本质上只是一个命令行?
command1 && command2
Run Code Online (Sandbox Code Playgroud)
我认为如果一个命令失败,这可能会产生不良影响,例如,如果command1失败则command2不会运行;如果command2失败,它会在整个过程中返回非零值,Postgres 会重新尝试发送 WAL,这意味着它会重新运行command1。
我希望有一个更正式的解决方案来解决这个问题。我的目标是在数据中心内部备份一份,在数据中心外部备份一份。
我们现在在处理高峰时段服务器的密集流量时遇到问题;请参阅有关调整 DB 的相关问题。目前,我们正在使用较小的云服务作为服务器托管。目前,我们正在研究将我们的服务器迁移到 AWS 的可能性。我们遇到的问题主要与我们的数据库服务器有关,因此我们希望拥有比我们现在使用的要好得多的 AWS 实例。
数据库服务器所在云服务器的统计信息如下:
在选择用于 PostgreSQL 数据库服务器的亚马逊实例时,您有什么特别需要考虑的吗?
我有一张在 Postgres 9.1 下增长的表。这是一个包含大量插入和删除操作的高吞吐量表,但就数量或记录而言,它通常应保持在 1-2k 之间。自动吸尘已启用,我们已运行手动吸尘。我们已经检查过锁,但似乎没有。运行“真空详细”;说虽然有数百万条死记录,但“发现 0 个可移动”。
我可能没有想到什么?
使用一个比另一个有什么优势吗?我只是在寻找从我的进程中隐藏主服务器和从服务器的实际 IP 地址的选项,如果主服务器出现故障,则不必重新启动它们。
如果 Nagios 检测到一个失败的 master,我仍然想参与到故障转移中来,包括告诉 HAproxy / PgBouncer 新的 master。
我正在使用 Postgresql 9.0。我在表中有以下字段:id, name.
id name
1 John
1 Mary
1 Mary
1 Mary
1 John
1 Mary
3 Paul
3 Paul
3 George
. .
. .
Run Code Online (Sandbox Code Playgroud)
对于每个id,我想选择出现次数最多的名称。我怎样才能做到这一点?
我尝试使用以下查询,但它不起作用:
select id, max(name)
from table
group by id;
Run Code Online (Sandbox Code Playgroud) 是否可以PostgreSQL仅使用一小部分数据(每个表中的 1000 行)来备份数据库?
我可以使用pg_dump. 在某些情况下,我需要具有最少数据的数据库。
pg_dump --host=localhost --port=5432 --username=postgres --password
--column-inserts --schema=test testdb > test_backup.sql
Run Code Online (Sandbox Code Playgroud)
如何修改上述命令以备份 1000 条数据?
postgresql ×10
index ×2
aws ×1
cast ×1
clustering ×1
datatypes ×1
performance ×1
primary-key ×1
replication ×1
sorting ×1