小编jap*_*968的帖子

多列索引和性能

我有一个带有多列索引的表,我怀疑索引的正确排序以获得最大查询性能。

场景:

  • PostgreSQL 8.4,大约有一百万行的表

  • c1列中的值可以有大约100 个不同的值。我们可以假设这些值是均匀分布的,因此每个可能的值大约有 10000 行。

  • c2可以有1000 个不同的值。对于每个可能的值,我们有 1000 行。

搜索数据时,条件始终包含这两列的值,因此该表具有组合 c1 和 c2 的多列索引。如果您的查询仅使用一列进行过滤,我已经阅读了正确排序多列索引中的列的重要性。在我们的场景中,情况并非如此。

我的问题是这个:

鉴于其中一个过滤器选择的数据集要小得多,如果第一个索引是最具选择性的索引(允许更小的数据集),我是否可以提高性能?在我看到参考文章中的图形之前,我从未考虑过这个问题:

在此处输入图片说明

图片取自有关多列索引的参考文章。

查询使用两列中的值进行过滤。我没有仅使用一列进行过滤的查询。他们都是:WHERE c1=@ParameterA AND c2=@ParameterB。还有这样的条件:WHERE c1 = "abc" AND c2 LIKE "ab%"

postgresql index index-tuning

37
推荐指数
2
解决办法
4万
查看次数

PostgreSQL:shared_buffers 的推荐大小

我对 PostgreSQL 比较陌生。一个月前,我开始将一些 MySQL 数据库迁移到 PostgreSQL。

我正在寻找有关配置文件的正确内存值的帮助。

目前,我有一个适度的专用服务器(2GB 的 RAM)在 Linux 下运行 Apache、MySQL 和 PostgreSQL。MySQL 主数据库的大小大约是 PostgreSQL 主数据库的 3 倍,数据流量也是如此。

我仍然有 PostgreSQL 的默认配置文件,参数为 shared_buffers = 32MB. 我假设我应该增加这个值,但我不想惩罚其他数据库。我读过一些关于将 25% 的物理可用内存专用于 PostgreSQL 的内容,但我不确定这一点。

新数据库包含七个表,最大的一个大约有 3 MM 行。该机器目前的流量较低(每天服务约 10000 ~ 20000 个选择),但这些值预计会增长。

我正在考虑将 shared_buffers 增加到 256MB,但我想听听对这个 RDBMS 有更多经验的用户的一些意见。

postgresql performance configuration

10
推荐指数
1
解决办法
2678
查看次数