数据库调优,需要专业知识,对于非DBA人士,有没有比较好的办法呢?有了PGTune,您只需要提供有关硬件配置的基本信息,PostgreSQL数据库在哪里运行。单击“生成”按钮后将计算结果。
那我们都需要提供哪些信息呢?
DB Version:PostgreSQL的版本
你不知道?那查下吧,
SELECT version();
OS Type:操作系统
Windows,Linux还是Mac OS?
DB Type:数据库类型
就是打算做什么用,有以下5种选择
Web application:网页程序
Online transaction processing systems,联机事务处理(OLTP)系统
Data warehouses,数据仓库
Desktop applications,桌面程序
Mixed type of applications:混合类型(以上两种或以上的组合)
Total Memory:总内存数
Number of CPUs,总CPU数
计算公式,
CPUs = threads per core * cores per socket * sockets
threads per core:每核线程数
cores per socket:每个插座的核数,就是我们平时说几核CPU
sockets:CPU插座数
Number of Connections, 总连接数
这个比较难说,看具体业务场景,PostgreSQL默认100(实际可用97),一般web应用调高些,如果是数据仓库,则可以调低些
Data Storage, 数据存储
SSD Storage:固态硬盘
Network(SAN)Storage:网络硬盘
HDD(Storage):机械硬盘
生成结果,可以通过修改postgresql.conf,或者alter system命令来修改配置
如果不是很熟悉的话,建议第二种方式,不用自己手工修改postgresql.conf而造成不必要的麻烦,毕竟执行命令要简单多了。
PGTune基于给定硬件配置的最高性能来计算PostgreSQL的配置。它不是PostgreSQL优化设置的灵丹妙药(银弹)。许多设置不仅取决于硬件配置,还取决于数据库的大小,客户端的数量和查询的复杂性。
如果要用于生产环境,系统也需要优化,建议听取专业DBA的意见。
看看我的配置吧(2014年买的老苹果)
# DB Version: 12
# OS Type: mac
# DB Type: dw
# Total Memory (RAM): 16 GB
# CPUs num: 4
# Connections num: 100
# Data Storage: ssd
max_connections = 100
shared_buffers = 4GB
effective_cache_size = 12GB
maintenance_work_mem = 2GB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 500
random_page_cost = 1.1
work_mem = 10485kB
min_wal_size = 4GB
max_wal_size = 16GB
max_worker_processes = 4
max_parallel_workers_per_gather = 2
max_parallel_workers = 4
max_parallel_maintenance_workers = 2
# DB Version: 12
# OS Type: mac
# DB Type: dw
# Total Memory (RAM): 16 GB
# CPUs num: 4
# Connections num: 100
# Data Storage: ssd
ALTER SYSTEM SET
max_connections = '100';
ALTER SYSTEM SET
shared_buffers = '4GB';
ALTER SYSTEM SET
effective_cache_size = '12GB';
ALTER SYSTEM SET
maintenance_work_mem = '2GB';
ALTER SYSTEM SET
checkpoint_completion_target = '0.9';
ALTER SYSTEM SET
wal_buffers = '16MB';
ALTER SYSTEM SET
default_statistics_target = '500';
ALTER SYSTEM SET
random_page_cost = '1.1';
ALTER SYSTEM SET
work_mem = '10485kB';
ALTER SYSTEM SET
min_wal_size = '4GB';
ALTER SYSTEM SET
max_wal_size = '16GB';
ALTER SYSTEM SET
max_worker_processes = '4';
ALTER SYSTEM SET
max_parallel_workers_per_gather = '2';
ALTER SYSTEM SET
max_parallel_workers = '4';
ALTER SYSTEM SET
max_parallel_maintenance_workers = '2';
参考
https://pgtune.leopard.in.ua/#/
https://github.com/le0pard/pgtune
如果有什么建议和意见,也欢迎留言,或者加我个人微信,
麻烦点亮[在看],🙏🙏🙏!