#clickhouse
#clickhouse
Вопрос:
Я оцениваю производительность ClickHouse для потенциального использования в проекте. До этого момента производительность записи была обнадеживающей, но когда я запускал свои тесты и мне пришлось несколько раз перезапускать сервер, я заметил проблему, которая потенциально может стать серьезным препятствием для показа: время запуска сервера колеблется и в большинстве случаев чрезвычайно велико.
Мой сервер оценки содержит 26 баз данных, содержащих около 54 миллиардов записей и занимающих 697,32 ГБ на диске.
При таком объеме данных время запуска увеличилось с 7m35s до почти 3h.
Это нормально? Можно ли решить эту проблему с помощью какой-нибудь более сложной конфигурации? Я делаю что-то действительно неправильно? Потому что в нынешнем виде такое длительное время запуска является препятствием для показа.
Ответ №1:
Основная причина медленного времени запуска связана с гигантским объемом метаданных, которые необходимо загрузить, что положительно коррелирует с количеством файлов данных. Чтобы увеличить время запуска, вам нужно либо уменьшить количество файлов, либо увеличить объем памяти, чтобы сохранить все кеши dentry и inode.
Мой сервер оценки содержит 26 баз данных, содержащих около 54 миллиардов записей и занимающих 697,32 ГБ на диске.
Я бы предложил следующее:
- Попробуйте скорректировать текущие схемы разделения данных более грубым образом
- Используйте
OPTIMIZE TABLE <table> FINAL
для сжатия всех файлов данных - Обновите диск с данными до 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 считывает несколько файлов для каждой части данных, которые все случайным образом считываются с базового диска. И поскольку скорость запуска не имеет высокого приоритета, я не вижу потенциальных усилий по оптимизации этого процесса в ближайшем будущем.