目录
引言
一、故障排查
1.1 故障一
1.2 故障二
1.3 故障三
1.4 故障四
1.5 故障五
1.6 故障六
1.7 故障七
1.8 故障八
1.9 故障九
1.10 故障十
1.11 故障十一
二、 生产环境优化
2.1 硬件优化
2.2 查询优化
总结
引言
MySQL是目前企业最常见的数据库之一,日常维护管理的过程中,会遇到很多故障,该文汇总了常见的故障,以增长MySQL的学习经验。另外,MySQL默认配置无法满足高性能要求。
一、故障排查
1.1 故障一
1.2 故障二
1.3 故障三
1.4 故障四
1.5 故障五
1.6 故障六
1.7 故障七
1.8 故障八
1.9 故障九
1.10 故障十
1.11 故障十一
二、 生产环境优化
2.1 硬件优化
cpu:64 位、高主频、高缓存,高并行处理能力
内存:4GB以上的物理内存
磁盘: 15000转、RAID5、raid10、SSD固态硬盘
2.2 查询优化
- 建表时表结构要合理,每个表不宜过大;在任何情况下均应使用最精确的类型。例如,如果ID列用int是一个好主意, 而用text类型则是个蠢办法;TIME列酌情使用DATE或者DATETIME。
- 索引,建立合适的索引。
- 查询时尽量减少逻辑运算(与运算、或运算、大于小于某值的运算);
- 减少不当的查询语句,不要查询应用中不需要的列,比如说 select * from 等操作。
- 减小事务包的大小;
- 将多个小的查询适当合并成一个大的查询,减少每次建立/关闭查询时的开销;
- 将某些过于复杂的查询拆解成多个小查询,和上一条恰好相反。
- 建立和优化存储过程来代替大量的外部程序交互。
总结
索引就是一种MySQL的优化,从两个方面考虑:
软优化
1、查询语句的优化比如:select 结合order by [ascldesc]排序之后的limit查询适当使用子查询,结合连接表达式使用J0IN查询。
2、使用索引在适合创建索引的字段创建索引:经常与其他表进行连接的表,在连接字段上应该建立索引、建在选择性高的字段上、建在小字段上:在不适合创建索引的字段不要盲目创建索引:唯一性太差的字段、更新太频繁地字段、大的文本字段甚至超长字段,不要建立索引。
3、优化子查询
4、分析表
5、增加中间表
6、增加冗余字段
7、分析表,检查表,优化表
硬优化
1、分库分表
2、读写分离
对系统做分库分表、读写分离。通过缓存集群来承载大部分的读请求。(非关系型数据库)