当前位置: 首页 > 科技观察

MySQL数据优化总结-查询备忘录

时间:2023-03-16 13:05:29 科技观察

1.优化分类2.测试数据样本参考mysql官方sakina数据库。3、使用mysql慢查询日志监控存在效率问题的SQL首先,打开慢查询日志。第二个是慢查询日志存放位置。第三种,不使用索引,也会记录在慢查询日志中。第四,超过1秒后的查询记录在慢查询日志中(一般设置为100ms)。3.1.慢查询日志文件分析3.1.1tail命令tail-50/home/mysql/sql_log/mysql_slow.log,输入文件中的tail内容,即最后50行数据。我们提取其中一个进行检查,如下图所示。query_time,查询时间(秒);lock_time,锁表时间。rows_sent,发送给请求的行数;rows_examined,由于查询数据而用于扫描表的行数。3.1.2mysqldumpslow官方工具mysqldumpslow默认是随mysql一起安装的。mysqldumpslow-h,可以查询工具支持的命令。mysqldumpslow-sr-t10/var/lib/mysql/localhost-slow.log|more,返回结果如下图所示。3.1.3pt-query-digest工具提供的反馈比mysqldumpslow多。pg-query-digest--help查看帮助,查看使用命令。pg-query-digest/var/lib/mysql/localhost-slow.log,查询结果如下。***Part2Part3Part4.如何通过慢查询日志发现有问题的sql5.通过explainconst常量搜索查询分析sql执行计划,一般来说,针对主键和唯一索引;eq_reg,一般是Primarykey或者uniqueindexrangelookup;ref,常用于连接查询;范围,索引的范围查找;索引,用于索引扫描;所有,表扫描。六、count()和max()的优化1、max()的优化对payment_date建立索引建立索引后的查询结果可以看到,通过索引结构可以直接查询***日期。覆盖索引是指通过索引可以得到查询结果。2、count()优化count(*)包含null值,count(id)不包含错误写法:正确写法:7、子查询的优化一对多子查询,注意dinstinct8、groupbyOptimization的优化优化前优化前和优化后优化后,减少io,提高效率,节省服务器资源灵活使用子查询和连接查询9.限制查询优化缺点:分页限制越远,扫描的行越多,并且io操作越大缺点:id是连续的。主键不断增长,分页查询更快。十。如何选择合适的列建立索引。如果是覆盖索引,可以直接从索引结构中获取数据,速度最快;索引字段越小,数据库数据以页为单位存储,每次io获取的数据量就越大。通过selectcount(dinstinctcustomer_id)检查分散度。分散度大的色谱柱具有更高的选择性。十一、索引优化的方法SQL索引改进了查询,但是会影响inset、update、delete。4.数据库表结构优化4.1选择合适的数据类型Time类型,timestamp和int占用相同字节;notnull需要额外的字段存储,bigint8字节,varchar15字节4.2数据库范式优化4.4表垂直拆分,例如将news表的内容拆分成一个表。4.5表格的水平拆分。拆分表用在前台,汇总表用在后台。总结的很随意,纯粹是为了看知识点方便