Производительность и оптимизация
В этом разделе приведены рекомендации и лучшие практики по улучшению производительности при работе с ClickHouse. Мы рекомендуем пользователям сначала ознакомиться с разделом Основные концепции, в котором рассмотрены ключевые понятия, необходимые для оптимизации производительности.
| Topic | Description |
|---|---|
| Query optimization guide | Начните отсюда, чтобы освоить основы оптимизации запросов, включая типовые сценарии и приёмы повышения производительности для ускорения выполнения запросов. |
| Primary indexes advanced guide | Подробный разбор уникальной разреженной системы первичных индексов ClickHouse, её отличий от традиционных СУБД и лучших практик построения оптимальных индексов. |
| Query parallelism | Узнайте, как ClickHouse распараллеливает выполнение запросов с помощью processing lanes и настройки max_threads, а также как анализировать и оптимизировать параллельное выполнение. |
| Partitioning key | Освойте выбор ключа партиционирования, чтобы значительно повысить производительность запросов за счёт эффективного отсечения сегментов данных и избегания типичных ошибок партиционирования. |
| Data skipping indexes | Стратегически применяйте вторичные индексы для пропуска нерелевантных блоков данных и ускорения фильтрующих запросов по неключевым столбцам. |
PREWHERE optimization | Разберитесь, как PREWHERE автоматически снижает нагрузку на I/O, отфильтровывая данные до чтения ненужных столбцов, а также как отслеживать эффективность этого механизма. |
| Bulk inserts | Максимизируйте пропускную способность ингестии и снижайте накладные расходы на ресурсы за счёт эффективной пакетной вставки данных. |
| Asynchronous inserts | Повышайте производительность вставок, используя серверное пакетирование для уменьшения сложности на стороне клиента и увеличения пропускной способности при частых вставках. |
| Avoid mutations | Проектируйте процессы «только на добавление» (append-only), исключая дорогостоящие операции UPDATE и DELETE при сохранении точности данных и производительности. |
| Avoid nullable columns | Снижайте объём хранения и улучшайте производительность запросов, используя значения по умолчанию вместо столбцов типа Nullable, когда это возможно. |
Avoid OPTIMIZE FINAL | Разберитесь, когда следует и когда не следует использовать OPTIMIZE TABLE FINAL. |
| Analyzer | Используйте новый анализатор запросов ClickHouse для выявления узких мест производительности и оптимизации планов выполнения запросов для повышения эффективности. |
| Query profiling | Применяйте профилировщик запросов на основе выборки (sampling query profiler) для анализа шаблонов выполнения запросов, выявления горячих точек производительности и оптимизации использования ресурсов. |
| Query cache | Ускоряйте часто выполняемые запросы SELECT с помощью включения и настройки встроенного кэша результатов запросов в ClickHouse. |
| Testing hardware | Запускайте бенчмарки производительности ClickHouse на любом сервере без установки, чтобы оценить характеристики оборудования. (Не применимо к ClickHouse Cloud) |