2

performance_schema と information_schema の改善を確認するために、MySQL 5.6 開発リリース ビルドをインストールしました。そして、私はこれを見つけました-

sakila.actor テーブルには 4 つの列があります。information_schema.INNODB_SYS_TABLES column-N_COLS から確認すると、actor が 4 ではなく 7 と表示されます。各テーブルの 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_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

ドキュメントからN_COLS= The number of columns in the table と書かれています。

では、なぜすべてのテーブルに 3 つ以上の列が表示されるのでしょうか? 何か案が?

4

1 に答える 1

2

インターネットでこれを見つけました。これは、InnoDB が 3 つの非表示の列 (DB_ROW_ID、DB_TRX_ID、DB_ROLL_PTR) を追加するためです。

ここでソースを見ることができます

于 2012-07-06T14:03:46.690 に答える