zoukankan      html  css  js  c++  java
  • postgresql重要参数解析及优化

    转载自:https://yq.aliyun.com/articles/413018?spm=a2c4e.11155435.0.0.56e45560r1J1NW

    1.max_connections 200
    最大客户端连接数。每个连接在后端都会对应相应的进程,耗费一定的内存资源。如果连接数上千,需要使用连接池工具。

    2.shared_buffers 25% of total memory
    数据库用于缓存数据的内存大小。该参数默认值很低(考虑不同的系统平台),需要调整。不宜太大,很多实践表明,大于1/3的内存会降低性能。

    3.effective_cache_size 50%-75% of total memory
    This is a guideline for how much memory you expect to be available in the OS and PostgreSQL buffer caches, not an allocation! 这个参数只在查询优化器选择时使用,并不是实际分配的内存,该参数越大,查询优化器越倾向于选择索引扫描。

    4.checkpoint_segments 256 checkpoint_completion_target 0.9
    checkponit_segments wal个数达到多少个数checkponit,还有一个参数checkponit_timeout,控制最长多长时间checkpoint。对于写入比较大的数据库,该值越大越好。但是值越大,执行恢复的时间越长。

    checkpoint_completion_target 控制checkponit write 分散写入,值越大越分散。默认值0.5,0.9是一个比较合适的值。

    5.work_mem
    用于排序,默认值即可。每个连接都会分配一定work_mem,这个是会实际分配的内存,不宜过大,默认值即可。如果要使用语句中有较大的排序操作,可以在会话级别设置该参数,set work_men = ‘2GB’,提高执行速度。

    6.maintanance_work_mem
    维护性操作使用的内存。例如:vacuum ,create index,alter table add foreign key,restoring database dumps.做这些操作时可以临时设置该值大小,加快执行速度。set session maintanance_work_mem = ‘2GB’;

    7.random_page_cost (默认值 4) seq_page_cost(默认值 1)
    设置优化器获取一个随机页的cost,相比之下一个顺序扫描页的cost为1.

    当使用较快的存储,如raid arrays,scsi,ssd时,可以适当调低该值。有利于优化器悬着索引扫描。ssd 时,可以设置为2.

    8.autovacuum
    —maintenance_work_mem 1-2GB

    —autovacuum_max_workers

    如果有多个小型表,分配更多的workers,更少的mem。

    大型表,更多的mem,更少的workers。

  • 相关阅读:
    每日一练4
    每日一练3
    每日一练2 字符串逆序输出
    每日一练1
    python全局变量
    python __file__ 与argv[0]
    python 静态方法和类方法
    常用的python库(不断更新)
    django 自定义用户user模型的三种方法
    实例详解Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化(三)
  • 原文地址:https://www.cnblogs.com/telwanggs/p/13044118.html
Copyright © 2011-2022 走看看