1.下载ruby并安装ruby:

  ftp://ftp.ruby-lang.org/pub/ruby/

  ftp://ftp.ruby-lang.org/pub/ruby/ruby-2.3-stable.tar.gz

  tar -xvf ruby-2.3-stable.tar.gz

  cd ruby-2.3.1

  ./configure

  make

  make install

2.下载rubygems:

  https://rubygems.global.ssl.fastly.net/rubygems/rubygems-2.6.4.zip  (到https://rubygems.org/ 首页找的rubygems下载地址)

cd rubygems-2.6.4

ruby setup.rb

3.下载并安装innodb_ruby

  https://rubygems.org/gems/innodb_ruby  (进入rubygems官网去找下载链接)

  https://rubygems.global.ssl.fastly.net/gems/innodb_ruby-0.9.13.gem  (浏览器下载)

wget https://rubygems.global.ssl.fastly.net/rubygems/rubygems-2.6.4.zip --no-check-certificate   (wget下载)

  gem install innodb_ruby-0.9.13.gem

  1. [root@localhost ~]# gem -v
  2.   2.6.

  [root@localhost ~]# gem list |grep innodb
   innodb_ruby (0.9.13)

4.innodb_ruby使用文档:

  https://github.com/jeremycole/innodb_ruby/wiki

  https://blog.jcole.us/2013/01/03/a-quick-introduction-to-innodb-ruby/

https://blog.jcole.us/2014/10/02/visualizing-the-impact-of-ordered-vs-random-index-insertion-in-innodb/

http://luodw.cc/2016/03/15/innodb03/

