为什么INNODB_SYS_TABLES.N_COLS为每个表显示3 +列?

时间:2012-07-06 13:38:42

标签: mysql innodb

我刚刚安装了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

SELECT * FROM information_schemaINNODB_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 +列?有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我在互联网上找到了这个,这是因为InnoDB添加了三个隐藏列(DB_ROW_ID,DB_TRX_ID,DB_ROLL_PTR)

您可以查看来源here