zoukankan      html  css  js  c++  java
  • mariadb的explain分析及InnoDB存储引擎

    id: 当前查询语句中,每个SELECT语句的编号,     id: 1  表示简单类型的查询

      复杂类型的查询有三种:简单子查询,用于FROM中的子查询,联合查询:UNION

      注意:UNION查询的分析结果会出现一张额外匿名临时表

    select_type:

        简单查询为SIMPLE

        复杂查询:

            SUBQUERY: 简单子查询

                DERIVED: 用于FROM中的子查询    

            UNION:UNION语句的第一个之后的SELECT语句

            UNION RESULT: 匿名临时表 

    简单子查询示例:

        PRIMARY:主查询或整个查询语句的最外层查询

        SUBQUERY:用在where子句中的子查询

    联合查询示例:

    table:SELECT语句关联到的表

    type:关联类型,或访问类型,即MariaDB决定的如何去查询表中的行的方式

        ALL: 全表扫描

        index:根据索引的次序进行全表扫描;如果在Extra列出现“Using index”表示了使用覆盖索引,而非全表扫描

          range:有范围限制的根据索引实现范围扫描;扫描位置始于索引中的某一点,结束于另一点

        ref: 根据索引返回表中匹配某单个值的所有行

        eq_ref:仅返回一行,但需要额外与某个参考值做比较

        const, system: 直接返回单个行

        性能从上到下依次提升

    possible_keys:查询可能会用到的索引

    key: 查询中使用了的索引

    key_len: 在索引中使用的字节数

    ref: 在利用key字段所表示的索引完成查询时所有的列或某常量值

    rows:MariaDB估计为找所有的目标行而需要读取的行数

    Extra:额外信息

        Using index:MySQL将会使用覆盖索引,以避免访问表

        Using where:MySQL服务器将在存储引擎检索后,再进行一次过滤

        Using temporary:MySQL对结果排序时会使用临时表

        Using filesort:对结果使用一个外部索引排序

    InnoDB:

      处理大量的短期事务

      数据存储于“表空间(table space)”中

        (1) 所有InnoDB表的数据和索引放置于同一个表空间中

          表空间文件:datadir定义的目录下

            数据文件:ibddata1, ibddata2, ...

        (2) 每个表单独使用一个表空间存储表的数据和索引

          innodb_file_per_table=ON   查看是否开启(show global variables like 'innodb_file_%';)

          数据文件(存储数据和索引):tbl_name.ibd

          表格式定义:tbl_name.frm

    lock table students read; 只允许对students表查询(不过仍然可以从缓存中取数据)   释放:unlock table;

    lock table students write;  连查询请求都不允许

          

  • 相关阅读:
    计算机网络第一章_20210512
    bootloader_华清远见
    C#3.17
    linux--cd命令
    国内的开源网站
    安装linux
    如何自我介绍
    课堂破冰游戏“猜猜他是谁”
    办公软件---word
    计算机网络--技能训练
  • 原文地址:https://www.cnblogs.com/linuxboke/p/5532204.html
Copyright © 2011-2022 走看看