gpt4 book ai didi

postgresql - 需要关于如何在 PostgresQL 中处理大表的建议

转载 作者:行者123 更新时间:2023-11-29 13:11:26 25 4
gpt4 key购买 nike

我有一个大小为 32Gb 的表,在 Postgres 中索引大小约为 38Gb。

我有一列 x 没有索引。表大小以每周 1GB 的速度增长。x 列上运行了很多查询。

此表上的列 x 的每个查询都消耗了我 17% 的 CPU,大约占用了我的时间。 5~6秒返回数据库负载大的数据。

处理此问题的最佳方法是什么?行业标准是什么?

我为 x 列建立了索引,索引的大小增加了 2GB — 查询时间减少到大约 100 毫秒。

我正在研究 DynamoDB 以复制表的数据,但我不确定这是否是正确的方法,因此我提出了这个问题。

我希望数据访问速度更快,同时请记住这会导致功能出现瓶颈。

此处请求的是运行的查询:

database_backup1=> EXPLAIN ANALYZE SELECT * FROM "table_name" WHERE "table_name"."x" IN ('ID001', 'ID002', 'ID003', 'ID004', 'ID005') LIMIT 1;

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------
Limit (cost=0.00..56442.83 rows=100 width=1992) (actual time=0.010..155288.649 rows=7 loops=1)
-> Seq Scan on "table_name" (cost=0.00..691424.62 rows=1225 width=1992) (actual time=0.009..155288.643 rows=7 loops=1)
Filter: ((x)::text = ANY ('{ID001,ID002,ID003,ID004,ID005}'::text[]))
Rows Removed by Filter: 9050574
Planning time: 0.196 ms
Execution time: 155288.691 ms
(6 rows)

最佳答案

执行计划表明您的索引显然是要走的路。

如果经常运行查询,这样的索引带来的存储空间和数据修改性能的代价是值得的。

当然我不能权威地说,但我不相信其他数据库系统有 Elixir 可以让一切变得更快。如果您的数据适合关系模型,PostgreSQL 将是一个不错的选择。

关于postgresql - 需要关于如何在 PostgresQL 中处理大表的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54103637/

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