当前位置: 首页 > 工具软件 > innodb_ruby > 使用案例 >

innodb_ruby 详解

卫招
2023-12-01

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

安装

以Ubuntu系统为例

  • 安装 ruby2.2+
    innodb_ruby依赖 ruby2.2以上版本
apt install ruby
  • 安装 innodb_ruby
sudo gem install innodb_ruby

安装过程异常问题

  • /usr/bin/ruby2.5: No such file or directory – /usr/share/rubygems-integration/all/gems/rake-12.3.1/exe/rake (LoadError)
    解决:gem install rake
  • mkmf.rb can’t find header files for ruby at /usr/lib/ruby/include/ruby.h
    解决:apt install ruby-dev

使用

innodb_ruby提供了innodb_space命令,可查看空间文件结构、页结构、索引结构等等等等…
可执行innodb_space --help 查看命令帮助。

innodb_space <options> <mode>

<options> 选项

OptionParametersDescriptionDesc_zh
-s<filename>Load the system tablespace file (e.g. ibdata1);指定系统表空间文件
-T<table name>Use the given table name.指定表名
-I (i 的大写)<index name>Use the given index name.指定索引名
-f<filename>Load the tablespace file (system or table).指定表空间文件
-p<pagenum>指定页码
-R<offset>指定记录偏移量
-l (L 的小写)<level>指定级别

<mode> 模式

Innodb存储概念:表空间(系统表空间、独立表空间) > (区段) > (页面)

Space File Structure

system-spaces

列出系统中所有可用的表空间,包括一些基本统计信息。

innodb_space -s ibdata1 system-spaces

space-indexes

列出空间中可用的所有索引(系统空间或独立表空间的文件):

innodb_space -s ibdata1 -T sakila/film space-indexes

space-page-type-regions

遍历空间中的所有页面,并打印合并到相同类型页面的“区域”中的页面类型摘要:

innodb_space -s ibdata1 -T sakila/film space-page-type-regions

space-page-type-summary

遍历所有页面并按类型打印总页数的摘要:

innodb_space -s ibdata1 -T sakila/film space-page-type-summary

space-extents-illustrate

展示空间中所有区段内的所有页面,为每个页面显示一个着色块(按索引/用途着色),根据页面中的数据量调整大小:

innodb_space -s ibdata1 -T sakila/film space-extents-illustrate

space-lsn-age-illustrate

展示空间中所有区段内的所有页面,显示一个彩色块(按页面修改 LSN 的年龄着色):

innodb_space -s ibdata1 -T sakila/payment space-lsn-age-illustrate

Page Structure

page-account

给定任何页码,展示该页的用途(对于大多数结构):

innodb_space -s ibdata1 -T sakila/film -p 3 page-account

page-dump

智能转储页面内容,包括 innodb_ruby 理解的大多数结构的表示:

innodb_space -s ibdata1 -T sakila/film -p 3 page-dump

page-records

汇总页面中的所有记录:

innodb_space -s ibdata1 -T sakila/film -p 3 page-records

page-directory-summary

转储页面目录的内容:

innodb_space -s ibdata1 -T sakila/film -p 7 page-directory-summary

page-illustrate

说明页面内容:

innodb_space -s ibdata1 -T sakila/film -p 7 page-illustrate

Index Structure

index-recurse

通过跟踪整个 B+Tree(通过递归扫描所有页面,而不仅仅是通过列表扫描叶子页面)来递归索引(执行完整索引扫描):

innodb_space -s ibdata1 -T sakila/film -I PRIMARY index-recurse

index-record-offsets

像 index-recurse 一样递归索引,但打印索引页中每条记录的偏移量:

innodb_space -s ibdata1 -T sakila/film -I PRIMARY index-record-offsets

index-level-summary

打印给定级别的所有索引页的摘要:

innodb_space -s ibdata1 -T sakila/film -I PRIMARY -l 0 index-level-summary

Record Structure

record-dump

给定记录偏移量,转储记录及其包含的数据的详细描述:

innodb_space -s ibdata1 -T sakila/film -p 7 -R 128 record-dump

Record History

record-history

总结记录的历史记录(撤消日志):

innodb_space -s ibdata1 -T sakila/film -p 7 -R 128 record-history

示例

  1. 查看你数据库的存储文件在哪里
mysql> show variables like 'datadir%';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.00 sec)
  1. 进入存储文件的目录
cd /var/lib/mysql/

查看页分区

innodb_space -s ibdata1 -T test/record_format_demo space-page-type-regions

查看具体页中的记录

innodb_space -s ibdata1 -T test/record_format_demo -p 3 page-records

reference:
https://blog.csdn.net/weixin_34368949/article/details/91381989

 类似资料: