Sql 调优
首先在学习的过程中,我会先了解一个这个东西是做什么用的,为什么要用。
做什么:
随着系统的数据量逐年增加,并发量也成倍增长,很多时候下,一个项目数据库的数据数量是成千上百万条数据,如果对数据库查询做的是全表扫描,那么首先在时间上面就很不合算,同时在读写操作的过程中又会造成资源的浪费。这就会造成一下几个问题的出现:1.查询性能低,2.执行时间过长,3.等待时间过长。在我们课设中数据量小很难感受出来,但是这不代表SQL调优的不必要性。
所以SQL调优就是为了解决这些问题(感觉不止这些,一天时间先了解一点)。
为什么要用sql调优:
一个应用吞吐量往往出现在数据库的处理速度上,随着应用程序的使用,数据库数据逐渐增多,数据库处理压力逐渐增大,关系型数据库的数据是存放在磁盘上的,读写速度较慢(与内存中的数据相比).
同时我觉得一张图可很好解释
由此可得sql调优性价比最高
在此过程我了解了一下mysql查询语句的执行过程
流程是这个样子的:1通过网络通讯协议,去接受客户端传过来的SQL,2然后去查询缓存里面去去看一下这个sql查询对应的结果是否存在,存在则立马返回结果,不存在就是继续往下走。3没有结果存在的话,那就通过解析器来解析这一条SQL语句,最终形成一个解析树,4然后再由插叙优化器对解析树进行优化。5根据优化出来的结果得出要执行查询计划,吧这个查询计划交给查询引擎里面去执行。6引擎再调用相应的API,最后由存储引擎来完成数据查询,然后返回结果。
进入正题:如何优化:
1.表字段的设计阶段,考量更优的存储和计算
2.数据库自身提供的优化功能,如索引
3.横向扩展,主从复制、读写分离、负载均衡和高可用(有点难,不理解)
4.典型SQL语句优化
首先是比较常用的sql语句优化:太多了,这边挂链接,不复制过来
https://blog.csdn.net/qq_39390545/article/details/103993559
(插眼到前30已看完)
索引的优化(插眼前30)
https://blog.csdn.net/qq_39390545/article/details/103993559
什么是数据库性能问题?
如何性能监视
性能监视器。在管理工具中找到,或者运行 perfmon即可打开
https://blog.csdn.net/capsicum29/article/details/71436921(插眼性能指标)
慢日志:
MySQL的慢查询是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阙值的语句,具体是指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。
当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志或多或少会带来一定的性能影响。
日志一些常规常做插眼:
https://blog.csdn.net/XlxfyzsFdblj/article/details/104342873
执行计划:
什么是执行计划?
执行计划是一条查询语句在Oracle中的执行过程或访问路径的描述。
执行计划描述了SQL引擎为执行SQL语句进行的操作;分析SQL语句相关的性能问题或仅仅质疑查询优化器的决定时,必须知道执行计划;所以执行计划常用于sql调优。
怎么看执行计划
如果是使用PLSQL的话,那就可以使用PLSQL提供的查询执行计划了,也就是按F5
打开PLSQL工具 -> 首选项 -> 窗口类型 -> 计划窗口 ,在这里加入执行计划需要的参数,但是可能会翻车,看下来
https://www.cnblogs.com/mzq123/p/13156390.html#2%E3%80%81%E4%BB%80%E4%B9%88%E6%98%AF%E6%89%A7%E8%A1%8C%E8%AE%A1%E5%88%92%EF%BC%9F
插眼:怎么查看真实计划
哪我要怎么看懂这个执行计划?
有点多,不复制过来,因为用的不是orcal也没整明白,后期要补一下
https://www.cnblogs.com/mzq123/p/13156390.html#2%E3%80%81%E4%BB%80%E4%B9%88%E6%98%AF%E6%89%A7%E8%A1%8C%E8%AE%A1%E5%88%92%EF%BC%9F