Spec-Zone.ru › MariaDB

Внутреннее устройство хранилища S3

MariaDB, начиная с 10.5

Поддержка хранилища S3 доступна начиная с MariaDB 10.5.4.

Хранилище S3 основано на коде Aria. Внутренне хранилище S3 наследуется от кода Aria, с добавленными крючками, которые изменяют чтение данных, чтобы вместо чтения с локального диска, данные считывались из S3.

Движок S3 использует свой собственный кэш страниц, модифицированный для обработки чтения блоков из S3 (размером s3_block_size). Внутренне кэш страниц S3 использует страницы размером aria-block-size для разделения блоков, считываемых из S3.

ALTER TABLE

ALTER TABLE сначала создаст локальную таблицу в обычном формате Aria на диске, а затем переместит как индексы, так и данные в S3 в корзинах размером S3_BLOCK_SIZE. Файл .frm также копируется в S3 для обнаружения другими серверами MariaDB. Также можно использовать ALTER TABLE для изменения структуры таблицы S3.

Разбиение таблиц

Начиная с MariaDB 10.5.3, таблицы S3 также могут использоваться с разбиением таблиц. Все операции ALTER PARTITION поддерживаются, за исключением:

  • REBUILD PARTITION
  • TRUNCATE PARTITION
  • REORGANIZE PARTITION

Крупные чтения

Одним из свойств многих реализаций S3 является предпочтительность крупных чтений. Считается, что размер 4М обеспечивает наилучшую производительность, поэтому значение по умолчанию для S3_BLOCK_SIZE составляет 4М.

Сжатие

Если используется сжатие (COMPRESSION_ALGORITHM=zlib), то все блоки индексов и данные блоков сжимаются. Файл .frm и заголовок определения Aria (первая страница/страницы в файле индекса) не сжимаются, так как они используются для обнаружения/открытия.

Если используется сжатие, то размер локального блока S3_BLOCK_SIZE, но размер блока, хранящегося в S3, будет равен размеру сжатого блока.

Средний уровень сжатия, который мы наблюдали, составляет около 80% экономии места.

Структура, хранящаяся в S3

Таблица будет скопирована в S3 в следующих расположениях:

frm file (for discovery):
s3_bucket/database/table/frm

First index block (contains description of the Aria file):
s3_bucket/database/table/aria

Rest of the index file:
s3_bucket/database/table/index/block_number

Data file:
s3_bucket/database/table/data/block_number

block_number — шестнадцатизначное десятичное число, с префиксом 0 (Может быть больше 6 цифр, префикс используется для удобства вывода).

Использование инструмента awsctl Python для проверки данных

Установка awsctl на Linux

# install python-pip (on an OpenSuse distribution)
# use the appropriate command for your distribution
zypper install python-pip
pip install --upgrade pip

# the following installs awscli tools in ~/.local/bin
pip install --upgrade --user awscli
export PATH=~/.local/bin:$PATH

# configure your aws credentials
aws configure

Использование инструмента awsctl

Можно использовать инструмент aws python для просмотра того, как данные хранятся в S3:

shell> aws s3 ls --recursive s3://mariadb-bucket/
2019-05-10 17:46:48       8192 foo/test1/aria
2019-05-10 17:46:49    3227648 foo/test1/data/000001
2019-05-10 17:46:48        942 foo/test1/frm
2019-05-10 17:46:48    1015808 foo/test1/index/000001

Чтобы удалить устаревшую таблицу foo.test1, можно выполнить:

shell> ~/.local/bin/aws s3 rm --recursive s3://mariadb-bucket/foo/test1
delete: s3://mariadb-bucket/foo/test1/aria
delete: s3://mariadb-bucket/foo/test1/data/000001
delete: s3://mariadb-bucket/foo/test1/frm
delete: s3://mariadb-bucket/foo/test1/index/000001

См. также

  • Использование хранилища S3
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не предварительно проверяется MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают взгляды MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/s3-storage-engine-internals/

Spec-Zone.ru

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