5.实例:

  1. 进入到mysql数据目录:/data
  2.  
  3. [root@localhost data]# innodb_space -s ibdata1 system-spaces
  4. name pages indexes
  5. (system)
  6. mysql/innodb_index_stats
  7. mysql/innodb_table_stats
  8. mysql/slave_master_info
  9. mysql/slave_relay_log_info
  10. mysql/slave_worker_info
  11. test/t1
  12. test/test1
  13. test/test_auto_increment
  14. test/test_char
  15. test/test_ci
  16. test/test_int_n
  17. test/test_time
  18. test/test_unsigned
  1. 查看表t1索引
    [root@localhost data]# innodb_space -s ibdata1 -T test/t1 space-indexes
  2. id name root fseg used allocated fill_factor
  3. PRIMARY internal 100.00%
  4. PRIMARY leaf 100.00%
  1. [root@localhost data]# innodb_space -s ibdata1 -T test/t1 space-indexes
  2. id name root fseg used allocated fill_factor
  3. PRIMARY internal 100.00%
  4. PRIMARY leaf 100.00%
  5. You have new mail in /var/spool/mail/root
  6. [root@localhost data]# innodb_space -s ibdata1 -T test/t1 space-lsn-age-illustrate
  7.  
  8. Start Page ╭────────────────────────────────────────────────────────────────╮
  9. │███████
  10. ╰────────────────────────────────────────────────────────────────╯
  11.  
  12. Legend (█ = page):
  13. Min LSN <─────────────────────────────────────────> Max LSN
  14. ███████████████████████████████████████████
  1.  
  2. $ irb -r innodb
  3. > sys = Innodb::System.new("ibdata1")
  4. > idx = sys.index_by_name("test/t1", "PRIMARY")
  5. > rec = idx.binary_search([])
  1. [root@localhost data]# innodb_space -s ibdata1 -T test/test1 space-extents-illustrate
  2.  
  3. Start Page ╭────────────────────────────────────────────────────────────────╮
  4. │███▁??
  5. ╰────────────────────────────────────────────────────────────────╯
  6.  
  7. Legend (█ = page):
  8. Page Type Pages Ratio
  9. System 50.00%
  10. Index (test/test1.GEN_CLUST_INDEX) 16.67%
  11. ? Free space 33.33%
  1. [root@localhost data]# innodb_space -f test/t1.ibd space-page-type-regions
  2. start end count type
  3. FSP_HDR
  4. IBUF_BITMAP
  5. INODE
  6. INDEX
  7. FREE (ALLOCATED)
  1. [root@localhost data]# innodb_space -f test/t1.ibd -p page-dump
  2. #<Innodb::Page::Index:0x007f798307d970>:
  3.  
  4. fil header:
  5. {:checksum=>,
  6. :offset=>,
  7. :prev=>nil,
  8. :next=>nil,
  9. :lsn=>,
  10. :type=>:INDEX,
  11. :flush_lsn=>,
  12. :space_id=>}
  13.  
  14. page header:
  15. {:n_dir_slots=>,
  16. :heap_top=>,
  17. :garbage_offset=>,
  18. :garbage_size=>,
  19. :last_insert_offset=>,
  20. :direction=>:right,
  21. :n_direction=>,
  22. :n_recs=>,
  23. :max_trx_id=>,
  24. :level=>,
  25. :index_id=>,
  26. :n_heap=>,
  27. :format=>:compact}
  28.  
  29. fseg header:
  30. {:leaf=>
  31. <Innodb::Inode space=<Innodb::Space file="test/t1.ibd", page_size=, pages=>, fseg=>,
  32. :internal=>
  33. <Innodb::Inode space=<Innodb::Space file="test/t1.ibd", page_size=, pages=>, fseg=>}
  34.  
  35. sizes:
  36. header
  37. trailer
  38. directory
  39. free
  40. used
  41. record
  42. per record 14.00
  43.  
  44. page directory:
  45. [, ]
  46.  
  47. system records:
  48. {:offset=>,
  49. :header=>
  50. {:next=>,
  51. :type=>:infimum,
  52. :heap_number=>,
  53. :n_owned=>,
  54. :min_rec=>false,
  55. :deleted=>false,
  56. :length=>},
  57. :next=>,
  58. :data=>"infimum\x00",
  59. :length=>}
  60. {:offset=>,
  61. :header=>
  62. {:next=>,
  63. :type=>:supremum,
  64. :heap_number=>,
  65. :n_owned=>,
  66. :min_rec=>false,
  67. :deleted=>false,
  68. :length=>},
  69. :next=>,
  70. :data=>"supremum",
  71. :length=>}
  72.  
  73. garbage records:
  74.  
  75. records:
  76. {:format=>:compact,
  77. :offset=>,
  78. :header=>
  79. {:next=>,
  80. :type=>:node_pointer,
  81. :heap_number=>,
  82. :n_owned=>,
  83. :min_rec=>true,
  84. :deleted=>false,
  85. :length=>},
  86. :next=>}
  87.  
  88. {:format=>:compact,
  89. :offset=>,
  90. :header=>
  91. {:next=>,
  92. :type=>:node_pointer,
  93. :heap_number=>,
  94. :n_owned=>,
  95. :min_rec=>false,
  96. :deleted=>false,
  97. :length=>},
  98. :next=>}
  99.  
  100. {:format=>:compact,
  101. :offset=>,
  102. :header=>
  103. {:next=>,
  104. :type=>:node_pointer,
  105. :heap_number=>,
  106. :n_owned=>,
  107. :min_rec=>false,
  108. :deleted=>false,
  109. :length=>},
  110. :next=>}
  1. [root@localhost data]# innodb_space -f test/t1.ibd space-index-pages-summary
  2. page index level data free records

