1. 首页
  2. IT资讯

Mysql 优化从基础到落地 一 节

                                               Mysql 优化从基础到落地 一 节

 

● 慢查询, 找到值得优化的 SQL

慢查询的定义以及作用:

慢查询日志, 顾名思义   就是查询慢的日志, 是指 Mysql 记录所有执行 超过 long_query_time 参数设定的时间的 阀值 的 SQL 语句的 日志。  该日志能为 SQL 语句的优化 带来 很好的帮助。 默认情况下  慢查询日志是关闭的,  要使用慢查询日志功能  首先要开启慢 查询的日志功能 

 

启动慢查询:

常用配置

  • show_query_log                             启动 停止慢查询
  • show_query_log_file                      指定慢查询日志的 存储路径及 文件(默认和数据文件放在一起)
  • long_query_time                            指定记录慢查询日志 SQL 执行 时间的 阀值 (单位 秒, 默认  10秒)
  • log_queries_not_using_indexes    是否记录未使用的 索引的 SQL
  • log_output                                      日志存放的地方 [table]   [file]    [file, table]

● 记录符合条件的 SQL

  • 查询语句
  • 数据修改语句
  • 已经回滚的 SQL

 

Mysql 优化从基础到落地 一 节

 

下面是 其中的几条慢查询日志

Mysql 优化从基础到落地 一 节

  (单位毫秒)

  • query_time           :查询时间
  • lock_time              :执行获取 锁 的时间
  • row_sent              :获得结果时间
  • row_examined     :扫描的行数
  • set_ timestamp    :sql 执行的具体时间

 

慢查询 分析工具  mysqldumpslow

● 常用的 慢查询 日志分析工具   mysqldumpslow

汇总除查询 条件以外 完全相同的 SQL, 并将 分析结果 按照参数中指定的顺序输出

●  语法

 mysqldumpslow -s r -t 10 slow-mysql.log  ●  -s   排序参数 : c,t,l,r,at,ai,ar    c            :总次数    t            :总时间    l            :总次数    r            :总数行数    at, al, ar / t,l,r   :平均数     at = 总时间 / 总次数  ●  -t   指定取前面几天 作为结果输入:  

Mysql 优化从基础到落地 一 节

 这个需要 安装 perl  来运行 mysqldumpslow.pl

perl 下载地址

 #以总时间排序,取出前5条  C:Program FilesMySQLMySQL Server 8.0bin>perl mysqldumpslow.pl -s t -t 5 C:WIN-7781FQVPL6U-slow.log

 

Mysql 优化从基础到落地 一 节

慢的 SQL 语句 已经找到出来了,接下来我们来优化慢的 SQL

 

 

数据库设计的三大范式

        三大范式的主要作用: 减少冗余

● 第一大范式

  • 数据库表中的 所有字段 都 只具有 单一属性

  • 单一属性 的列是由 基本数据类型 所构成的

  • 设计出来的表 都是简单的 二维表

● 第二大范式

  • 要求表中只有一个业务主键, 也就是说符合第二范式的表  不能存在 非主键 列 只对部分主键的 依赖关系;   (每一行数据 需要有一个 主键 来区分)

  • Mysql 优化从基础到落地 一 节

● 第三大范式

指 每一个 非 主键属性 即不能 部分依赖 也不传递依赖  与 主键。(属性之间不要有关联)

 

 

 

 

 

常用的慢查询 优化方式:

服务器硬件      

  • SSD  比  HDD  高 10倍 左右                                               

Mysql 服务器优化    

  • linux  随着时间推移 会比  window 稳定 而且系统效能 更高                                      

SQL 本身优化                    

  • 子查询   优化为   关联查询                 

反范式设计优化

  • 反范式 是针对 范式而言的

  • 所谓的 反范式 优化    就是 为了 性能和 读取效率 考量 而 违反 数据库设计范式 进行的优化

  • 允许存在 少量的 冗余 来换取 缩短查询时间。 换句话说  使用空间来换取时间

索引优化

索引的定义:

索引(index)是帮助 Mysql 高效获取数据的 数据结构。可以得到 索引的本质: 索引是数据结构

索引的分类:

  • 普通索引: 一个索引只包含单个列,  一个表 可以包含多个单列索引                                idnex
  • 唯一索引: 索引列的值 必须唯一,     但是 允许为 null                                                      unique
  • 主键索引: 主键索引 是在创建 主键的时候, 自动添加的 索引唯一  且不能为 null            pramery key
  • 复合索引: 一个索引包含多个列

 

 

执行计划:

执行计划是什么:

使用 EXPLAIN 关键字 可以 模拟 优化器 执行 SQL 查询语句; 从而知道 是如何 处理你的 MYSQL 语句的。 分析你的查询语句 或者 表的结构性 瓶颈

语法:

Explain + SQL语句

Mysql 优化从基础到落地 一 节

  ● Explain 看是否 用到了 索引;     key 为 Null 则没有使用 到索引,   ley_len 索引  算法

     key_len       算法      类型                           varchar                      char      字符编码                      utf8                           3      字符本身长度         

   ● 索引是否 充分使用,                     ley_len  的大小,数值越大   说明 索引利用的月充分

   ● Type 字段:                                   type  system > const > eq_ref > ref > range > index > ALL

  ●  ALL        全表扫描                     性能最低   ●  Index      全表扫描(索引表)

 

 

 

  • 点赞
  • 收藏
  • 分享

    • 文章举报

Mysql 优化从基础到落地 一 节 Mysql 优化从基础到落地 一 节
nicepainkiller
发布了276 篇原创文章 · 获赞 49 · 访问量 19万+

私信 关注

原文始发于:Mysql 优化从基础到落地 一 节

主题测试文章,只做测试使用。发布者:sys234,转转请注明出处:http://www.cxybcw.com/71070.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code