我刚刚安装了 MySQL 5.6 开发版本,以检查 Performance_schema 和 information_schema 的一些改进。而且,我发现了这个 -
sakila.actor 表中有 4 列。从 information_schema.INNODB_SYS_TABLES 列 N_COLS 检查,显示参与者为 7,而不是 4。我可以看到,对于每个表,N_COLS 显示 3+列。
sakila. Actor -
CREATE TABLE `actor` (
`actor_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`first_name` varchar(256) NOT NULL,
`last_name` varchar(45) NOT NULL,
`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`actor_id`),
KEY `last_name` (`last_name`,`actor_id`)
) ENGINE=InnoDB
从information_schema
中选择*。INNODB_SYS_TABLES
;
TABLE_ID NAME FLAG N_COLS SPACE
-------- ------------------------ ------ ------ --------
11 SYS_FOREIGN 0 7 0
12 SYS_FOREIGN_COLS 0 7 0
38 sakila/actor 1 7 0
39 sakila/actor_info 1 7 0
来自docs它说 N_COLS= 表中的列数。
那么为什么每个表都显示 3 个以上的列呢?有什么想法吗?
最佳答案
我在网上找到了这个,这是因为InnoDB添加了三个隐藏列(DB_ROW_ID,DB_TRX_ID,DB_ROLL_PTR)
你可以看看源码here
关于mysql - 为什么 INNODB_SYS_TABLES.N_COLS 显示每个表有 3 个以上的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11363305/