innodb结构解析工具---innodb_ruby的更多相关文章

  1. Win32汇编-编写PE结构解析工具

    汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地 ...

  2. 手写PE结构解析工具

    PE格式是 Windows下最常用的可执行文件格式,理解PE文件格式不仅可以了解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,而有些技术必须建立在了解PE文件格式的基础上,如 ...

  3. Golang Json文件解析为结构体工具-json2go

    代码地址如下:http://www.demodashi.com/demo/14946.html 概述 json2go是一个基于Golang开发的轻量json文件解析.转换命令行工具,目前支持转换输出到 ...

  4. MySQL Binlog 解析工具 Maxwell 详解

    maxwell 简介 Maxwell是一个能实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis.RabbitMQ.Redis.Goog ...

  5. (转)AVI文件格式解析+AVI文件解析工具

    AVI文件解析工具下载地址:http://download.csdn.net/detail/zjq634359531/7556659 AVI(Audio Video Interleaved的缩写)是一 ...

  6. Redis源码剖析--源码结构解析

    请持续关注我的个人博客:https://zcheng.ren 找工作那会儿,看了黄建宏老师的<Redis设计与实现>,对redis的部分实现有了一个简明的认识.在面试过程中,redis确实 ...

  7. InfluxDB源码目录结构解析

    操作系统 : CentOS7.3.1611_x64 go语言版本:1.8.3 linux/amd64 InfluxDB版本:1.1.0 influxdata主目录结构 [root@localhost ...

  8. redis源代码结构解析

    看了黄建宏老师的<Redis设计与实现>,对redis的部分实现有了一个简明的认识: 之前面试的时候被问到了这部分的内容,没有关注,好在还有时间,就把Redis的源码看了一遍. Redis ...

  9. vue(16)vue-cli创建项目以及项目结构解析

    vue-cli创建项目 上一篇我们安装了vue-cli,接下来我们就使用该脚手架进行创建项目 1.进入一个目录,创建项目 创建项目命令如下: vue create <Project Name&g ...

随机推荐

  1. python 元组问题解决

    a = (1,2,{'k1':'b2'}) a[2]['k1'] = 5 print(a) (1, 2, {'k1': 5}) 为什么元素'b2' = 5 应该是元素'k1' = 5 求解 a[2][ ...

  2. Python中使用中文

    python的中文问题一直是困扰新手的头疼问题,这篇文章将给你详细地讲解一下这方面的知识.当然,几乎可以确定的是,在将来的版本中,python会彻底解决此问题,不用我们这么麻烦了. 先来看看pytho ...

  3. 转:靠谱的代码和DRY

    http://www.cppblog.com/vczh/archive/2014/07/15/207658.html 靠谱的代码和DRY 上次有人来要求我写一篇文章谈谈什么代码才是好代码,是谁我已经忘 ...

  4. prototype.js 源码解读(02)

    如果你想研究一些比较大型的js框架的源码的话,本人建议你从其最初的版本开始研读,因为最初的版本东西少,易于研究,而后的版本基本都是在其基础上不断扩充罢了,所以,接下来我不准备完全解读prototype ...

  5. 【Java】WEB-INF目录与META-INF目录的作用

    /WEB-INF/web.xml Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则. /WEB-INF/classes/包含了站点所有用的 class 文件,包括 ser ...

  6. 窗体前端显示(ShowWindowAsync有许多优点)

    H:=FindWindow('Tfrm_MainForm','aa');  if H>0 then  begin    ShowWindowAsync(h,SW_MAX);    SetFore ...

  7. canvas-画图改进版

    前几天在canvas——画板中做了个很简陋的画板,只能画简单的线条,可以选择颜色和线条粗度,今天在此简陋的画板上增加了新的形状,撤销,保存,橡皮擦等功能,虽然功能还是很简单,刚接触canvas,过程中 ...

  8. removeTask

    SystemUI中,Home键调出小刷子杀最近任务,整个流程从其RecentsPanelView.java开始: public void handleSwipe(View view) { ... // ...

  9. SQL Server 2005/2008 触发器的管理和查看

    1.通过可视化操作来管理和查看触发器 在Microsoft SQL Server Management Studio中,选中某一数据库的某一张表时,在“对象资源管理器详细”窗口中有“触发器”项.通过“ ...

  10. Linux学习笔记21——线程同步的两种方式

    一  用信号量同步 1 信号量函数的名字都以sem_开头,线程中使用的基本信号量函数有4个 2 创建信号量 #include<semaphore.h> int sem_init(sem_t ...