Как я могу улучшить время запуска сервера ClickHouse?

#clickhouse

#clickhouse

Вопрос:

Я оцениваю производительность ClickHouse для потенциального использования в проекте. До этого момента производительность записи была обнадеживающей, но когда я запускал свои тесты и мне пришлось несколько раз перезапускать сервер, я заметил проблему, которая потенциально может стать серьезным препятствием для показа: время запуска сервера колеблется и в большинстве случаев чрезвычайно велико.

Мой сервер оценки содержит 26 баз данных, содержащих около 54 миллиардов записей и занимающих 697,32 ГБ на диске.

При таком объеме данных время запуска увеличилось с 7m35s до почти 3h.

Это нормально? Можно ли решить эту проблему с помощью какой-нибудь более сложной конфигурации? Я делаю что-то действительно неправильно? Потому что в нынешнем виде такое длительное время запуска является препятствием для показа.

Ответ №1:

Основная причина медленного времени запуска связана с гигантским объемом метаданных, которые необходимо загрузить, что положительно коррелирует с количеством файлов данных. Чтобы увеличить время запуска, вам нужно либо уменьшить количество файлов, либо увеличить объем памяти, чтобы сохранить все кеши dentry и inode.

Мой сервер оценки содержит 26 баз данных, содержащих около 54 миллиардов записей и занимающих 697,32 ГБ на диске.

Я бы предложил следующее:

  1. Попробуйте скорректировать текущие схемы разделения данных более грубым образом
  2. Используйте OPTIMIZE TABLE <table> FINAL для сжатия всех файлов данных
  3. Обновите диск с данными до SSD или эффективного RAID или используйте файловые системы, такие как btrfs, для отдельного хранения метаданных в быстродействующем хранилище.

Комментарии:

1. Схема уже настолько мала, насколько это возможно. Если бы это было введено в производство, все было бы сложнее и содержало бы гораздо больший объем данных. Использование OPTIMIZE: «Хотя вы можете выполнить незапланированное слияние с помощью запроса OPTIMIZE, не рассчитывайте на его использование, потому что запрос OPTIMIZE будет считывать и записывать большой объем данных». (из официальной документации ClickHouse clickhouse. яндекс/docs /ru/operations/table_engines /… ). Наконец, обновление до более быстрого диска не является решением. Сервер, содержащий те же данные во InfluxDB, запускается максимум через 1 секунду.

2. Тогда больше нечего делать. github.com/yandex/ClickHouse/blob/master/dbms/src/Storages/… . При запуске ClickHouse считывает несколько файлов для каждой части данных, которые все случайным образом считываются с базового диска. И поскольку скорость запуска не имеет высокого приоритета, я не вижу потенциальных усилий по оптимизации этого процесса в ближайшем будущем.