• 深入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)查询流程示意图:

  • 相关阅读:
    win10系统打印图片中间空白的解决办法
    DELPHI SOKET 编程--使用TServerSocket和TClientSocket
    因为未启用行移动功能 不能闪回表
    oracle闪退(回退)功能
    查看oracle数据库的数据文件的目录
    Oracle
    Delphi : keydown与keypress的区别,组合键
    Delphi Xe 中如何把日期格式统一处理,玩转 TDatetime
    移除 IIS 的各种头信息
    sql server 通过 sql 查询数据库状态
  • 原文地址:https://www.cnblogs.com/jiaqingshareing/p/7885287.html
Copyright © 2020-2023  润新知