innodb结构解析工具---innodb_ruby
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
[root@localhost ~]# gem -v
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.实例:
进入到mysql数据目录:/data [root@localhost data]# innodb_space -s ibdata1 system-spaces
name pages indexes
(system)
mysql/innodb_index_stats
mysql/innodb_table_stats
mysql/slave_master_info
mysql/slave_relay_log_info
mysql/slave_worker_info
test/t1
test/test1
test/test_auto_increment
test/test_char
test/test_ci
test/test_int_n
test/test_time
test/test_unsigned
查看表t1索引
[root@localhost data]# innodb_space -s ibdata1 -T test/t1 space-indexes
id name root fseg used allocated fill_factor
PRIMARY internal 100.00%
PRIMARY leaf 100.00%
[root@localhost data]# innodb_space -s ibdata1 -T test/t1 space-indexes
id name root fseg used allocated fill_factor
PRIMARY internal 100.00%
PRIMARY leaf 100.00%
You have new mail in /var/spool/mail/root
[root@localhost data]# innodb_space -s ibdata1 -T test/t1 space-lsn-age-illustrate Start Page ╭────────────────────────────────────────────────────────────────╮
│███████ │
╰────────────────────────────────────────────────────────────────╯ Legend (█ = page):
Min LSN <─────────────────────────────────────────> Max LSN
███████████████████████████████████████████
$ irb -r innodb
> sys = Innodb::System.new("ibdata1")
> idx = sys.index_by_name("test/t1", "PRIMARY")
> rec = idx.binary_search([])
[root@localhost data]# innodb_space -s ibdata1 -T test/test1 space-extents-illustrate Start Page ╭────────────────────────────────────────────────────────────────╮
│███▁?? │
╰────────────────────────────────────────────────────────────────╯ Legend (█ = page):
Page Type Pages Ratio
█ System 50.00%
█ Index (test/test1.GEN_CLUST_INDEX) 16.67%
? Free space 33.33%
[root@localhost data]# innodb_space -f test/t1.ibd space-page-type-regions
start end count type
FSP_HDR
IBUF_BITMAP
INODE
INDEX
FREE (ALLOCATED)
[root@localhost data]# innodb_space -f test/t1.ibd -p page-dump
#<Innodb::Page::Index:0x007f798307d970>: fil header:
{:checksum=>,
:offset=>,
:prev=>nil,
:next=>nil,
:lsn=>,
:type=>:INDEX,
:flush_lsn=>,
:space_id=>} page header:
{:n_dir_slots=>,
:heap_top=>,
:garbage_offset=>,
:garbage_size=>,
:last_insert_offset=>,
:direction=>:right,
:n_direction=>,
:n_recs=>,
:max_trx_id=>,
:level=>,
:index_id=>,
:n_heap=>,
:format=>:compact} fseg header:
{:leaf=>
<Innodb::Inode space=<Innodb::Space file="test/t1.ibd", page_size=, pages=>, fseg=>,
:internal=>
<Innodb::Inode space=<Innodb::Space file="test/t1.ibd", page_size=, pages=>, fseg=>} sizes:
header
trailer
directory
free
used
record
per record 14.00 page directory:
[, ] system records:
{:offset=>,
:header=>
{:next=>,
:type=>:infimum,
:heap_number=>,
:n_owned=>,
:min_rec=>false,
:deleted=>false,
:length=>},
:next=>,
:data=>"infimum\x00",
:length=>}
{:offset=>,
:header=>
{:next=>,
:type=>:supremum,
:heap_number=>,
:n_owned=>,
:min_rec=>false,
:deleted=>false,
:length=>},
:next=>,
:data=>"supremum",
:length=>} garbage records: records:
{:format=>:compact,
:offset=>,
:header=>
{:next=>,
:type=>:node_pointer,
:heap_number=>,
:n_owned=>,
:min_rec=>true,
:deleted=>false,
:length=>},
:next=>} {:format=>:compact,
:offset=>,
:header=>
{:next=>,
:type=>:node_pointer,
:heap_number=>,
:n_owned=>,
:min_rec=>false,
:deleted=>false,
:length=>},
:next=>} {:format=>:compact,
:offset=>,
:header=>
{:next=>,
:type=>:node_pointer,
:heap_number=>,
:n_owned=>,
:min_rec=>false,
:deleted=>false,
:length=>},
:next=>}
[root@localhost data]# innodb_space -f test/t1.ibd space-index-pages-summary
page index level data free records
innodb结构解析工具---innodb_ruby的更多相关文章
- Win32汇编-编写PE结构解析工具
汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地 ...
- 手写PE结构解析工具
PE格式是 Windows下最常用的可执行文件格式,理解PE文件格式不仅可以了解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,而有些技术必须建立在了解PE文件格式的基础上,如 ...
- Golang Json文件解析为结构体工具-json2go
代码地址如下:http://www.demodashi.com/demo/14946.html 概述 json2go是一个基于Golang开发的轻量json文件解析.转换命令行工具,目前支持转换输出到 ...
- MySQL Binlog 解析工具 Maxwell 详解
maxwell 简介 Maxwell是一个能实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis.RabbitMQ.Redis.Goog ...
- (转)AVI文件格式解析+AVI文件解析工具
AVI文件解析工具下载地址:http://download.csdn.net/detail/zjq634359531/7556659 AVI(Audio Video Interleaved的缩写)是一 ...
- Redis源码剖析--源码结构解析
请持续关注我的个人博客:https://zcheng.ren 找工作那会儿,看了黄建宏老师的<Redis设计与实现>,对redis的部分实现有了一个简明的认识.在面试过程中,redis确实 ...
- InfluxDB源码目录结构解析
操作系统 : CentOS7.3.1611_x64 go语言版本:1.8.3 linux/amd64 InfluxDB版本:1.1.0 influxdata主目录结构 [root@localhost ...
- redis源代码结构解析
看了黄建宏老师的<Redis设计与实现>,对redis的部分实现有了一个简明的认识: 之前面试的时候被问到了这部分的内容,没有关注,好在还有时间,就把Redis的源码看了一遍. Redis ...
- vue(16)vue-cli创建项目以及项目结构解析
vue-cli创建项目 上一篇我们安装了vue-cli,接下来我们就使用该脚手架进行创建项目 1.进入一个目录,创建项目 创建项目命令如下: vue create <Project Name&g ...
随机推荐
- 浅谈Exchange 2013开发-如何操作邮件的附件
因为项目中客户有一个的要求,所以这个Exchange前段时间搞的我很是头疼,没接触过这个东西,但是现在看来,纸老虎一个.希望我的经验可以帮助初次接触它的人少走一些弯路! 简单介绍一下:客户要求在自己的 ...
- ios开发之C语言第一天
最近在学习ios开发,先学习C语言,再学习OC和swift.正所谓"万丈高楼平地起",打好基础是很重要的,所以C语言也必须好好学习.学习中所使用的操作系统是OS X,开发工具是Xc ...
- PAT (Basic Level) 1001害死人不偿命的(3n+1)猜想 (15)
卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到n=1.卡拉兹在1950年的世界数 ...
- struts中如何将前台的值能在action中获取到
如何获取值----三种方式(属性驱动,对象驱动,模型驱动) A:属性驱动 必须生成get,set方法 B:对象驱动 给对象也必须生成get,set方法 c模型驱动 模型驱动需要action去实现 ...
- 一个C++程序员学习C#语言
感悟:C++是一门语法非常严谨的语言,只是指针就很难掌握,这其中肯定要经历很多折腾,特别是自学者. 折腾了一年半的C++,在即将毕业之际,对Unity3d游戏开发感兴趣,先是用cocos2dx开发了个 ...
- bzoj 2594: [Wc2006]水管局长数据加强版 动态树
2594: [Wc2006]水管局长数据加强版 Time Limit: 25 Sec Memory Limit: 128 MBSubmit: 934 Solved: 291[Submit][Sta ...
- 关于 width;height
IE Firefox Chrome Safari window(width|height) no yes yes document.body document.documentElement 网页 ...
- Ext.Ajax.request同步请求
导读: ajax分为2种,一种是同步,一种是异步同步:代码执行完了之后才执行后面的代码 异步:代码刚执行,后面的代码就马上接着执行了,不管前面的代码是否执行完异步的情况下,要获得返回信息,就需要在异步 ...
- delphi 连接 c++ builder 生成obj文件
delphi 连接 c++ builder 生成obj文件 delphi 可以连接c++ builder 生成OMF格式的obj文件,会报一个错.[DCC Error] E2065 Unsatisfi ...
- 经典的单例模式c3p0来控制数据库连接池
package com.c3p0.datapools; //数据库连接池 单例模式 import java.sql.Connection; import java.sql.SQLException; ...