实例解说数据库优化【MySQL教程】,数据库,优化
数据库优化方法论
这部份为理论知识,不感兴趣的同砚能够直接跳到背面参数设置部份。
数据库优化目的
引荐 《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%。
本文来自ki4网,mysql教程栏目,迎接进修!
以上就是实例解说数据库优化的细致内容,更多请关注ki4网别的相干文章!