指标
-
SQL平均响应时间变短
-
优化前: 数据库平均响应时间500ms
-
优化目标: 数据库平均响应时间200ms
-
数据库服务器CPU占用率变少
-
优化前: 数据库高峰期CPU使用率70%
-
优化目标: 数据库高峰期CPU使用率50%
-
数据库服务器IO使用率变低
-
优化前: 数据库IO WAIT为30%
-
优化目标: 数据库IO WAIT低于10%
数据库参数优化
主流数据库架构都有如下的共同点:
-
数据缓存
-
SQL解析区
-
排序内存
-
REDO及UNDO
-
锁、LATCH、MUTEX
-
监听及连接
-
文件读写性能
接下来我们根据不同的数据库调整参数以使数据库达到最佳性能。
ORACLE
| 参数分类 | 参数名 | 参数值 | 备注 |
|---|---|---|---|
| 数据缓存 | SGA_TAGET、MEMORY_TARGET | 物理内存70-80% | 越大越好 |
| 数据缓存 | DB_CACHE_SIZE | 物理内存70-80% | 越大越好 |
| SQL解析 | SHARED_POOL_SIZE | 4-16G | 不建议设置过大 |
| 监听及连接 | PROCESSES、SESSIONS、OPEN_CURSORS | 根据业务需求设置 | 一般为业务预估连接数的120% |
| 其他 | SESSION_CACHED_CURSORS | 大于200 | 软软解析 |
MYSQL(INNODB)
| 参数分类 | 参数名 | 参数值 | 备注 |
|---|---|---|---|
| 数据缓存 | INNODB_BUFFER_POOL_SIZE | 物理内存50-80% | 一般来说越大性能越好 |
| 日志相关 | Innodb_log_buffer_size | 16-32M | 根据运行情况调整 |
| 日志相关 | sync_binlog | 1、100、0 | 1安全性最好 |
| 监听及连接 | max_connections | 根据业务情况调整 | 可以预留一部分值 |
| 文件读写性能 | innodb_flush_log_at_trx_commit | 2 | 安全和性能的折中考虑 |
| 其他 | wait_timeout,interactive_timeout | 28800 | 避免应用连接定时中断 |
POSTGRES
| 参数分类 | 参数名 | 参数值 | 备注 |
|---|---|---|---|
| 数据缓存 | SHARED_BUFFERS | 物理内存10-25% |
|
| 数据缓存 | CACHE_BUFFER_SIZE | 物理内存50-60% |
|
| 日志相关 | wal_buffer | 8-64M | 不建议设置过大过小 |
| 监听及连接 | max_connections | 根据业务情况调整 | 一般为业务预估连接数的120% |
| 其他 | maintenance_work_mem | 512M或更大 |
|
| 其他 | work_mem | 8-16M | 原始配置1M过小 |
| 其他 | checkpoint_segments | 32或者更大 |
|
达梦数据库
| 参数分类 | 参数名 | 参数值 | 备注 |
|---|---|---|---|
| 数据缓存 | MEMROY_TARGET、MEMROY_POOL | 物理内存90% |
|
| 数据缓存 | BUFFER | 物理内存60% | 数据缓存 |
| 数据缓存 | MAX_BUFFER | 物理内存70% | 最大数据缓存 |
| 监听及连接 | max_sessions | 根据业务需求设置 | 一般为业务预估连接数的120%
|