Это 20-й день моего участия в августовском испытании обновлений. Узнайте подробности события:Испытание августовского обновления
хранилище строк
- Данные хранятся в строках
- Запросы без индексации потребляют много операций ввода-вывода.
- Создание индексов и представлений требует определенного количества физического пространства и временных ресурсов.
- Перед лицом большого количества запросов база данных сложных запросов должна быть сильно раздута, чтобы соответствовать требованиям производительности.
столбчатое хранилище
- Данные хранятся в столбцах, каждый столбец хранится отдельно
- Доступ только к столбцам, участвующим в запросе, значительно сокращает системный ввод-вывод.
- Согласованный тип данных, схожие характеристики данных и эффективное сжатие
Преимущества столбчатого хранилища
- Сценарии анализа часто требуют чтения большого количества строк, но нескольких столбцов. В режиме хранения строк данные хранятся непрерывно в строках, данные всех столбцов хранятся в блоке, а столбцы, которые не участвуют в расчете, должны быть считаны во время ввода-вывода, причем операция чтения сильно усиливается. В режиме хранения столбцов необходимо считывать только столбцы, участвующие в расчете, что значительно снижает количество операций ввода-вывода. стоимость, что ускоряет запрос.
- Данные в одном и том же столбце относятся к одному типу, и эффект сжатия значителен. Хранилище столбцов часто имеет коэффициент сжатия в десять раз или даже больше, что позволяет сэкономить много места для хранения и снизить затраты на хранение.
- Более высокая степень сжатия означает меньший размер данных, и для чтения соответствующих данных с диска требуется меньше времени.
- Бесплатный выбор алгоритма сжатия. Данные разных столбцов имеют разные типы данных, и применяемые алгоритмы сжатия также различаются. Вы можете выбрать наиболее подходящий алгоритм сжатия для разных типов столбцов.
- Высокая степень сжатия означает, что память того же размера может хранить больше данных, а эффект системного кэша лучше.
Официальные данные показывают, что при использовании колоночного хранилища в некоторых сценариях анализа можно получить эффект ускорения в 100 и более раз.
Сравнение преимуществ и недостатков хранения строк и столбцов
Контраст | хранилище строк | хранилище столбцов |
---|---|---|
написать производительность | Написание людей выполняется за один раз, с более высокой производительностью | Разделение строки записей на один столбец для сохранения, количество операций записи значительно больше, чем при хранении строк, а фактическое затраченное время больше, чем хранение строк. |
производительность чтения | При чтении нескольких столбцов необходимо просмотреть другие нерелевантные столбцы, а накладные расходы ввода-вывода велики; при чтении всей строки данных ее можно читать последовательно, и производительность высока. | При чтении нескольких столбцов нет необходимости читать нерелевантные столбцы, и производительность высокая, при чтении всей строки все столбцы нужно читать отдельно и собирать в строки, что имеет низкую производительность |
Сжатие данных | Каждая строка данных хранится вместе с низким сжатием | Храните данные в единицах столбца, что делает данные одного типа хранимыми вместе, удобными для алгоритмов сжатия и высокой степени сжатия. |
типичный представитель | Текстовый файл, файл последовательности и т. д. | ORC, ПАРКЕТ, Carbon Data и т.д. |
Сравнение производительности хранилища строк и хранилища столбцов
- хранилище строк
- хранилище столбцов
Изображение взято с официального сайта ClickHouse, пожалуйста, обратитесь к моему блогу о ClickHouse——Что такое ClickHouse? В чем особенности ClickHouse?