数据库参数优化
目的
通过调整数据库的参数配置,可以有效提升服务器性能。
方法
参数名称 |
参数含义 |
优化建议 |
---|---|---|
gp_vmem_protect_limit |
每个Segment数据库为所有运行的查询分配的内存总量。 |
每个节点的物理内存/每个节点primary Segment数量。 |
shared_buffers |
磁盘读写的内存缓冲区。 |
不宜设置过大。 |
effective_cache_size |
设置优化器假设磁盘高速缓存的大小用于查询语句的执行计划判断,主要用于判断使用索引的成本。 |
设置越大,优化器越倾向于走索引。 |
work_mem |
设置每个Segment内存排序的大小。 |
work_mem大小根据每个节点上的active Segment设置,设置过大将导致swap。 |
temp_buffers |
临时缓冲区,拥有数据库访问临时数据。 |
当需要访问大的临时表时,适当增加参数设置,可提升性能。 |
gp_fts_probe_threadcount |
故障检测的线程数。 |
大于等于每个节点的Segment数。 |
gp_hashjoin_tuples_per_bucket |
使用Hashjoin操作设置哈希表的目标密度。 |
此参数越小,hash_tables越大,可提升join性能。 |
gp_interconnect_setup_timeout |
指定等待Greenplum数据库互连在超时之前完成设置的时间量。 |
在负载较大的环境中,应该设置较大的值。 |
gp_statement_mem |
控制Segment数据库上单个查询可以使用的内存总量。 |
建议(gp_vmem_protect_limit*0.9) /Segment数据库上最大查询数。 |
gp_workfile_limit_files_per_query |
如果SQL查询分配的内存不足,Greenplum会创建溢出文件,该参数控制一个查询可以创建多少个溢出文件。 |
超出溢出文件上线时,建议先优化SQL,数据分布策略及内存配置。 |
max_connections |
最大连接数。 |
Segment建议设置成Master的5~10倍。 |
gp_set_proc_affinity |
控制Master节点进程和Segment节点进程的CPU亲和性 |
建议设置成on,数据库在启动时自动进行绑核优化。 |