Mysql之数据库优化
Posted CodeMarker
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql之数据库优化相关的知识,希望对你有一定的参考价值。
数据库优化的目的:
避免出现页面访问错误:数据库连接timeout出现5xx错误、慢查询造成页面无法加载、阻塞造成数据无法提交
增加数据库的稳定性:很多问题由于数据库的低效查询引起的
优化用户体验:流畅的页面访问速度、良好的网站功能体验。
优化方案:
1.sql及索引的优化
使用慢查询日志,找到有效率问题sql,可借助mysqldumpslow、pt-query-digest慢查询日志分析工具。
对查询较多且查询时间较长的sql、Io大的sql 、未命中索引的sql语句优化。
使用explain查询sql的执行计划,来对sql优化。
索引优化。建合适的索引,where从句、group by从句、order by从句、on从句中出现的字段、联合索引散列度大的字段放前面,去除冗余重复索引,对不使用的索引删除。
2.表结构的优化
选择合适的数据类型:
使用可以存下数据的最小数据类型
使用简单的数据类型。Int比varchar类型在mysql处理上简单
尽可能的使用not null定义字段
尽量少用text、blog类型,非用不可时考虑分表
表结构设计优化:
范式化和反范式化
表的水平拆分
表的垂直拆分
3.数据库系统配置优化
操作系统配置优化:
增大系统文件打开数
关闭防火墙等
mysql配置文件优化:
Mysql配置文件优化:innodb_buffer_pool_size,缓冲池大小
innodb_buffer_pool_instance缓冲池个数
innodb_read_io_threads读线程个数
innodb_write_io_threads写线程个数
innodb_file_per_table设置为on,每个表使用独立的表空间
4.服务器硬件优化
cpu并不是越多越好,单核频率更快的cpu
磁盘io优化,选择合适的存储磁盘
以上是关于Mysql之数据库优化的主要内容,如果未能解决你的问题,请参考以下文章