Mark Cache: Hack Hack Clickhouse Speed, который вы не используете (пока)

Instaclustr спонсировал этот пост.

Clickhouse стала базой данных онлайн-аналитической обработки (OLAP) для разработчиков и инженеров, работающих над высокопроизводительными аналитическими рабочими нагрузками. Это быстрый, легкий, открытый исходный код и специально построенный для производительности в реальном времени в масштабе. Тем не менее, максимизация потенциала Clickhouse занимает больше, чем конфигурации по умолчанию. Если ваша команда полагается на Clickhouse для питания панелей, обработки потоков или аналитике на лету, существует критический внутренний механизм, который стоит настраивать: Mark Cache.

Mark Cache каким -то образом все еще упускается из виду, но он играет основополагающую роль в том, как Clickhouse достигает высокой производительности, особенно при запросе больших наборов данных. При правильном использовании он сокращает время запроса, уменьшает диск ввод/вывода и повышает общую отзывчивость ваших рабочих нагрузок.

Что такое Mark Cache, на самом деле?

По своей сути Mark Cache является оптимизацией памяти, оптимизацией для того, как Clickhouse обращается к данным, хранящимся в его таблицах Mergetree. Clickhouse хранит данные в сжатых файлах, причем каждый файл разделен на «гранулы» (самые маленькие извлекаемые единицы). Эти гранулы индексируются «оценками», или указателями метаданных, которые сообщают Clickhouse, где каждая гранула начинается в сжатом файле. Таким образом, вместо сканирования или декакомпрессии всего файла для выполнения запроса, Clickhouse может перейти непосредственно к данным, которые ему нужны, если он имеет доступ к соответствующим оценкам.

Вот где появляется Mark Cache. Он хранит эти оценки в памяти, поэтому, когда запрос выполняется, Clickhouse может немедленно найти и получить доступ к соответствующему блоку данных, обходя дорогостоящие файловые операции. Если необходимые оценки не в кеше, Clickhouse должен читать и разрабатывать части файла, чтобы найти их, замедляя выполнение.

Почему Mark Cache имеет значение для реального мира

Эффект от маркировки становится особенно очевидным при повторных или высоких рабочих нагрузках, таких как панель, обновляясь каждые несколько секунд, API-интерфейсы нажимают Clickhouse, чтобы заполнить метрики пользователей или потоковые трубопроводы, выполняющие агрегации во временных окнах. Это все сценарии, в которых одни и те же столбцы и диапазоны данных неоднократно доступны.

Всякий раз, когда они это делают, Mark Cache помогает Clickhouse Short Circuit избыточной работы. Он сводит к минимуму объем данных, считываемых с диска, избегает ненужной декомпрессии и сохраняет операции памяти напряженными и предсказуемыми.

Даже за пределами чистой скорости, Mark Cache также способствует повышению эффективности ресурсов. Ограничивая объем доступа к данным, он помогает избежать чрезмерных циклов ЦП и уменьшает споры на диск или сетевом хранилище. Результатом являются более быстрые запросы, меньше нагрузки на систему и лучший опыт для конечных пользователей и приложений, основанных на своевременном понимании.

Настройка кеша Mark для вашей рабочей нагрузки

Clickhouse не автоматически настраивает кеш Mark для ваших конкретных потребностей. Вам нужно настроить его. Ключевая переменная — mark_cache_size, которая устанавливает максимальный объем памяти, который Clickhouse выделяет для хранения отметок. Это не один размер подходит всем. Слишком маленький, и ваш кеш будет постоянно выпускать полезные оценки, что приведет к большему количеству промахов в кешах. Слишком большой, и вы рискуете голодать в ОС, кэш файловой системы или другие компоненты Clickhouse.

Чтобы правильно это правильно, начните с понимания макета данных. Большие таблицы Mergetree со многими частями требуют большего количества баллов для кэширования. Это означает более высокие требования к памяти. Частые запросы против широких таблиц или запросов, которые получают доступ только к нескольким столбцам, но делают это часто, будут больше пользоваться достаточным кешем.

