zoukankan      html  css  js  c++  java
  • mysql原理~ innodb_page工具详解


    一 目的:分析mysql idb文件具体构成
    二 核心语句
       SELECT A.SPACE AS TBL_SPACEID, A.TABLE_ID, A.NAME AS TABLE_NAME, FILE_FORMAT, ROW_FORMAT, SPACE_TYPE, B.INDEX_ID , B.NAME AS INDEX_NAME, PAGE_NO, B.TYPE AS INDEX_TYPE FROM INNODB_SYS_TABLES A LEFT JOIN INNODB_SYS_INDEXES B ON A.TABLE_ID =B.TABLE_ID WHERE A.NAME = 'db/table';
    三 基础
       mysql默认页大小是16K 所以以下都是参数为16
    四 具体用法:
      1 ./innblock table.idb scan 16 查看全部索引
       我们能获取的内容
      1 Datafile Total Size
      2 INDEX_ID(此处的INDEX_ID正好核对sql语句查询到的结果)

     3 block no  (page_no,可以根据此进行如下分析)
     2 /innblock table.idb page_no 16 查看具体的数据页构成
      我们能获取的内容
      1 block_no: page_no_id  
      2 space_id: 表空间ID
      3 index_id: 索引页ID
      4 n_rows: 具体行数 不含deleted且已被purged的记录
      5 del_bytes: 本索引页中所有deleted了的且已被purged的记录的总大小。
      链表
      Total del rows:1 del rows list(logic): 任何被打标记并且被purge的都会记录在此

    五 总结

      本文内容来源于八怪大神的help文档,我只是做个自学的记录 见谅

    六 补充

       如何计算表索引的B+树高度

       根据上面sql语句进行查询  出关键记录 page_no -> primary 

        1 B+树的高度则为 page_no+1

        2 B+树的高度决定了要做多少次IO操作, 几千万行的高度有可能和几百万的高度一样

        3 B+树的高度通常是1-3 

        4 primary page number代表主键索引的根页

  • 相关阅读:
    操作系统(一) 操作系统的概念
    数据结构(六) 排序
    数据结构(五) 查找和哈希表
    数据结构(三) 树和二叉树,以及Huffman树
    数据库简述(以MySQL为例)
    Java中的UDP应用
    Java线程池应用
    Java定时器应用
    JavaSE项目之聊天室swing版
    用LinkedList集合演示栈和队列的操作
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/11446550.html
Copyright © 2011-2022 走看看