• 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.4

      [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) 4864 6 mysql/innodb_index_stats 6 1 mysql/innodb_table_stats 6 1 mysql/slave_master_info 6 1 mysql/slave_relay_log_info 6 1 mysql/slave_worker_info 6 1 test/t1 8 1 test/test1 6 1 test/test_auto_increment 6 1 test/test_char 6 1 test/test_ci 7 2 test/test_int_n 6 1 test/test_time 6 1 test/test_unsigned 6 1
    查看表t1索引
    [root@localhost data]# innodb_space -s ibdata1 -T test/t1 space-indexes id name root fseg used allocated fill_factor 58 PRIMARY 3 internal 1 1 100.00% 58 PRIMARY 3 leaf 3 3 100.00%
    [root@localhost data]# innodb_space -s ibdata1 -T test/t1 space-indexes        
    id          name                            root        fseg        used        allocated   fill_factor 
    58          PRIMARY                         3           internal    1           1           100.00%     
    58          PRIMARY                         3           leaf        3           3           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 ╭────────────────────────────────────────────────────────────────╮
               0 │███████ │
                 ╰────────────────────────────────────────────────────────────────╯
    
    Legend (█ = 1 page):
           Min LSN <─────────────────────────────────────────> Max LSN     
           2059083 ███████████████████████████████████████████ 2119310  


    $ irb -r innodb > sys = Innodb::System.new("ibdata1") > idx = sys.index_by_name("test/t1", "PRIMARY") > rec = idx.binary_search([1])
    [root@localhost data]# innodb_space -s ibdata1 -T test/test1 space-extents-illustrate
    
      Start Page ╭────────────────────────────────────────────────────────────────╮
               0 │███▁??                                                          │
                 ╰────────────────────────────────────────────────────────────────╯
    
    Legend (█ = 1 page):
      Page Type                                                         Pages    Ratio
      █ System                                                              3   50.00%
      █ Index 62 (test/test1.GEN_CLUST_INDEX)                               1   16.67%
      ? Free space                                                          2   33.33%
    [root@localhost data]# innodb_space -f test/t1.ibd space-page-type-regions
    start       end         count       type                
    0           0           1           FSP_HDR             
    1           1           1           IBUF_BITMAP         
    2           2           1           INODE               
    3           6           4           INDEX               
    7           7           1           FREE (ALLOCATED)    
    [root@localhost data]# innodb_space -f test/t1.ibd -p 3 page-dump
    #<Innodb::Page::Index:0x007f798307d970>:
    
    fil header:
    {:checksum=>2022539217,
     :offset=>3,
     :prev=>nil,
     :next=>nil,
     :lsn=>2119310,
     :type=>:INDEX,
     :flush_lsn=>0,
     :space_id=>35}
    
    page header:
    {:n_dir_slots=>2,
     :heap_top=>162,
     :garbage_offset=>0,
     :garbage_size=>0,
     :last_insert_offset=>154,
     :direction=>:right,
     :n_direction=>2,
     :n_recs=>3,
     :max_trx_id=>0,
     :level=>1,
     :index_id=>58,
     :n_heap=>5,
     :format=>:compact}
    
    fseg header:
    {:leaf=>
      <Innodb::Inode space=<Innodb::Space file="test/t1.ibd", page_size=16384, pages=8>, fseg=2>,
     :internal=>
      <Innodb::Inode space=<Innodb::Space file="test/t1.ibd", page_size=16384, pages=8>, fseg=1>}
    
    sizes:
      header           120
      trailer            8
      directory          4
      free           16210
      used             174
      record            42
      per record     14.00
    
    page directory:
    [99, 112]
    
    system records:
    {:offset=>99,
     :header=>
      {:next=>126,
       :type=>:infimum,
       :heap_number=>0,
       :n_owned=>1,
       :min_rec=>false,
       :deleted=>false,
       :length=>5},
     :next=>126,
     :data=>"infimumx00",
     :length=>8}
    {:offset=>112,
     :header=>
      {:next=>112,
       :type=>:supremum,
       :heap_number=>1,
       :n_owned=>4,
       :min_rec=>false,
       :deleted=>false,
       :length=>5},
     :next=>112,
     :data=>"supremum",
     :length=>8}
    
    garbage records:
    
    records:
    {:format=>:compact,
     :offset=>126,
     :header=>
      {:next=>140,
       :type=>:node_pointer,
       :heap_number=>2,
       :n_owned=>0,
       :min_rec=>true,
       :deleted=>false,
       :length=>5},
     :next=>140}
    
    {:format=>:compact,
     :offset=>140,
     :header=>
      {:next=>154,
       :type=>:node_pointer,
       :heap_number=>3,
       :n_owned=>0,
       :min_rec=>false,
       :deleted=>false,
       :length=>5},
     :next=>154}
    
    {:format=>:compact,
     :offset=>154,
     :header=>
      {:next=>112,
       :type=>:node_pointer,
       :heap_number=>4,
       :n_owned=>0,
       :min_rec=>false,
       :deleted=>false,
       :length=>5},
     :next=>112}
    [root@localhost data]# innodb_space -f test/t1.ibd space-index-pages-summary
    page        index   level   data    free    records 
    3           58      1       42      16210   3       
    4           58      0       7025    9227    1       
    5           58      0       14050   2202    2       
    6           58      0       7025    9227    1       
    7           0       0       0       16384   0 
  • 相关阅读:
    Windows通过DOS命令进入MySQL的方法
    php使用phpqrcode生成二维码
    js字符串转换为Json对象的三种写法
    Linux系统中RPM软件包安装语法
    Linux系统中软件安装方式以及特点
    vue-生存周期
    echart力导向图
    css样式,高斯模糊
    某布局
    跨浏览器兼容
  • 原文地址:https://www.cnblogs.com/zengkefu/p/5596478.html
Copyright © 2020-2023  润新知