实例解说数据库优化
数据库优化办法论
这部分为理论知识,不感乐趣的同学可以直接跳到后面参数配置部分。
数据库优化目标
引荐 《mysql视频教程》
按照角色的不一样,数据库优化分为以下几个目标:
业务角度(关键会员):
减少会员页面响应时间
数据库角度(开发):
减少数据库SQL响应时间
数据库效劳器角度(运维):
充分使用数据库效劳器物理资源
减少数据库效劳器CPU使用率
减少数据库效劳器IO使用率
减少数据库效劳器内存使用率
目标
1. SQL均匀响应时间变短
a. 优化前:数据库均匀响应时间500ms
b. 优化目标:数据库均匀响应时间200ms
2. 数据库效劳器CPU占用率变少
a. 优化前:数据库顶峰期CPU使用率70%
b. 优化目标:数据库顶峰期CPU使用率50%
3. 数据库效劳器IO使用率变低
a. 优化前:数据库IO WAIT为30%
b. 优化目标:数据库IO WAIT低于10%
数据库优化误区
在停止数据库优化的时候大概会有以下几个误区:
1. 优化此前必然要深入理解数据库内部道理
优化是有“套路”的,照着这些“套路”你也可以很好的完成数据库优化
2. 不竭调整数据库参数就可以终究实现优化
有时候设计不合理如何调整参数都不可
3. 不竭调整操纵系统参数就可以终究实现优化
同上
4. 数据库机能由利用、数据库架构决议,与利用开发关系不大
恰恰相反,利用开发的关系很大
5. 必需要做读写别离,必需要弄分库分表
数据量级只要到达必然的比例才有必要做读写别离,分表分库,不然徒增复杂度。一样来说Oracle的单表量级可以到达1亿,MySQL到1000万~2000万
数据库优化流程
完全的数据库优化流程如下:
第一需要尽大概的理解优化问题,收集问题期间系统信息并做好存档。按照当前系统问题展现拟定优化目标并与客户沟通目标达成一致;通过一系列工具剖析系统问题,拟定优化方案,方案评审完成后由各负责人员停止实施。若到达优化目标则编写优化报告,不然需要从新拟定优化方案。
数据库实例优化
数据库实例优化遵照三句口诀:日志不克不及小、缓存足够大、连接要够用。
数据库事务提交后需要将事务对数据页的修改刷( fsync)到磁盘上,才能包管数据的耐久性。这个刷盘,是一个随机写,机能较低,假如每次事务提交都要刷盘,会极大影响数据库的机能。数据库在架构设计中都会采纳如下两个优化手法:
a. 先将事务写到日志文件RedoLog(WAL),将随机写优化成次序写
b. 加一层缓存构造Buffer,将每次写优化成次序写
所以日志跟缓存对数据库实例特别重要。而连接假如不足用,数据库会直接抛出非常,系统没法拜访。
数据库参数优化
主流数据库架构都有如下的共同点:
数据缓存
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% |
总结
数据库的优化手法太多太多,有换磁盘阵列升级硬件,有改写SQL足本增加索引,还有数据库参数调整优化机能,乃至还可以调整数据库架构。本文从数据库本身参数停止调优,大家按照上面几张表中的参数停止调整根本能到达数据库最好机能的80%。
本文来自百分百源码网,mysql教程栏目,欢迎学习!
以上就是实例讲解数据库优化的具体内容,更多请关注百分百源码网其它相关文章!