ssd 800k iops на чтение и 300k iops на запись, линейная скорость 4.5Гбайт/с и 2Гбайт/с соответственно. тестировали через fio и dd. 4 nvme собраны в mdadm raid10 и на массиве линейная скорость чтения х4, записи х2. аналогичные скорости показывает и наш прикладкой софт генерирующий файлики.
Но, при заливке файлика из ~0.7 млрд строк через clickhouse-client в ReplacingMergeTree видим скорость на уровне 2.68 million rows/s., 48.18 MB/s. Тесты с изменением типа таблиц (Log, MergeTree), с копированием через insert показывают аналогичную скорость. на системе в этот момент латентность дискового ввода-вывода на уровне 40мкс, iowait близок к нулю, clickhouse-server нагружает одно ядро на 0.9, ещё 12 ядер загружены другими процессами, оставшиеся ядра (44 штуки) простаивают (в сервере 2 сокета с камнями по 14 физических ядер).
для теста из raid10 выдернули одну nvme, поставили ext4 (rw,noatime,nodiratime,data=ordered)
и эксперименты проводим на ней.
версия кх - 19.13.5.44, но вроде быв более свежих никаких серьёзных правок по производительности не было.
подскажите в чем может быть дело и куда смотреть?
структура таблицы какая и какая длина primary key? в каком формате вставляете?
Загрузка одного ядра намекает на то что INSERT однопоточный, попробуйте вставлять в 2-10 потоков мы в 6 потоков вставляем в 1 сервер 200М метрик в минуту
А ваш прикладной софт точно может с такой скоростью данные поставлять? Возьмите файлик положите на сервер и скормите клиенту кликхауза, потом тоже самое в паралель в 16 потоков.
да вам наверное надо 40-60 потоков. И возьмите кх из pre-stable 20.... там парсинг файла многопоточный.
Обсуждают сегодня