目录
引言
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、读写分离
对系统做分库分表、读写分离。通过缓存集群来承载大部分的读请求。(非关系型数据库)