良好的逻辑设计和物理设计是高性能的基石,schema的设计既要注意细节,也要关注全局。很多问题在开发的时候并没有时间考虑的那么完全,后期测试就要进行不断的优化。我了解的mysql优化一共有查询优化(主要是索引优化)、数据类型优化、数据库结构优化、mysql服务器优化
SQL调优是一个反复的过程,是一步一步的将SQL语句的性能提升到预期的目标。
它是对一个已经实施完成了的应用的问题的解决,相反的,应用设计则是在实施之前,就应该已经设定好了安全和性能的目标。
目标
了解什么是优化
掌握优化查询的方法
掌握优化数据库结构的方法
掌握优化MySQL服务器的方法
查询优化
查询优化的思路分两种
第一种就是线上生产环境,我们使用的是druid监控页面查询sql执行比较慢的筛选出来
第二种就是在生产和测试的环境下,使用explian执行计划,根据分析参数来判断哪里出现了问题
索引优化全解:https://blog.csdn.net/yujing1314/article/details/106756289
数据类型优化
数据类型优化主要是在建表阶段就应该做好,因为生产环境下再去修改数据类型代价有点大
数据类型优化:https://blog.csdn.net/yujing1314/article/details/107469269
表优化
范式和反范式
范式化就是满足第一第二第三范式的表设计
反范式化指的是通过增加冗余或重复的数据来提高数据库的读性能。
优化服务器硬件
服务器性能可以在生产环境下进行优化
服务器的硬件性能决定了Mysql数据库的性能,主要有下面几个方面
1.配置较大的内存,提高内存是优化MySQL数据库性能的方法之一,内存的IO非常快,可以增加系统缓存区容量
2.配置高速磁盘SSD等
3.合理分配磁盘IO,减少资源竞争,提高并发操作的能力
4.配置多核处理器,Mysql是多线程数据库,多处理器可以提高执行多个线程的能力
MySQL配置参数调优
max_connections :MySQL的最大连接数,如果服务器的并发连接请求量较大,建议调高此值,以增加并行连接数量
wait_timeout和interative_timeout: wait_timeout:指的是MySQL再关闭一个非交互的连接之前所需要等待的秒数。
interative_timeout:指的是关闭一个交互的连接之前所需要等待的秒数。
sort_buffer_size:每个需要排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY 或 GROUP BY操作
key_buffer_size:表示索引缓冲区的大小,索引缓冲区所有的线程共享,增加索引缓冲区可以得到更好