postgresql - RDS 上的 PostgreSQL 顺序扫描速度慢?

标签 postgresql amazon-web-services rds

我有一个运行简单查询的 RDS PostgreSQL 实例,比我预期的要慢得多 - 特别是顺序扫描,例如复制表或对表进行计数。

例如。 create table copied_table as (select * from original_table)select count(*) from some_table

在 30GB 的表上运行 count(*) 大约需要 15 分钟(使用索引,紧接着是真空)。

这是一个 RDS db.r3.large,15 GB 内存,400GB SSD。查看指标日志,我从未见过读取 IOPS 超过 1,400,通常在 500 左右,远低于我的预期基数。

配置: 工作内存:2GB, 共享缓冲区:3GB, 有效缓存大小:8GB wal_buffers:16MB, 检查点_段:16

这是预期的时间吗?我应该看到更高的 IOPS 吗?

最佳答案

除了 9.6 中实现并行顺序扫描的 9.6 之外,您无法像在 Postgres 中那样围绕普通计数查询做很多事情,这在 RDS 中尚不可用。

尽管是事件,但您可以找到一些提示 here .通常,建议尝试通过在投影中创建索引及其列来使 Postgres 使用仅索引扫描

SELECT id FROM table WHERE id > 6 and id <100;
-- or
SELECT count(id) FROM table ...

表应该在该列上有一个索引。

您作为示例公开的查询不会避免顺序扫描。对于CREATE TABLE,如果不关心表中的顺序,可以开几个后端,通过key range过滤,并行导入。此外,在 RDS 上加速此操作的唯一方法是增加 IOP。

关于postgresql - RDS 上的 PostgreSQL 顺序扫描速度慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39761013/

相关文章:

没有后端脚本的 Ajax

sql - 如何使用postgresql按计数排序?

javascript - 如何更新sequelize.query 中的多个列

amazon-web-services - AWS API Gateway 将 JSON 存储到 DynamoDB

ruby-on-rails - 连接到 S3 时获取 "SSL_connect returned=1 errno=0 state=error: certificate verify failed"

mysql - 为 Mysql 的枚举列添加一个值 - 它会涉及停机时间吗?

mysql - 插入俄语字符变成问号(?????????????)

django - 连接到 Django 后端的 AWS Postgres 实例

java - AWS s3响应 header

mysql - 使用 Wordpress 从 docker 容器连接到 RDS Mysql