Spec-Zone.ru › MySQL 5.7

24.4.26 Таблица INFORMATION_SCHEMA INNODB_SYS_VIRTUAL

Таблица INNODB_SYS_VIRTUAL предоставляет метаданные о InnoDB и столбцах, на основе которых построены виртуальные генерируемые столбцы, эквивалентные информации в таблице SYS_VIRTUAL в словаре данных InnoDB.

Строка появляется в таблице INNODB_SYS_VIRTUAL для каждого столбца, на основе которого построен виртуальный генерируемый столбец.

Таблица INNODB_SYS_VIRTUAL содержит следующие столбцы:

  • TABLE_ID

    Идентификатор, представляющий таблицу, связанную с виртуальным столбцом; то же значение, что и INNODB_SYS_TABLES.TABLE_ID.

  • POS

    Значение позиции. Значение велико, потому что оно кодирует номер последовательности столбца и порядковый номер. Используемая для расчета формула использует побитовую операцию:

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

    Например, если первый виртуальный генерируемый столбец в InnoDB экземпляре является третьим столбцом таблицы, формула выглядит как (0 + 1) << 16) + 2. Первый виртуальный генерируемый столбец в InnoDB экземпляре всегда имеет номер 0. Поскольку он является третьим столбцом в таблице, порядковый номер виртуального генерируемого столбца равен 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 |
+----------+-------+----------+
|       95 | 65538 |        0 |
|       95 | 65538 |        1 |
+----------+-------+----------+

Примечания

  • Если константе присвоено значение , как в следующей таблице, запись для столбца не появляется в таблице INNODB_SYS_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_SYS_COLUMNS.

  • Для запроса этой таблицы необходимо иметь привилегию PROCESS.

  • Для просмотра дополнительной информации о столбцах этой таблицы, включая типы данных и значения по умолчанию, используйте таблицу INFORMATION_SCHEMA COLUMNS или оператор SHOW COLUMNS.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/information-schema-innodb-sys-virtual-table.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API