Тип таблицы CONNECT VEC
Предупреждение: Избегайте использования этого типа таблиц в производственных приложениях. Этот формат файла специфичен для CONNECT и может не поддерживаться в будущих версиях.
Таблицы типа VEC — это двоичные файлы, которые в некоторых случаях могут обеспечить высокую производительность при работе с запросами, ориентированными на чтение. CONNECT организует данные на диске как столбцы значений из одного атрибута, а не как строки табличных записей. Эта организация означает, что при необходимости запросу получить доступ только к нескольким столбцам конкретной таблицы, необходимо будет прочитать только эти столбцы с диска. В то время как в таблице с ориентацией на строки все значения в таблице обычно считываются с диска, что приводит к потере пропускной способности ввода-вывода.
CONNECT предоставляет два встроенных формата VEC, в которых данные каждого столбца расположены рядом.
Встроенные векторные форматы
В этих настоящих вертикальных форматах файлы VEC состоят из всех данных первого столбца, за которыми следуют все данные второго столбца и т. д. Все это может находиться в одном физическом файле, или данные каждого столбца могут храниться в отдельном файле. В первом случае необходимо указать опцию max_rows=m, где m — оценка максимального размера (количества строк) таблицы, чтобы иметь возможность вставить новые записи. Это оставляет пустое пространство после каждой области столбца, в которое можно вставить новые данные. Во втором случае при создании таблицы можно указать опцию «Разделить»[2], и каждый столбец будет храниться в файле, имя которого последовательно формируется из имени файла таблицы и номера столбца. Вставка новых строк может свободно расширять такую таблицу.
Отличия между векторными форматами
Эти форматы соответствуют различным потребностям. Встроенный векторный формат обеспечивает наилучшее повышение производительности. Он будет выбран, когда необходимо оптимизировать скорость решающих запросов.
В случае с единственным файлом вставка новых данных будет ограничена, но потребуется только одно открытие и закрытие файла. Однако размер таблицы нельзя рассчитать по размеру файла из-за потенциального неиспользуемого места в файле. Он должен храниться в заголовке, содержащем максимальное количество строк и текущее количество допустимых строк в таблице. Для этого при создании таблицы укажите опцию Header=n. Если n=1 заголовок будет размещен в начале файла, если n=2 это будет отдельный файл с типом ‘.blk’, и если n=3 заголовок будет размещен в конце файла. Последнее значение предоставляется, поскольку пакетная вставка иногда медленнее, когда заголовок находится в начале файла. Если не указано, значение параметра заголовка по умолчанию будет 2 для этого типа таблиц.
С другой стороны, формат «Разделить» с отдельными файлами не имеет этих проблем и является более безопасным решением, когда таблица должна часто вставляться или использоваться несколькими пользователями.
Например:
create table vtab ( a int not null, b char(10) not null) engine=CONNECT table_type=VEC file_name='vt.vec';
Эта таблица, разделенная по умолчанию, будет иметь значения столбцов в файлах vt1.vec и vt2.vec.
Для векторных таблиц опция block_size=n используется для чтения и записи блоков; однако, чтобы файл состоял из блоков одинакового размера, внутреннее значение опции max_rows=m в конечном итоге увеличивается до кратного n.
Как и для таблиц BIN, числовые значения хранятся с использованием внутреннего расположения платформы, соответствие между типами столбцов и внутренним форматом такое же, как и для стандартных форматов, указанных выше для BIN. Однако форматы полей недоступны для таблиц VEC.
Опция заголовка
Это относится к таблицам VEC, которые не разделены. Поскольку размер файла зависит от значения MAX_ROWS, CONNECT не может узнать, сколько допустимых записей существует в файле. В зависимости от значения опции HEADER эта информация хранится в заголовке, который может быть расположен в начале файла, в конце файла или в отдельном файле с именем fn.blk. Допустимые значения для опции HEADER:
| 0 | По умолчанию 2 для стандартных таблиц и 3 для внутренних таблиц. |
| 1 | Заголовок находится в начале файла. |
| 2 | Заголовок находится в отдельном файле. |
| 3 | Заголовок находится в конце файла. |
Значение 2 можно использовать при работе с файлами, созданными другим приложением без заголовка. Значение 3 иногда ускоряет вставку в файл по сравнению со случаем, когда заголовок находится в начале файла.
Примечание: VEC — это формат файла, специфичный для CONNECT, поэтому преобразование между big endian и little endian не предоставляется. Эти файлы не переносятся между компьютерами, использующими разные настройки порядка байтов.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/connect-vec-table-type/