mysql数据库优化实践

mysql数据库优化实践

参考链接文章:
https://yq.aliyun.com/articles/79665?spm=5176.100239.blogcont79666.14.z2X6Hg

一些命令和工具

explain/explain extended

Explain (显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句)

profile工具

Profile(查询到 SQL 会执行多少时间, 并看出 CPU/Memory 使用量, 执行过程中 Systemlock, Table lock 花多少时间等等.)

慢查询

它能记录下所有执行超过long_query_time时间的SQL语句, 帮你找到执行慢的SQL, 方便我们对这些SQL进行优化.

数据类型优化

选择数据类型的步骤:

  • Step1:确定合适的大类型,如数字、字符串、时间等;

  • Step2:选择具体类型,相同大类型的不同子类型数据的存储长度,范围,允许的精度不同,有时候也有一些特殊的行为和属性。

普遍适用的原则:

  • 使用小而简单的合适的数据类型;
  • 对于可变长字符串VARCHAR,只分配真正需要的空间;
  • 小心使用ENUM;
  • 尽量使用整型定义标识列;
  • 使用相同数据类型存储相似或者相关的值,尤其是关联条件中使用的列。
    核心原则:具体问题具体分析。一些特定的业务场景并不适合套用普遍使用的原则。

索引优化

  • 写条件语句时,使用独立的列
  • 当需要索引很长的字符列时
    • 一种方案是哈希索引;
    • 但有时候这样做还不够,还可以选择索引开始的部分字符。可以大大节约索引空间,提高索引效率,但索引选择性是不可忽略的一部分。
  • 多列索引时,出现索引合并并不一定会使性能最优。
  • 选择合适的索引列顺序,多数经验法则告诉我们将选择性最大的列放前边,但是有时需要考虑特殊情况,比如WHERE子句中的排序,分组和范围条件等因素
  • 覆盖索引。
  • 使用索引扫描来做排序。
  • 冗余和重复索引。未使用的索引。

SQL优化

  • 确认应用程序是否在检索大量超过需要的数据。
  • 确认MYSQL服务器层是否在分析大量超过需要的数据行。
    原文作者:MinoyJet
    原文地址: https://www.jianshu.com/p/eb6b8aaed79c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