Greenplum(二) 常用参数解释和推荐配置

2023-03-17 00:00:00 数据 参数 设置 磁盘 信息

1.shared_buffers
数据距离CPU越近效率越高,而离CPU由近到远的主要设备有寄存器、CPU cache、RAM、Disk Drives等。CPU的寄存器和cache是没办法直接优化的,为了避免磁盘访问,只能尽可能将更多有用信息存放在RAM中。Greenplum数据库的RAM主要用于存放如下信息。
执行程序
程序数据和堆栈
postgreSQL shared buffer cache
kernel disk buffer cache
kernel
因此大化地保持数据库信息在内存中而不影响其他区域才是-佳的调优方式,但这常常不是一件容易的事情。
PostgreSQL并非直接在磁盘上进行数据修改,而是将数据读入shared buffercache,进而PostgreSQL后台进程修改cache中的数据块,终再写回磁盘。后台进程如果在cache中找到相关数据,则直接进行操作,如果没找到,则需要从kernel disk buffer cache 或者磁盘中读入。PostgreSQL 默认的shared buffer较小,因为内存不仅仅用于shared buffer cache。刚开始可以设置一个较小的值,比如总内存的15%,然后逐渐增加,过程中监控性能提升和swap的情况。

2.effective_cache_size
设置优化器假设磁盘高速缓存的大小用于查询语句的执行计划判断,主要用于判断使用索引的成本,此参数越大越有机会选择索引扫描,越小越倾向于选择顺序扫描,此参数只会影响执行计划的选择。

3.work_mem
当PostgreSQL对大表进行排序时,数据库会按照此参数指定大小进行分片排序,将中间结果存放在临时文件中,
这些中间结果的临时文件终会再次合并排序,所以增加此参数可以减少临时文件个数进而提升排序效率。当然如果设置过大,会导致swap的发生,所以设置此参数时仍然需要谨慎。同样刚开始仍可以设置为总内存的5%。

4.temp_buffers
temp_buffers即临时缓冲区,用于数据库访问临时表数据,Greenplum默认值为1M。可以在单独的session中对该参数进行设置,在访问比较大的临时表时,对性能提升有很大帮助。

5.client_encoding
设置客户端字符集,默认和数据库encoding相同。

6.client_min_messages
控制发送至客户端的信息级别,每个级别包含更低级别的消息,越是低的消息级别发送至客户端的信息越少。例如,warning级包括warning、error、fatal、panic等级别的信息,而panic则只包括panic级别的信息。此参数主要用于错误调试。

7.cpu_index_tuple_cost
设置执行计划评估每一个索引行扫描的CPU成本。同类参数还包括cpu_operator_cost、cpu_tuple_cost、cursor_tuple_fraction。

8.gp_vmem_protect_limit
设置服务器中postgres进程可用的总内存,建议设置为(X*physical_memory)/primary_segments,其中X可设置为1.0和1.5之间的数字,当X=1.5时容易引发swap,但是会减少因内存不足而失败的查询数。

查看数据是否有倾斜
select gp_segment_id, count(*) from REGISTRATION_RECORD group by 1 ;


本文来源:https://blog.csdn.net/qq_35260875/article/details/106221572

相关文章