zoukankan      html  css  js  c++  java
  • 深入MYSQL随笔

    (1)查询生命周期:
    从客户端到服务器,然后在服务器上进行解析,生成执行计划,执行,并返回给客户端。
    执行是整个生命周期中,最重要的阶段。

    (2)慢查询基础:
    优化数据访问,减少访问的数据行。

    (3)查询不需要的记录:mysql有时不是仅仅去返回只需要的数据,而是现将所有的数据先返回
    客户端再抛弃绝大部分数据。
    总是取出全部的列:select *
    重复查询相同的数据:反复调用同一个sql 可以先把结果缓存起来。

    (4)衡量查询开销的指标
    响应时间:服务时间+排队时间
    扫描的行数:
    返回的行数:通常下扫描和返回的行数相同,但是在关联查询的条件下
    则不同。

    (5)索引让Mysql以最高效、扫描行数最小的方式找到需要的记录。

    (6)尽量选择一个大查询去替换多个实现同样效果的小查询。

    (7)分解关联查询:
    让缓存的效率更高;
    将查询分解后,执行单个查询可以减少锁的竞争;
    在应用层做关联,容易对数据库进行拆分;
    可以减少冗余记录的查询;
    相当于实现了哈希关联,而不是使用mysql的嵌套查询

    (8)展示各个线程的查询状态:
    show FULL PROCESSLIST
    sleep:线程正在等待客户端发送的新请求
    Query:线程正在执行查询或者正在将结果发送给客户端
    Locked:线程正在等待表锁
    Analyzing and statistics:收集存储引擎的统计信息,并生成查询的执行计划
    copying to tmp table:将结果集返回到临时表
    sorting result:排序结果
    sending data:线程在多个状态间传送数据,在生成结果集、向客户端返回数据。

    (9)显示线程的查询的成本
    show STATUS like 'Last_query_cost'

    (10)查询流程示意图:

  • 相关阅读:
    Android 布局中 如何使控件居中
    VGA, QVGA, HVGA, WVGA, FWVGA和iPhone显示分辨率
    [转+整理] Android 分辨率,密度,像素单位说明
    多线程的知识点总结
    集合的相关信息
    spring cloud详解
    iostat实时监控磁盘util
    Jenkins安装过程
    hdfs的block为什么设置成128M
    shell变量自增的几种方式
  • 原文地址:https://www.cnblogs.com/jiaqingshareing/p/7885287.html
Copyright © 2011-2022 走看看