MySQL 8.0 リファレンスマニュアル


26.51.30 INFORMATION_SCHEMA INNODB_VIRTUAL テーブル

INNODB_VIRTUAL テーブルは、InnoDB virtual generated columns および仮想生成カラムのベースとなるカラムに関するメタデータを提供します。

仮想生成カラムの基になるカラムごとに、INNODB_VIRTUAL テーブルに行が表示されます。

INNODB_VIRTUAL テーブルには、次のカラムがあります:

  • TABLE_ID

    仮想カラムに関連付けられたテーブルを表す識別子 (INNODB_TABLES.TABLE_ID と同じ値)。

  • POS

    virtual generated column の位置値。 カラムの順序番号と順序位置がエンコードされるため、値は大きくなります。 値の計算に使用される式では、ビット単位の演算が使用されます:

    ((nth virtual generated column for the InnoDB instance + 1) << 16)
    + the ordinal position of the virtual generated column

    たとえば、InnoDB インスタンスの最初の仮想生成カラムがテーブルの 3 番目のカラムである場合、式は (0 + 1) << 16) + 2 です。 InnoDB インスタンスの最初の仮想生成カラムは常に数値 0 です。 テーブルの 3 番目のカラムとして、仮想生成カラムの順序位置は 2 です。 序数の位置は 0 からカウントされます。

  • BASE_POS

    仮想生成カラムのベースとなるカラムの順序位置。

mysql> CREATE TABLE `t1` (
         `a` int(11) DEFAULT NULL,
         `b` int(11) DEFAULT NULL,
         `c` int(11) GENERATED ALWAYS AS (a+b) VIRTUAL,
         `h` varchar(10) DEFAULT NULL
       ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_VIRTUAL
       WHERE TABLE_ID IN
         (SELECT TABLE_ID FROM INFORMATION_SCHEMA.INNODB_TABLES
          WHERE NAME LIKE "test/t1");
+----------+-------+----------+
| TABLE_ID | POS   | BASE_POS |
+----------+-------+----------+
|       98 | 65538 |        0 |
|       98 | 65538 |        1 |
+----------+-------+----------+

メモ

  • 次のテーブルに示すように、定数値が virtual generated column に割り当てられている場合、そのカラムのエントリは INNODB_VIRTUAL テーブルに表示されません。 エントリを表示するには、仮想生成カラムにベースカラムが必要です。

    CREATE TABLE `t1` (
      `a` int(11) DEFAULT NULL,
      `b` int(11) DEFAULT NULL,
      `c` int(11) GENERATED ALWAYS AS (5) VIRTUAL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

    ただし、このようなカラムのメタデータは INNODB_COLUMNS テーブルに表示されます。

  • このテーブルをクエリーするには PROCESS 権限が必要です。

  • INFORMATION_SCHEMA COLUMNS テーブルまたは SHOW COLUMNS ステートメントを使用して、データ型やデフォルト値など、このテーブルのカラムに関する追加情報を表示します。


関連キーワード:  テーブル, SCHEMA, INFORMATION, INNODB, カラム, TABLE, InnoDB, VIRTUAL, DEFAULT, 仮想