LightDB 通过 pg_cron 模块来实现每日在最空闲时间来运行一次 vacuum 和 analyze 命令。
可通过修改 postgresql.conf 配置项自动收集:
autovacuum = on # 开启自动收集
autovacuum_naptime = 15min # vacuum 间隔时间 15min
Track_counts=on # 打开收集表和索引上的访问的统计信息
Track_activities=on #
允许跟踪每个
session
执行的
SQL
命令的信息
track_io_timing=on #
允许统计
I/O
调用的时间
AutoVacuum 会启动后台进程运行

对于大表, analyze 命令只读取表的部分内容随机抽样,完成统计信息收集。如果想要统计信息更加准确,可以通过修改参数抽样比例default _statistics_target= 256,默认为 100 ,如果设置的过大,也会拉长收集信息的时间,根据表的行数而定。
同时,可以手动指定列有多少个唯一值,命令:
ALTER TABLE tb1 ALTER COLUMN id set ( n_distinct =2000);
对于继承表,设置 父 表时,子表可以继续父表的设置,命令:
ALTER TABLE tb1 ALTER COLUMN id set ( n_distinct_inherited =2000);
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70018364/viewspace-2901758/ ,如需转载,请注明出处,否则将追究法律责任。