文章目录
- 1、介绍
- 2、测试
-
- [2.1、进入服务器中的 /var/lib/mysql/atguigu/](#2.1、进入服务器中的 /var/lib/mysql/atguigu/)
- [2.2、查看有主键的表 stu](#2.2、查看有主键的表 stu)
- [2.3、查看没有主键的表 employee](#2.3、查看没有主键的表 employee)
-
- [2.3.1、创建表 employee](#2.3.1、创建表 employee)
- 2.3.2、查看表结构及其其中的字段信息
1、介绍
sql
+----+-----+-------+
| id | age | name |
+----+-----+-------+
| 1 | 1 | Jsp |
| 3 | 3 | cat |
| 8 | 8 | rose |
| 11 | 11 | jetty |
| 19 | 19 | lily |
| 25 | 25 | luci |
+----+-----+-------+
当我们创建了上面的这张表,我们在查看表结构
的时候,就可以显式的看到这三个字段。 实际上除了这三个字段以外,InnoDB还会自动的给我们添加三个隐藏字段
及其含义分别是:
隐藏字段 | 含义 |
---|---|
DB_TRX_ID(Database Transaction Identifier )数据库事务标识符 |
最近修改事务ID,记录插入这条记录或最后一次修改该记录的事务ID |
DB_ROLL_PTR (Database Rollback Pointer )数据库回滚指针 |
回滚指针,指向这条记录的上一个版本,用于配合 undo log,指向上一个版本 |
DB_ROW_ID(Database Row Identifier ) 数据库行标识符 |
隐藏主键,如果表结构没有指定主键 ,将会生成该隐藏字段 |
而上述的前两个字段是肯定会添加的, 是否添加最后一个字段DB_ROW_ID,得看当前表有没有主键,
如果有主键,则不会添加该隐藏字段。
2、测试
2.1、进入服务器中的 /var/lib/mysql/atguigu/
sql
[root@localhost ~]# cd /var/lib/mysql/atguigu
[root@localhost atguigu]# ll
总用量 4149624
-rw-r-----. 1 mysql mysql 114688 6月 29 17:06 account.ibd
-rw-r-----. 1 mysql mysql 131072 6月 29 12:57 course.ibd
-rw-r-----. 1 mysql mysql 131072 6月 29 21:50 stu.ibd
-rw-r-----. 1 mysql mysql 4127195136 6月 28 19:53 tb_sku.ibd
-rw-r-----. 1 mysql mysql 121634816 6月 28 19:23 tb_user.ibd
[root@localhost atguigu]#
2.2、查看有主键的表 stu
bash
[root@localhost atguigu]# ibd2sdi stu.ibd
ibd2sdi (index binary directory to space dictionary index)
索引二进制目录到空间字典索引
2.3、查看没有主键的表 employee
2.3.1、创建表 employee
sql
mysql> create table employee (id int , name varchar(10));
Query OK, 0 rows affected (0.02 sec)
mysql> select * from employee;
Empty set (0.00 sec)
mysql>
2.3.2、查看表结构及其其中的字段信息
bash
[root@localhost atguigu]# ibd2sdi employee.ibd