innodb结构解析工具---innodb_ruby

后端开发   发布日期:2025年06月28日   浏览次数:361

 

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的详细内容,更多关于innodb结构解析工具---innodb_ruby的资料请关注九品源码其它相关文章!