2

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

文档中它说 N_COLS= 表中的列数。

那么为什么它为每个表显示 3+ 列?任何的想法?

4

1 回答 1

2

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

你可以在这里查看源代码

于 2012-07-06T14:03:46.690 回答