服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

PostgreSQL 8.4.4中的大连接查询性能不佳,尽pipe有足够的内存来完全caching

题 我怎样才能使这个post中描述的查询更快,尤其是通过使用可用的RAM来制作PostgreSQL? – 请注意,我试图适当地configurationeffective_cache_size和shared_buffers。 见下文。 背景 我必须定期join一个约2.6亿行表(coreg_master),并附带新的数据。我已经对表进行分区,以允许每个分区适合内存。 我当然也有适当的索引。 但是,将分区表分别与其他(小得多)表连接时,会在磁盘上执行完全随机的IO操作。 这是由于在大型表上嵌套循环索引扫描,由于我们没有很好的磁盘设置,所以速度很慢。 我希望它使用所有可用的内存来caching大的分区表,我知道应该由Linux内核/文件系统本身来完成。 但它仍然不会将表加载到RAM中,尽pipe它适合。 我想这是因为访问模式是不连续的,因此不会触发caching? 我不知道。 查询计划和configuration参数如下。 表结构 这是我的大桌子coreg_master的分区之一。 分区表被命名为coreg_a,coreg_b等。 \d coreg_a Table "public.coreg_a" Column | Type | Modifiers ————-+——————-+———————————————————– id | integer | not null default nextval('coreg_master_id_seq'::regclass) first_name | character varying | last_name | character varying | phone | character varying | city | character varying […]