Использование CONNECT — Общие сведения
Основной характеристикой CONNECT является возможность доступа к данным, разбросанным по машине, как будто это централизованная база данных. Это, а также тот факт, что CONNECT не использует блокировки (файлы данных открываются и закрываются для каждого запроса), делает его очень полезным для импорта или экспорта данных в базу данных MariaDB и для всех типов приложений Business Intelligence. Однако он не подходит для транзакционных приложений.
Например, тип индекса, используемый CONNECT, ближе к индексированию с помощью битовых карт, чем к B-деревьям. Он очень быстрый для извлечения результатов, но не при выполнении обновлений. Фактически, даже если в большой таблице изменится только одно индексированное значение, индекс полностью пересоздаётся (при этом это происходит в четыре-пять раз быстрее, чем для индекса B-дерева). Но обычно в приложениях Business Intelligence файлы не так часто изменяются.
Если вы используете CONNECT для анализа файлов, которые могут быть изменены внешним процессом, индексы, естественно, не изменяются им и устаревают. Используйте команду OPTIMIZE TABLE для их обновления перед использованием таблиц, основанных на них.
Это также означает, что CONNECT не предназначен для использования централизованными серверами, которые в основном используются для транзакций и часто должны работать длительное время без вмешательства человека.
Производительность
Производительность сильно варьируется в зависимости от типа таблицы. Например, таблицы ODBC извлекаются только так же быстро, как и другие СУБД. Если у вас много запросов, лучшим способом оптимизации работы может быть перевод данных из одного типа в другой. К счастью, это очень просто с CONNECT. Таблицы с фиксированными форматами, такие как FIX, BIN или VEC, могут быть созданы из более медленных с помощью команд, таких как:
Create table fastable table_specs select * from slowtable;
FIX и BIN часто являются лучшим выбором, потому что функции ввода-вывода выполняются над блоками из BLOCK_SIZE строк. VEC таблицы могут быть очень эффективными для таблиц, имеющих много столбцов, из которых только несколько используются в каждом запросе. Кроме того, для таблиц разумного размера опция MAPPED часто может ускорить многие запросы.
Заявление CREATE TABLE
Обратите внимание на два основных типа таблиц CONNECT:
| Внутренние | Это таблицы, имя файла которых не указано при создании. Пустой файл получит имя по умолчанию (имя_таблицы.тип_файла) и будет заполняться, как и для других движков. Они не требуют привилегии FILE и могут использоваться для тестирования. |
| Внешние | Это все остальные CONNECT таблицы и доступ к внешним источникам данных или файлам. Это истинные полезные таблицы, но требуют привилегии FILE. |
Заявление DROP TABLE
Для внешних таблиц оператор DROP TABLE просто удаляет определение таблицы, но не удаляет данные таблицы. Однако при удалении внутренней таблицы также удаляются и данные таблицы.
Заявление ALTER TABLE
Будьте осторожны при использовании оператора ALTER TABLE. В настоящее время совместимость данных не проверяется, и изменённое определение может стать несовместимым с данными. В частности, ALTER изменяет только определение таблицы, но не изменяет данные таблицы. Следовательно, тип таблицы не должен изменяться таким образом, за исключением исправления неправильного определения. Также добавление, удаление или изменение столбцов может быть неправильным, потому что значения смещения по умолчанию (если они не указаны явно опцией FLAG) могут быть неправильными при повторной компиляции с отсутствующими столбцами.
Безопасное использование ALTER предназначено для индексов, как мы видели ранее, и для изменения опций, таких как MAPPED или HUGE; это не влияет на формат данных, а только на способ доступа к файлам данных. Изменение опции BLOCK_SIZE допустимо для таблиц FIX, BIN, DBF, разделительных VEC; однако это небезопасно для таблиц VEC, которые не разделены (только один файл данных), так как при их создании размер был оценён как кратное размеру блока. Это может вызвать ошибки, если эта оценка не является кратным новым значению размера блока.
Во всех случаях безопаснее удалить и создать таблицу заново (внешние таблицы) или создать новую из таблицы, которую необходимо изменить.
Обновление и удаление для таблиц файлов
CONNECT может выполнять эти команды, используя два разных алгоритма:
- Он может выполнять это на месте, непосредственно изменяя строки (обновление) или перемещая строки (удаление) внутри файла таблицы. Это быстрый способ сделать это, особенно при использовании индексирования.
- Он может выполнять это с помощью временного файла для внесения изменений. Это необходимо при обновлении таблиц с переменной длиной записей и во всех случаях более безопасно.
Выбор между этими алгоритмами зависит от переменной сеанса connect_use_tempfile.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/using-connect-general-information/