使用innodb_ruby来理解innodb内部结构

1. 前言

    最近发现了一款由Jeremy Cole带来的数据库innodb格式化分析工具,此工具的强大之处在于可以将innodb内部存储的信息格式化的解释给大家,让人更清晰的理解INNODB的数据结构.
    它是一款非常轻量级的应用,同时存在bug风险,不建议给生产环境使用.但是我们在测试环境就可以很好的了解该工具和该工具带来的便利.
    README中是这样说的:
    1.  一款学习工具,让你很轻松的理解innodb架构
    2.  一款教学工具,通过ruby的irb的交互式界面,可以看到innodb的架构与发生的变化
    3.  一款调查工具,InnoDB引擎不会告诉你它在磁盘正在做那些任务或者做过那些任务,例如,我们可以获取页的饱和度,每页具体含有多少记录,B+Tree的具体架构等详细内容
    4.  一款调试工具,当一些行为或操作会影响到数据结构的时候,可以通过innodb_ruby工具直观的审查,确保与期望的结果相同

2.安装

  • 2.1
    基础环境配置

    shell# yum install \
    glibc-headers \
    autoconf \
    gcc-c++ \
    glibc-devel \
    readline-devel \
    zlib-devel \
    libffi-devel \
    openssl-devel \
    automake \
    libtool \
    bison \
    sqlite-devel \
    ftp://195.220.108.108/linux/centos/6.8/os/x86_64/Packages/libyaml-devel-0.1.3-4.el6_6.x86_64.rpm \
    ftp://195.220.108.108/linux/centos/6.8/os/x86_64/Packages/libyaml-0.1.3-4.el6_6.x86_64.rpm
    
    shell# curl -L get.rvm.io | bash -s stable
    shell# source ~/.bashrc
    shell# source ~/.bash_profile
    
    shell# rvm list known
    shell# rvm install 2.2.0
    
  • 2.2
    以root身份运行:

    shell# sudo gem install innodb_ruby
    

    以用户身份运行(也可使用root):

    shell# gem install --user-install innodb_ruby
    

    或者直接从github上拷贝(不同版本在 https://rubygems.org/gems/innodb_ruby 获取)

    shell# git clone https://github.com/jeremycole/innodb_ruby.git
    shell# cd innodb_ruby
    shell# ruby -r rubygems -I lib bin/innodb_space ...
    

3.参数

首先,我们
shell># innodb_space --help |more 可以看到有以下两行样例:
innodb_space -s ibdata1 [-T tname [-I iname]] [options]
innodb_space -f tname.ibd [-r ./desc.rb -d DescClass] [options] <mode>
其中:
    "-s"    表示系统表空间名;
    "-T"    表示给定的表名;
    "-I"    表示给定的索引;
    "-f"    表示给定的表空间文件
接下来,我们创建一张表并看几条事例
mysql> show full columns from db.test;
+--------+-------------+-------------------+------+-----+---------+--------------+
| Field  | Type        | Collation         | Null | Key | Default | Comment      |
+--------+-------------+-------------------+------+-----+---------+--------------+
| id     | int(11)     | NULL              | NO   | PRI | NULL    | 自增主键      |
| rannum | varchar(20) | latin1_swedish_ci | YES  |     | NULL    | 随机码        |
+--------+-------------+-------------------+------+-----+---------+--------------+
2 rows in set (0.00 sec)

mysql> select count(*) from db.test;
+----------+
| count(*) |
+----------+
|    24997 |
+----------+

3.1 Space File Structure

  • system-spaces

    shell# innodb_space -s ibdata1 system-spaces
        name                            pages       indexes     
        (system)                        13056       7           
        db/store                        6           1           
        db/test                         768         1           
        ...
        其中,system-spaces是模式名,在该模式下,innodb_space列出所有物理对象的数量,innodb_space 有很多的模式以供选择,我们挑几个主要进行简单说明
    
  • space-indexes

    shell# innodb_space -s ibdata1 -T db/testspace-indexes   
        id          name            root        fseg        used        allocated   fill_factor 
        1198        PRIMARY         3           internal    1           1           100.00%     
        1198        PRIMARY         3           leaf        61          270         22.59%
        其中,space-indexes列出了tb表的索引统计信息
    
  • space-page-type-regions

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值