优化的目的
- 找出系统的瓶颈,提高MySQL数据库的整体性能
- 优化结构设计和参数调整,提高用户的响应速度,同时还要节约系统资源,让系统满足更高的负荷。
软优化:一般是操作数据库即可
- 在MySQL中尽量使用JOIN来代替子查询,因为子查询需要嵌套查询
- 嵌套查询时会建立一张临时表,临时表的建立和删除都会有较大的系统开销,而连接查询不会创建临时表,因此效率比嵌套子查询高
- 从索引 角度出发
- like关键字匹配’%’开头的字符串,不会使用索引
- or关键字用到的两个字段必须都是用了索引,该查询才会使用索引
- 使用多列索引必须满足最左匹配。
- 对于字段较多的表,如果某些字段使用频率较低,应该将其分离出来从而形成新的表。
硬优化
- 配置多核和频率高的cpu,多核心可以执行多个线程
- 配置大内存,提高内存,即可提高缓存区容量,因此能减少磁盘I/O时间,从而提高响应速度
- 配置高速磁盘或合理分布磁盘,高速磁盘提高I/O, 分布磁盘能提高并行操作的能力。
- 分库分表(比如根据身份证号的最后一位,拆分为多个表, 0的单独为一张,1的单独为一张,......,查询的时候根据最后一位在对应的分表中查找即可,可以提高性能)、读写分离
- 缓存集群-增加一个cache层,让90%的请求数据只需要访问cache层即可,减少的DB的压力,保证了DB整体的执行效率,比如使用redis,分担数据库的压力,保证数据库的稳定和效率。