Заборы запросов также играют важную роль. Если пользователи или приложения часто повторяют аналогичные запросы (или если аналитические панели управляющих приводят к повторяющимся моделям доступа), шансы на то, что метки будут использоваться повторно, значительно увеличиваются. В этих случаях инвестирование большего количества памяти в кеш Mark может привести к значительной прибыли от инвестиций.

И последнее, но не менее важное, оцените общую доступную системную память. Производительность Clickhouse зависит от комбинации кеша Mark, несжатого кеша и кэширования уровня ОС. Голодение любого из них может повредить общей производительности. Размеры кеша Mark должны быть выполнены в контексте с вашей более широкой конфигурацией системы. В Instaclustrы мы видим, что в развертываниях производства, так это то, что команды, которые активно отслеживают и регулируют кеш марки на основе поведения рабочей нагрузки, видят измеримые выгоды — не только на скорости, но и в надежности системы и эффективности ресурсов.

Наблюдаемость для мониторинга попаданий и промахов

После того, как кеш Mark включен и размер, следующим шагом является наблюдение. Вам нужно отслеживать, как часто ваши запросы получают выгоду от кэша, а не то, как часто они упускают и возвращаются к доступу на диск.

Clickhouse обеспечивает видимость через System.Events и System.asynchronous_metrics Tables.

Эти внутренние таблицы обнажают полезные счетчики, такие как:

Выберите метрику, значение из system.asynchronous_metrics, где метрика, как «Mark%’1 Select Metric, значение от system.asynchronous_metrics, где метрика, например, hark%’

Это показывает, что как маркировки, и промахиваются, помогая вам понять, действительно ли кэш обеспечивает реальную ценность. Высокая скорость промаха может указывать на то, что ваш кэш неровно или что ваши запросы слишком разнообразны, чтобы извлечь выгоду из кэширования.

Вы также можете отслеживать общее использование памяти с помощью:

Выберите FormatReadablesize (значение) как mark_cache_usage из system.asynchronous_metrics, где metric = «markcachebytes»; 123 Выберите FormatReadableSize (значение) как mark_cache_usagefrom System.asynchronous_metricswhere metric = ‘markcachebytes’;

Если вы используете инструменты наблюдения, такие как Grafana или Prometheus, эти метрики могут быть экспортированы и визуализированы, чтобы обеспечить информацию о производительности кэша в реальном времени. Оповещения могут быть настроены, чтобы предупредить, когда скорости попаданий падают ниже пороговых значений или когда потребление памяти повышается слишком высоко.

Не настраивайтесь в изоляции

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

Лучший подход является целостным. Используйте наблюдаемость, чтобы отслеживать все слои кеша. Поймите, как ваша память разделена. Внесите постепенные изменения и измеряйте их влияние не только с точки зрения хитов кэша, но и общей задержки запроса и системной нагрузки.

Небольшое изменение с огромными результатами

Mark Cache не самая яркая функция в Clickhouse, но именно поэтому он такой мощный. С учетом нескольких корректировок и регулярного мониторинга, он может разблокировать значительные улучшения производительности с минимальными усилиями.

Для инженерных команд масштабируют клик в производстве, настройка кеша Mark может быть разницей между хорошей и отличной производительностью, особенно когда аналитика в реальном времени лежит в основе бизнеса. Независимо от того, доставляете ли вы мониторные панели метрик, питаете аналитику продуктов или включаете потоковые конвейеры данных, Mark Cache — это рычаг Clickhouse, который стоит потянуть.

Instaclustr обеспечивает надежность в масштабе с помощью интегрированной платформы данных с открытым исходным кодом, таких как Apache Cassandra®, Apache Kafka®, Apache Sparktm, Elasticsearchtm, Redistm, Apache Zookeepertm и Postgresql®. Узнайте больше последних из Instaclustr Trending Stories YouTube.com/ThenewStack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Анил Инамдар является глобальным руководителем отдела данных в NetApp Instaclustr, которая предоставляет управляемую платформу вокруг технологий данных с открытым исходным кодом, включая Cassandra, Kafka, Postgres, Clickhouse и Opensearch. Анил имеет более 20 лет опыта работы в ролях данных и аналитики …. Подробнее от Anil Inamdar

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *