Управление пользователями ClickHouse
Вы можете добавлять и удалять пользователей, а также управлять их индивидуальными настройками.
Вы можете управлять пользователями кластера одним из двух способов:
- С помощью стандартных интерфейсов Yandex.Cloud (CLI, API, консоль управления). Способ подходит, если вы хотите воспользоваться всеми возможностями managed-сервиса Yandex.Cloud.
- С помощью SQL-запросов к кластеру. Способ подходит, если вы хотите использовать уже существующее у вас решение для создания и управления пользователями или если вам требуется поддержка RBAC.
Управление пользователями с помощью SQL
Чтобы управлять пользователями с помощью SQL, создайте кластер через API с включенной настройкой sqlUserManagement. В таком кластере:
- Пользователями можно управлять только с помощью SQL.
- Невозможно включить управление с помощью стандартных интерфейсов Yandex.Cloud (CLI, API, консоль управления).
- Управление осуществляется с помощью учетной записи
admin
. Пароль для нее задается при создании кластера.
Подробнее об управлении пользователями с помощью SQL см. в документации ClickHouse.
Получить список пользователей
- Перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
- Нажмите на имя нужного кластера, затем выберите вкладку Пользователи.
Если у вас еще нет интерфейса командной строки Yandex.Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы получить список пользователей кластера, выполните команду:
$ yc managed-clickhouse user list
--cluster-name=<имя кластера>
Имя кластера можно запросить со списком кластеров в каталоге.
-
Подключитесь к кластеру, используя учетную запись
admin
. -
Получите список пользователей:
SHOW USERS;
Добавить пользователя
Чтобы создать пользователя в кластере:
- Перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
- Нажмите на имя нужного кластера и выберите вкладку Пользователи.
- Нажмите кнопку Добавить.
- Введите имя пользователя базы данных и пароль (от 8 до 128 символов).
- Выберите одну или несколько баз данных, к которым должен иметь доступ пользователь:
- Выберите базу данных из выпадающего списка База данных.
- Нажмите кнопку Добавить справа от выпадающего списка.
- Повторите два предыдущих шага, пока не будут выбраны все требуемые базы данных.
- Чтобы удалить базу, добавленную по ошибке, нажмите значок справа от имени базы в перечне Права.
- Задайте дополнительные настройки для пользователя:
- Настройте квоты в разделе Дополнительные настройки → Quota:
- Чтобы добавить квоту, нажмите значок или кнопку + Quotas. Вы можете добавить несколько квот, которые будут действовать одновременно.
- Чтобы удалить квоту, нажмите значок справа от имени квоты и выберите пункт Удалить.
- Чтобы изменить квоту, задайте требуемые значения настроек для неё.
- Настройте ClickHouse в разделе Дополнительные настройки → Settings.
- Настройте квоты в разделе Дополнительные настройки → Quota:
- Нажмите кнопку Добавить.
См. также: пример создания пользователя с правами «только чтение».
Если у вас еще нет интерфейса командной строки Yandex.Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать пользователя в кластере, выполните команду:
$ yc managed-clickhouse user create <имя пользователя>
--cluster-name=<имя кластера>
--password=<пароль пользователя>
--permissions=<список баз, к которым пользователь должен иметь доступ>
--quota=<список настроек одной квоты для пользователя>
--settings=<список настроек ClickHouse для пользователя>
Подробнее о квотах и настройках ClickHouse читайте в разделе Дополнительные настройки.
Чтобы задать несколько квот, перечислите их, используя требуемое количество параметров --quota
в команде:
$ yc managed-clickhouse user create <имя пользователя>
...
--quota="<настройки квоты 0>"
--quota="<настройки квоты 1>"
...
Имя кластера можно запросить со списком кластеров в каталоге.
См. также: пример создания пользователя с правами «только чтение».
-
Подключитесь к кластеру, используя учетную запись
admin
. -
Создайте пользователя:
CREATE USER <имя пользователя> IDENTIFIED WITH sha256_password BY '<пароль пользователя>';
Подробнее о создании пользователей см. в документации ClickHouse.
Изменить пароль
Чтобы изменить пароль пользователя:
- Перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
- Нажмите на имя нужного кластера и выберите вкладку Пользователи.
- Нажмите значок и выберите пункт Изменить пароль.
- Задайте новый пароль и нажмите кнопку Изменить.
Если у вас еще нет интерфейса командной строки Yandex.Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы изменить пароль пользователя, выполните команду:
$ yc managed-clickhouse user update <имя пользователя>
--cluster-name=<имя кластера>
--password=<новый пароль>
Имя кластера можно запросить со списком кластеров в каталоге.
-
Подключитесь к кластеру, используя учетную запись
admin
. -
Измените пароль пользователя:
ALTER USER <имя пользователя> IDENTIFIED BY '<новый пароль>';
Подробнее об изменении пользователей см. в документации ClickHouse.
Изменить настройки пользователя
Чтобы изменить настройки пользователя:
- Перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
- Нажмите на имя нужного кластера и выберите вкладку Пользователи.
- Нажмите значок и выберите пункт Настройки.
- Настройте права пользователя на доступ к определенным базам данных:
- Чтобы предоставить доступ к требуемым базам данных:
- Выберите базу данных из выпадающего списка База данных.
- Нажмите кнопку Добавить справа от выпадающего списка.
- Повторите два предыдущих шага, пока не будут выбраны все требуемые базы данных.
- Чтобы отозвать доступ к определенной базе, удалите ее из перечня Права, нажав значок справа от имени базы.
- Чтобы предоставить доступ к требуемым базам данных:
- Настройте квоты для пользователя в разделе Дополнительные настройки → Quotas:
- Чтобы добавить квоту, нажмите значок или кнопку + Quotas. Вы можете добавить несколько квот, которые будут действовать одновременно.
- Чтобы удалить квоту, нажмите значок справа от имени квоты и выберите пункт Удалить.
- Чтобы изменить квоту, задайте требуемые значения настроек для неё.
- Измените настройки ClickHouse для пользователя в разделе Дополнительные настройки → Settings.
- Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex.Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Из интерфейса командной строки можно изменить настройки пользователя:
-
Чтобы настроить права пользователя на доступ к определенным базам данных, выполните команду, перечислив список имен баз данных с помощью параметра
--permissions
:$ yc managed-clickhouse user update <имя пользователя> --cluster-name=<имя кластера> --permissions=<список баз, к которым пользователь должен иметь доступ>
Имя кластера можно запросить со списком кластеров в каталоге.
Эта команда предоставляет пользователю доступ к базам данных, указанным в списке.
Чтобы отозвать доступ к определенной базе, исключите ее имя из списка и передайте команде обновленный список.
-
Чтобы изменить настройки квот для пользователя, выполните команду, перечислив список всех квот, с помощью параметров
--quota
(один параметр на каждую квоту):$ yc managed-clickhouse user update <имя пользователя> --cluster-name=<имя кластера> --quota=<настройки квоты 0 (без изменений)> --quota=<настройки квоты 1 (без изменений)> --quota=<настройки квоты 2 (с изменениями)> --quota=<настройки квоты 3 (без изменений)> --quota=<настройки квоты 4 (с изменениями)> --quota=<настройки квоты 5 (новая квота)> ...
Имя кластера можно запросить со списком кластеров в каталоге.
Эта команда перезаписывает все существующие настройки квот пользователя новыми настройками, набор которых был передан команде.
Перед выполнением команды убедитесь, что вы включили в этот набор как настройки новых и измененных квот, так и настройки существующих квот, которые не изменялись.Чтобы удалить одну или несколько квот пользователя, исключите настройки этих квот из набора и передайте команде обновленный набор параметров
--quota
. -
Чтобы изменить настройки ClickHouse для пользователя, выполните команду, перечислив измененные настройки с помощью параметра
--settings
:$ yc managed-clickhouse user update <имя пользователя> --cluster-name=<имя кластера> --settings=<список настроек ClickHouse>
Имя кластера можно запросить со списком кластеров в каталоге.
Команда изменит только те настройки, которые явно указаны в параметре
--settings
. Например, команда с параметром--settings="readonly=1"
изменит только настройкуreadonly
и не сбросит значения остальных. Этим изменение настроек ClickHouse отличается от изменения настроек квот.С помощью этой команды невозможно удалить сделанную настройку, допустимо только явно присвоить ей значение по умолчанию (оно указано для каждой настройки).
-
Подключитесь к кластеру, используя учетную запись
admin
. -
Чтобы изменить набор привилегий и ролей пользователя, используйте запросы GRANT и REVOKE. Например, выдайте пользователю права на чтение всех объектов в определенной базе данных:
GRANT SELECT ON <имя базы данных>.* TO <имя пользователя>;
-
Чтобы изменить настройки квот для пользователя, используйте запросы CREATE QUOTA, ALTER QUOTA и DROP QUOTA. Например, ограничьте суммарное количество запросов пользователя за период 15 месяцев:
CREATE QUOTA <название квоты> FOR INTERVAL 15 MONTH MAX QUERIES 100 TO <имя пользователя>;
-
Чтобы изменить учетную запись пользователя, используйте запрос ALTER USER. Например для изменения настроек ClickHouse выполните следующую команду, перечислив настройки подлежащие изменению:
ALTER USER <имя пользователя> SETTINGS <список настроек ClickHouse>;
Удалить пользователя
- Перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
- Нажмите на имя нужного кластера и выберите вкладку Пользователи.
- Нажмите значок и выберите пункт Удалить.
Если у вас еще нет интерфейса командной строки Yandex.Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы удалить пользователя, выполните команду:
$ yc managed-clickhouse user delete <имя пользователя>
--cluster-name=<имя кластера>
Имя кластера можно запросить со списком кластеров в каталоге.
-
Подключитесь к кластеру, используя учетную запись
admin
. -
Удалите пользователя:
DROP USER <имя пользователя>;
Подробнее об удалении объектов см. в документации ClickHouse.
Примеры
Создание пользователя с настройкой «только чтение»
Допустим, нужно добавить в существующий кластер с именем mych
нового пользователя ro-user
с паролем Passw0rd
, причем:
- пользователь должен иметь доступ к базе данных
db1
кластера; - доступ должен осуществляться в режиме «только чтение» (readonly), без возможности изменения настроек.
- Перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
- Нажмите на кластер с именем
mych
и выберите вкладку Пользователи. - Нажмите кнопку Добавить.
- Введите имя пользователя базы данных
ro-user
и парольPassw0rd
. - Выберите базу данных
db1
из выпадающего списка База данных и нажмите кнопку Добавить справа от выпадающего списка. - Выберите Дополнительные настройки → Settings → Readonly.
- В поле Readonly укажите значение
1
. - Нажмите кнопку Добавить.
Запустите следующую команду:
$ yc managed-clickhouse user create "ro-user" \
--cluster-name="mych" \
--password="Passw0rd" \
--permissions="db1" \
--settings="readonly=1"
После создания пользователя проверьте, что он действительно работает в режиме «только чтение»:
-
Подключитесь к кластеру ClickHouse
mych
, используя созданного пользователяro-user
. -
Попытайтесь изменить какую-нибудь настройку, например, попытайтесь отключить режим «только чтение»:
SET readonly=0
В результате выполнения команды должно отобразиться сообщение о невозможности изменения настройки в режиме «только чтение»:
DB::Exception: Cannot modify 'readonly' setting in readonly mode.
-
Подключитесь к кластеру
mych
, используя учетную записьadmin
. -
Создайте пользователя:
CREATE USER ro-user IDENTIFIED WITH sha256_password BY 'Passw0rd';
-
Выдайте пользователю права на чтение всех объектов базы данных
db1
:GRANT SELECT ON db1.* TO ro-user;
Дополнительные настройки
Настройки квот
Квота позволяет ограничить потребление ресурсов ClickHouse пользователем в течение заданного интервала времени.
Если пользователь превысил одно из ограничений квоты в рамках интервала, то он больше не сможет выполнять новые запросы до того, как истечет интервал.
ClickHouse выведет сообщение о превышении квоты и укажет, когда начнется следующий интервал, с началом которого запрет на выполнение запросов будет снят, а счетчики ограничений — сброшены.
ClickHouse также использует квоты для учета потребления ресурсов.
Для каждого пользователя есть квота по умолчанию, которая учитывает потребление всех ресурсов за каждый час, но не накладывает никаких ограничений.
Сведения об уровне потребления ресурсов записываются в лог сервера ClickHouse.
Подробнее см. в документации ClickHouse.
Доступны следующие настройки:
-
Interval duration — задает интервал для квоты в миллисекундах.
Минимальное значение -
1000
(одна секунда). -
Errors — ограничивает суммарное количество запросов, которые завершились с ошибкой.
Минимальное значение —
0
(нет ограничений). -
Execution time — ограничивает суммарное время выполнения запросов в миллисекундах.
Минимальное значение —
0
(нет ограничений). -
Queries — ограничивает суммарное количество запросов.
Минимальное значение —
0
(нет ограничений). -
Read rows — ограничивает суммарное число исходных строк, считанных из таблиц для выполнения запросов (включая строки, считанные на удаленных серверах).
Минимальное значение —
0
(нет ограничений). -
Result rows — ограничивает суммарное число строк в результатах запроса.
Минимальное значение —
0
(нет ограничений).
Доступны следующие настройки:
-
interval
— задает интервал для квоты в миллисекундах.Допустимо использовать запись с указанием единиц измерения: часов (
h
), минут (m
), секунд (s
) и миллисекунд (ms
). Пример такой записи:3h20m10s7000ms
(итоговое значение представляется по-прежнему в миллисекундах:12017000
). Обратите внимание, что итоговое значение интервала должно быть кратно 1000 миллисекунд (значение вида1s500ms
является некорректным).Минимальное значение -
1000
(одна секунда). -
errors
— ограничивает суммарное количество запросов, которые завершились с ошибкой.Минимальное значение —
0
(нет ограничений). -
execution-time
— ограничивает суммарное время выполнения запросов в миллисекундах.Допустимо использовать запись с указанием единиц измерения: часов (
h
), минут (m
), секунд (s
) и миллисекунд (ms
). Например,3h20m10s7000ms
(итоговое значение представляется по-прежнему в миллисекундах:12017000
).Обратите внимание, что итоговое значение интервала должно быть кратно 1000 миллисекунд (значение вида
1s500ms
является некорректным).Минимальное значение —
0
(нет ограничений). -
queries
— ограничивает суммарное количество запросов.Минимальное значение —
0
(нет ограничений). -
read-rows
— ограничивает суммарное число исходных строк, считанных из таблиц для выполнения запросов (включая строки, считанные на удаленных серверах).Минимальное значение —
0
(нет ограничений). -
result-rows
— ограничивает суммарное число строк в результатах запроса.Минимальное значение —
0
(нет ограничений).
Полный синтаксис команды создания новой квоты:
CREATE QUOTA [IF NOT EXISTS | OR REPLACE] name
[KEYED BY {'none' | 'user name' | 'ip address' | 'client key' | 'client key or user name' | 'client key or ip address'}]
[FOR [RANDOMIZED] INTERVAL number {SECOND | MINUTE | HOUR | DAY | WEEK | MONTH | QUARTER | YEAR}
{MAX { {QUERIES | ERRORS | RESULT ROWS | RESULT BYTES | READ ROWS | READ BYTES | EXECUTION TIME} = number } [,...] |
NO LIMITS | TRACKING ONLY} [,...]]
[TO {role [,...] | ALL | ALL EXCEPT role [,...]}]
-
INTERVAL
— задает интервал для квоты. После указания значения необходимо указать единицы измерения.Минимальное значение — одна секунда.
-
ERRORS
— ограничивает суммарное количество запросов, которые завершились с ошибкой.Минимальное значение —
0
(нет ограничений). -
EXECUTION TIME
— ограничивает суммарное время выполнения запросов в секундах.Минимальное значение —
0
(нет ограничений). -
QUERIES
— ограничивает суммарное количество запросов.Минимальное значение —
0
(нет ограничений). -
READ ROWS
— ограничивает суммарное число исходных строк, считанных из таблиц для выполнения запросов (включая строки, считанные на удаленных серверах).Минимальное значение —
0
(нет ограничений). -
RESULT ROWS
— ограничивает суммарное число строк в результатах запроса.Минимальное значение —
0
(нет ограничений).
Подробнее см. в документации ClickHouse.
Настройки ClickHouse
Эти настройки влияют на поведение ClickHouse при работе с запросами пользователя.
Доступны следующие настройки:
-
Add HTTP CORS header — включает заголовок CORS в HTTP-ответы.
По умолчанию заголовок CORS не включается в HTTP-ответы.
-
Allow DDL — разрешает или запрещает выполнять DDL-запросы (например,
CREATE
,ALTER
,RENAME
и другие).По умолчанию выполнение DDL-запросов разрешено.
Подробнее см. в документации ClickHouse.
См. также: настройка Readonly.
-
Compile — включает или выключает компиляцию запросов. Если вы выполняете большое количество структурно идентичных запросов, то при включенной компиляции такие запросы могут выполняться быстрее за счет использования скомпилированных частей запроса.
Используется вместе с настройкой Min count to compile.
По умолчанию компиляция выключена.
Подробнее см. в документации ClickHouse.
-
Compile expressions — включает или выключает компиляцию выражений. Если вы выполняете большое количество запросов, в которых используются идентичные выражения, то при включенной компиляции выражений такие запросы могут выполняться быстрее за счет использования скомпилированных выражений.
Используется вместе с настройкой Min count to compile expression.
По умолчанию компиляция выражений выключена.
-
Connect timeout — задает время ожидания соединения в миллисекундах.
Значение должно быть больше нуля (по умолчанию —
10000
, 10 секунд). -
DISTINCT overflow mode — определяет поведение ClickHouse в ситуации, когда количество данных при выполнении запроса
SELECT DISTINCT
превысило ограничения —throw
(прервать выполнение, вернуть ошибку) илиbreak
(вернуть неполный результат).Значение по умолчанию — не выбрано (эквивалентно
throw
). -
Distributed aggregation memory efficient — включает или выключает режим экономии памяти при распределенной агрегации.
При распределённой обработке запроса внешняя агрегация производится на удалённых серверах. Для того чтобы на сервере-инициаторе запроса использовалось немного оперативной памяти, нужно включить эту настройку.
По умолчанию режим экономии памяти выключен.
Подробнее см. в документации ClickHouse.
-
Distributed product mode — изменяет поведение распределенных подзапросов, когда запрос содержит произведение распределённых таблиц:
deny
— запрещает использование таких подзапросов.local
— заменяет базу данных и таблицу в подзапросе на локальные для конечного сервера (шарда), оставив обычныйIN/JOIN
.global
— заменяет запросIN/JOIN
наGLOBAL IN/GLOBAL JOIN
.allow
— разрешает использование таких подзапросов.
Значение по умолчанию — не выбрано (эквивалентно
deny
).Подробнее см. в документации ClickHouse.
-
Empty result for aggregation by empty set — определяет формат возвращаемого результата при выполнении агрегации данных без ключей (без
GROUP BY
) для пустого множества (например,SELECT count(*) FROM table WHERE 0
):- опция выключена (по умолчанию) — ClickHouse вернет результат, состоящий из одной строки со значениями
NULL
для агрегатных функций, в соответствии со стандартом SQL. - опция включена — ClickHouse вернет пустой результат.
- опция выключена (по умолчанию) — ClickHouse вернет результат, состоящий из одной строки со значениями
-
Enable HTTP compression — включает или выключает сжатие данных в ответе на HTTP-запрос.
По умолчанию ClickHouse хранит данные в сжатом виде. При выполнении запроса его результат представлен в несжатом виде. С помощью этой настройки вы можете указать ClickHouse сжимать результат запроса при отправке по HTTP.
Чтобы ClickHouse сжал ответ при включенной настройке, добавьте в запрос заголовок
Accept-Encoding: <метод сжатия>
.Поддерживаются следующие методы сжатия:
gzip
,br
иdeflate
.По умолчанию сжатие данных в ответе на HTTP-запрос выключено.
Подробнее см. в документации ClickHouse.
-
Fallback to stale replicas for distributed queries — включает или выключает форсирование запроса в устаревшую реплику в случае, если актуальные данные недоступны. Из устаревших реплик таблицы ClickHouse выбирает наиболее актуальную. Используется при выполнении
SELECT
из распределенной таблицы, которая указывает на реплицированные таблицы.По умолчанию форсирование запроса включено.
Подробнее см. в документации ClickHouse.
См. также настройку Max replica delay for distributed queries.
-
Force index by date — запрещает выполнение запросов, если использовать индекс по дате невозможно. Работает с таблицами семейства MergeTree.
По умолчанию опция выключена (выполнение запросов разрешено).
Подробнее см. в документации ClickHouse.
-
Force primary key — запрещает выполнение запросов, если использовать индекс по первичному ключу невозможно. Работает с таблицами семейства MergeTree.
По умолчанию опция выключена (выполнение запросов разрешено).
Подробнее см. в документации ClickHouse.
-
GROUP BY overflow mode — определяет поведение ClickHouse в ситуации, когда количество уникальных ключей при агрегации превысило ограничение:
throw
— прервать выполнение, вернуть ошибку.break
— вернуть неполный результат.any
— выполнитьGROUP BY
приближённо. Качество такого приближённого вычисления сильно зависит от статистических свойств данных.
Значение по умолчанию — не выбрано (эквивалентно
throw
). -
GROUP BY two level threshold — определяет порог количества ключей, при достижении которого начинается двухуровневая агрегация.
Значение
0
— порог не установлен (по умолчанию —10000
). -
GROUP BY two level threshold bytes — определяет порог количества байт в агрегате, при достижении которого начинается двухуровневая агрегация.
Значение
0
— порог не установлен (по умолчанию —100000000
). -
HTTP connection timeout — задает время ожидания установления HTTP-соединения в миллисекундах.
Значение должно быть больше нуля (по умолчанию —
1000
, 1 секунда). -
HTTP headers progress interval — задает минимальный интервал (в миллисекундах) между уведомлениями о ходе выполнения запроса с помощью HTTP-заголовка
X-ClickHouse-Progress
.Значение должно быть больше нуля (по умолчанию —
100
). -
HTTP receive timeout — задает время ожидания приема данных через HTTP-соединение в миллисекундах.
Значение должно быть больше нуля (по умолчанию —
1800000
, 1800 секунд, 30 минут). -
HTTP send timeout — задает время ожидания отправки данных через HTTP-соединение в миллисекундах.
Значение должно быть больше нуля (по умолчанию —
1800000
, 1800 секунд, 30 минут). -
Input format defaults for omitted fields — включает или выключает замену пропущенных полей значениями по умолчанию для типа данных столбца при вставке данных запросом
INSERT
.По умолчанию замена включена.
Подробнее см. в документации ClickHouse.
-
Input format values interpret expressions — включает или выключает парсер SQL, если потоковый парсер не может проанализировать данные. Используйте эту настройку, если значения, которые вы хотите вставить в таблицу, содержат в себе выражения SQL.
Например, при вставке в таблицу значения, содержащего в себе выражение
now()
, потоковый парсер не сможет распознать это выражение , в то время как при включенном парсере SQL выражение будет распознано корректно и в качестве значения будет вставлен результат выполнения SQL-функцииnow()
(текущая дата и время).Эта опция используется только для формата Values при вставке данных.
По умолчанию парсер SQL включен.Подробнее см. в документации ClickHouse.
-
Insert quorum — включает или выключает кворумную запись в кластере ClickHouse:
- Если значение меньше
2
, то кворумная запись выключена. - Если значение больше либо равно
2
, то кворумная запись включена.
Кворумная запись позволяет гарантировать, что за время, не большее чем Insert quorum timeout, ClickHouse смог без ошибок записать данные в кворум из Insert quorum реплик. Все реплики в кворуме консистентны, т.е. содержат данные всех более ранних запросов
INSERT
. Использование кворума при записи позволяет гарантировать, что данные не потеряются при выходе из строя одной или нескольких реплик.При чтении данных, записанных с помощью Insert quorum, можно использовать настройку Select sequential consistency.
Подробнее см. в документации ClickHouse.
- Если значение меньше
-
Insert quorum timeout — задает время ожидания кворумной записи в миллисекундах. Если время прошло, а запись так не состоялась, то ClickHouse прервет выполнение
INSERT
-запроса, вернет ошибку, и клиент должен повторить запрос на запись того же блока на эту же или любую другую реплику.Минимальное значение —
1000
(1 секунда), по умолчанию —60000
(1 минута). -
Low cardinality allow in native format — определяет, использовать ли тип LowCardinality в native-формате:
- опция включена — да, использовать.
- опция выключена — конвертировать столбцы LowCardinality в обычные столбцы для запроса
SELECT
, и конвертировать обычные столбцы в требуемый LowCardinality-столбец для запросаINSERT
.
Столбцы этого типа, также известные как «разреженные столбцы», позволяют более эффективно хранить данные в виде хэш-таблиц. Если данные это позволяют, ClickHouse использует столбец типа LowCardinality.
Если вы используете сторонний клиент для ClickHouse, который не умеет работать со столбцами типа LowCardinality, то такой клиент не сможет правильно интерпретировать результат запроса, если в запросе будет присутствовать столбец типа LowCardinality. Выключите эту настройку, чтобы включать в результат столбец в обычном формате и позволить сторонним клиентам обработать результат.
Официальный клиент ClickHouse умеет работать со столбцами типа LowCardinality.
По умолчанию опция включена.
-
Max AST depth — ограничивает максимальную глубину вложенности синтаксического дерева.
Для больших и сложных запросов может быть построено синтаксическое дерево очень большой глубины. При помощи этой настройки вы можете запретить выполнение излишне больших или неоптимальных запросов для больших таблиц.
Например, запрос
SELECT *
в большинстве случаев породит более сложное и глубокое синтаксическое дерево, чем запросSELECT ... WHERE ...
с ограничениями и условиями. Наложение ограничения с помощью настройки может побудить пользователя оптимизировать излишне сложные запросы.Значение должно быть больше нуля (по умолчанию —
1000
). Слишком маленькое значение может привести к невозможности выполнения большинства запросов.Подробнее см. в документации ClickHouse.
-
Max AST elements — ограничивает максимальное количество элементов синтаксического дерева запроса (количество узлов дерева).
Для больших и сложных запросов может быть построено синтаксическое дерево c очень большим количеством элементов. При помощи этой настройки вы можете запретить выполнение излишне больших или неоптимальных запросов для больших таблиц.
Значение должно быть больше нуля (по умолчанию —
50000
). Слишком маленькое значение может привести к невозможности выполнения большинства запросов.Подробнее см. в документации ClickHouse.
-
Max block size — данные в ClickHouse обрабатываются по блокам (наборам кусочков столбцов). Внутренние циклы обработки для одного блока достаточно эффективны, но есть заметные издержки на каждый блок. Эта настройка — рекомендация, какой размер блока (в количестве строк) загружать из таблиц.
Значение должно быть больше нуля (по умолчанию —
65536
).Подробнее см. в документации ClickHouse.
-
Max bytes before external
GROUP BY
— задает порог потребления оперативной памяти (в байтах), по достижению которого временные данные, накопленные при выполнении операции агрегацииGROUP BY
, сбрасываются на диск для экономии оперативной памяти.По умолчанию агрегирование выполняется в памяти с помощью хэш-таблицы. Если запрос приводит к необходимости агрегации больших объемов данных, которые могут не поместиться в оперативную память и вызвать ошибку при выполнении запроса (см. настройку Max memory usage) — используйте эту настройку, чтобы ClickHouse сбрасывал данные на диск и успешно выполнял агрегацию.
Минимальное значение и значение по умолчанию —
0
(GROUP BY
во внешней памяти отключен).При использовании агрегации во внешней памяти рекомендуется задать значение этой настройки в два раза меньше значения настройки Max memory usage (по умолчанию максимальное использование памяти ограничено десятью гигабайтами).
Подробнее см. в документации ClickHouse.
См. также настройку Distributed aggregation memory efficient.
-
Max bytes before external sort — настройка аналогична предыдущей, за исключением того, что она применяется для операции сортировки (
ORDER BY
). -
Max bytes in DISTINCT — ограничивает максимальное количество байт (несжатых данных), занимаемых хэш-таблицей, при использовании
DISTINCT
.Минимальное значение и значение по умолчанию —
0
(нет ограничения). -
Max bytes to read — ограничивает максимальное количество байт (несжатых данных), которое можно прочитать из таблицы при выполнении запроса.
Минимальное значение и значение по умолчанию —
0
(нет ограничения). -
Max bytes to sort — ограничивает максимальное количество байт (несжатых данных), которое можно прочитать из таблицы до сортировки. Позволяет ограничить потребление оперативной памяти при сортировке.
Минимальное значение и значение по умолчанию —
0
(нет ограничения). -
Max bytes to transfer — ограничивает максимальное количество байт (несжатых данных), которых можно передать на удалённый сервер или сохранить во временную таблицу, при использовании
GLOBAL IN
.Минимальное значение и значение по умолчанию —
0
(нет ограничения). -
Max columns to read — ограничивает максимальное количество столбцов, которое можно читать из таблицы в одном запросе. Если запрос требует чтения большего количества столбцов — он будет завершен с ошибкой.
Минимальное значение и значение по умолчанию —
0
(нет ограничения). -
Max execution time — ограничивает максимальное время выполнения запроса в миллисекундах. На данный момент не проверяется при одной из стадий сортировки а также при слиянии и финализации агрегатных функций.
Минимальное значение и значение по умолчанию —
0
(нет ограничения). -
Max expanded AST elements — ограничивает максимальное количество элементов синтаксического дерева запроса (количество узлов дерева) после раскрытия псевдонимов и звездочки.
Для больших и сложных запросов может быть построено синтаксическое дерево c очень большим количеством элементов. При помощи этой настройки вы можете запретить выполнение излишне больших или неоптимальных запросов для больших таблиц.
Значение должно быть больше нуля (по умолчанию —
500000
). Слишком маленькое значение может привести к невозможности выполнения большинства запросов. -
Max INSERT block size — позволяет формировать блоки указанного размера (в байтах) при вставке в таблицу. Эта настройка действует только в тех случаях, когда сервер сам формирует такие блоки.
Значение должно быть больше нуля (по умолчанию —
1048576
).Подробнее см. в документации ClickHouse.
-
Max memory usage — ограничивает максимально возможный объём оперативной памяти (в байтах) для выполнения запроса на одном сервере. Настройка не учитывает объём свободной памяти или общий объём памяти на машине. Ограничение действует на один запрос, в пределах одного сервера.
Минимальное значение —
0
(нет ограничения). В конфигурационном файле по умолчанию ограничение равно10737418240
(10 ГБ).Если вы также используете настройки Max bytes before external
GROUP BY
или Max bytes before external sort, рекомендуется, чтобы их значения были в два раза меньше значения Max memory usage.Подробнее см. в документации ClickHouse.
-
Max memory usage for user — ограничивает максимально возможный объём оперативной памяти (в байтах) для выполнения запросов пользователя на одном сервере. Настройка не учитывает объём свободной памяти или общий объём памяти на машине. Ограничение действует на все запросы пользователя, которые выполняются одновременно в пределах одного сервера.
Минимальное значение и значение по умолчанию —
0
(нет ограничения). -
Max network bandwidth — ограничивает скорость обмена данными по сети (байт в секунду) при выполнении одного запроса.
Минимальное значение и значение по умолчанию —
0
(нет ограничения). -
Max network bandwidth for user — ограничивает скорость обмена данными по сети (байт в секунду). Эта настройка, в отличие от предыдущей, влияет на все одновременно выполняющиеся запросы пользователя.
Минимальное значение и значение по умолчанию —
0
(нет ограничения). -
Max query size — ограничивает размер наибольшей части запроса (в байтах), которая может быть передана в оперативную память для разбора с помощью парсера SQL.
Значение должно быть больше нуля (по умолчанию —
262144
).Подробнее см. в документации ClickHouse.
-
Max replica delay for distributed queries — ограничивает максимальную задержку реплики в миллисекундах. Если реплика отстает на значение больше установленного, реплика перестает использоваться.
Минимальное значение —
1000
(1 секунда). Значение по умолчанию —300000
(300 секунд или 5 минут).Подробнее см. в документации ClickHouse.
См. также описание настройки Fallback to stale replicas for distributed queries.
-
Max result bytes — ограничивает количество несжатых байт результата. Это ограничение проверяется также для подзапросов и на удалённых серверах при выполнении части распределённого запроса.
Минимальное значение и значение по умолчанию —
0
(нет ограничения). -
Max result rows — ограничивает количество строк результата. Это ограничение проверяется также для подзапросов и на удалённых серверах при выполнении части распределённого запроса.
Минимальное значение и значение по умолчанию —
0
(нет ограничения). -
Max rows in DISTINCT — ограничивает максимальное количество различных строк при использовании
DISTINCT
.Минимальное значение и значение по умолчанию —
0
(нет ограничения). -
Max rows to group by — ограничивает максимальное количество уникальных ключей, получаемых в процессе агрегации. Позволяет ограничить потребление оперативной памяти при агрегации.
Минимальное значение и значение по умолчанию —
0
(нет ограничения). -
Max rows to read — ограничивает максимальное количество строк, которое можно прочитать из таблицы при выполнении запроса.
Минимальное значение и значение по умолчанию —
0
(нет ограничения).Подробнее см. в документации ClickHouse.
-
Max rows to sort — ограничивает максимальное количество строк для сортировки. Позволяет ограничить потребление оперативной памяти при сортировке.
Минимальное значение и значение по умолчанию —
0
(нет ограничения). -
Max rows to transfer — ограничивает максимальное количество строк, которое можно передать на удалённый сервер или сохранить во временную таблицу, при использовании
GLOBAL IN
.Минимальное значение и значение по умолчанию —
0
(нет ограничения). -
Max temporary columns — ограничивает максимальное количество временных столбцов, которое должно храниться в оперативной памяти одновременно при выполнении запроса (с учетом постоянных столбцов).
Минимальное значение и значение по умолчанию —
0
(нет ограничения). -
Max temporary non const columns — ограничивает максимальное количество временных столбцов, которое должно храниться в оперативной памяти одновременно при выполнении запроса (без учета постоянных столбцов).
Минимальное значение и значение по умолчанию —
0
(нет ограничения). -
Max threads — ограничивает максимальное количество потоков обработки запроса (без учёта потоков для чтения данных с удалённых серверов). Этот параметр относится к потокам, которые выполняют параллельно одни стадии конвейера выполнения запроса.
Минимальное значение и значение по умолчанию —
0
(значение вычисляется автоматически — это количество процессорных ядер без учёта Hyper-Threading).Подробнее см. в документации ClickHouse.
-
Merge tree max bytes to use cache — ограничивает максимальный размер запроса в байтах для использования кэша несжатых данных. Кэш не используется для запросов, превышающих указанный размер.
Эта настройка используется совместно с Use uncompressed cache.
Значение должно быть больше нуля (по умолчанию: 192x10x1024x1024).
-
Merge tree max rows to use cache — ограничивает максимальный размер запроса в строках для использования кэша несжатых данных. Кэш не используется для запросов, превышающих указанный размер.
Эта настройка используется совместно с Use uncompressed cache.
Значение должно быть больше нуля (по умолчанию: 128x8192).
-
Merge tree min bytes for concurrent read — ограничивает минимальное количество байт, которое надо прочитать из файла, чтобы использовать одновременное чтение. Если количество байт, прочитанных из файла, превышает заданное значение, то ClickHouse пытается выполнить одновременное чтение из этого файла в несколько потоков.
Значение должно быть больше нуля (по умолчанию: 24x10x1024x1024).
-
Merge tree min rows for concurrent read — ограничивает минимальное количество строк, которое надо прочитать из файла, чтобы использовать одновременное чтение. Если количество строк, прочитанных из файла, превышает заданное значение, то ClickHouse пытается выполнить одновременное чтение из этого файла в несколько потоков.
Значение должно быть больше нуля (по умолчанию: 20x8192).
-
Min bytes to use Direct I/O — ограничивает минимальный объём данных в байтах, необходимый для прямого (небуферизованного) чтения (Direct I/O) на диск. ClickHouse использует этот параметр при чтении данных из таблиц.
По умолчанию ClickHouse читает данные не напрямую с диска, а полагается на файловую систему и её кэш. Такое чтение эффективно при небольших объемах данных. Если данные читаются в больших объемах, эффективнее читать их с диска напрямую, минуя кэш файловой системы.
Если общий объём хранения всех данных для чтения превышает заданное значение настройки, тогда ClickHouse читает данные с диска напрямую.
Минимальное значение и значение по умолчанию —
0
(прямой ввод/вывод отключен). -
Min count to compile — определяет, после какого количества структурно идентичных запросов начать компиляцию.
Минимальное значение —
0
. Значение по умолчанию —3
.Для значения
0
компиляция выполняется синхронно: запрос ожидает окончания процесса компиляции перед продолжением выполнения. Рекомендуется использовать это значение только в целях тестирования.Для всех других значений компиляция выполняется асинхронно, в отдельном потоке: когда результат будет готов, он сразу же будет использован, в том числе уже выполняющимися в данный момент запросами.
Подробнее см. в документации ClickHouse.
-
Min count to compile expression — определяет, после какого количества идентичных выражений начать компиляцию выражений.
Минимальное значение —
0
. Значение по умолчанию —3
.Для значения
0
компиляция выполняется синхронно: выражение ожидает окончания процесса компиляции перед продолжением выполнения запроса. Рекомендуется использовать это значение только в целях тестирования.Для всех других значений компиляция выполняется асинхронно, в отдельном потоке: когда результат будет готов, он сразу же будет использован, в том числе уже выполняющимися в данный момент запросами.
-
Min INSERT block size bytes — ограничивает минимальное количество байтов в блоке, который может быть вставлен в таблицу запросом
INSERT
. Блоки меньшего размера склеиваются в блоки большего размера.Минимальное значение —
0
(склейка блоков выключена). Значение по умолчанию —268435456
(256 МБ). -
Min INSERT block size rows — ограничивает минимальное количество строк в блоке, который может быть вставлен в таблицу запросом
INSERT
. Блоки меньшего размера склеиваются в блоки большего размера.Минимальное значение —
0
(склейка блоков выключена). Значение по умолчанию —1048576
. -
Output format JSON quote denormals — включает или выключает вывод специальных значений для чисел с плавающей запятой (
+nan
,-nan
,+inf
и-inf
) при выводе в JSON.По умолчанию специальные значения не выводятся.
-
Output format JSON quote_64bit integers — определяет формат чисел в JSON-выводе. Если опция включена, то при выводе в JSON 64-битные числа (
UInt64
иInt64
) выводятся в кавычках (из соображений совместимости с большинством реализаций JavaScript), иначе — без кавычек.По умолчанию вывод 64-битных целых чисел в кавычках выключен.
-
Priority — определяет приоритет запроса:
0
— приоритет не используется.1
— наивысший приоритет.- далее — чем выше число, тем ниже приоритет.
Эта настройка выставляется для каждого запроса по отдельности.
Если ClickHouse в текущий момент времени выполняет запросы с более высокими приоритетами, чем приоритет поступившего запроса, то выполнение такого запроса приостанавливается до завершения выполнения более приоритетных запросов.
Минимальное значение и значение по умолчанию —
0
. -
Quota mode — задает режим учёта потребляемых ресурсов при включенных квотах:
default
— режим по умолчанию, ключи не используются.keyed
— в параметре пользовательского запроса передаётся ключquota_key
, и квота считается по отдельности для каждого значения ключа.keyed_by_ip
— аналогично предыдущему, только в качестве ключа выступает IP-адрес пользователя (стоит учесть, что пользователь может достаточно легко менять IPv6-адрес).
Значение по умолчанию — не выбрано (эквивалентно
default
).Подробнее см. в документации ClickHouse.
-
Read overflow mode — определяет поведение ClickHouse в ситуации, когда количество прочитанных данных превысило одно из ограничений —
throw
(прервать выполнение, вернуть ошибку) илиbreak
(вернуть неполный результат).Значение по умолчанию — не выбрано (эквивалентно
throw
). -
Readonly — ограничивает разрешения для выполнения запросов на чтение данных, запись данных и изменение параметров:
0
— разрешено выполнять все типы запросов, нет ограничений (значение по умолчанию).1
— разрешено выполнять только запросы на чтение данных.2
— разрешено выполнять запросы на чтение данных и изменение настроек.
Настройка не влияет на возможность выполнения DDL-запросов. Чтобы разрешить или запретить выполнение DDL-запросов, используйте настройку Allow DDL.
Подробнее см. в документации ClickHouse.
См. также: пример создания пользователя с правами «только чтение».
-
Receive timeout — задает время ожидания приема данных в миллисекундах.
Значение должно быть больше нуля (по умолчанию —
300000
, 300 секунд, 5 минут). -
Replication ALTER partitions sync — задает условия ожидания завершения асинхронных действий на репликах для запросов
ALTER ... ATTACH | DETACH | DROP
:0
— не ждать.1
— ждать выполнения только у себя (значение по умолчанию).2
— ждать всех.
Подробнее см. в документации ClickHouse.
-
Result overflow mode — определяет поведение ClickHouse в ситуации, когда объём результата превысил одно из ограничений —
throw
(прервать выполнение, вернуть ошибку) илиbreak
(вернуть неполный результат).Значение по умолчанию — не выбрано (эквивалентно
throw
). -
SELECT sequential consistency — включает или выключает последовательную консистентность для запросов
SELECT
.По умолчанию последовательная консистентность выключена.
Подробнее см. в документации ClickHouse.
-
Send progress in HTTP headers — включает или выключает отсылку уведомления о ходе выполнения с использованием заголовков
X-ClickHouse-Progress
.По умолчанию отсылка уведомлений выключена.
-
Send timeout — задает время ожидания отправки данных в миллисекундах.
Значение должно быть больше нуля (по умолчанию —
300000
, 300 секунд, 5 минут). -
Skip unavailable shards — включает или выключает тихий пропуск недоступных шардов (шард считается недоступным, если все его реплики недоступны).
По умолчанию тихий пропуск недоступных шардов выключен.
Подробнее см. в документации ClickHouse.
-
Sort overflow mode — определяет поведение ClickHouse в ситуации, когда количество строк, полученных перед сортировкой, превысило одно из ограничений —
throw
(прервать выполнение, вернуть ошибку) илиbreak
(вернуть неполный результат).Значение по умолчанию — не выбрано (эквивалентно
throw
). -
Timeout overflow mode — определяет поведение ClickHouse в ситуации, когда запрос выполняется дольше
max_execution_time
—throw
(прервать выполнение, вернуть ошибку) илиbreak
(вернуть неполный результат).Значение по умолчанию — не выбрано (эквивалентно
throw
). -
Transfer overflow mode — определяет поведение ClickHouse в ситуации, когда количество данных для передачи на другой сервер превысило одно из ограничений —
throw
(прервать выполнение, вернуть ошибку) илиbreak
(вернуть неполный результат).Значение по умолчанию — не выбрано (эквивалентно
throw
). -
Use uncompressed cache — определяет, использовать ли кэш разжатых блоков. Использование кэша несжатых блоков (только для таблиц семейства MergeTree) может существенно сократить задержку и увеличить пропускную способность при работе с большим количеством коротких запросов. Включите эту настройку для пользователей, от которых идут частые короткие запросы.
По умолчанию кэш не используется.
Подробнее см. в документации ClickHouse.
См. также настройки Merge tree max bytes to use cache и Merge tree max rows to use cache.
Полный список доступных настроек ClickHouse смотрите в справке команды:
$ yc managed-clickhouse user create --help
Основные настройки:
-
allow_ddl
— разрешает или запрещает выполнять DDL-запросы (например,CREATE
,ALTER
,RENAME
и другие).Значение по умолчанию —
false
(выполнение DDL-запросов запрещено).Подробнее см. в документации ClickHouse.
-
readonly
— ограничивает разрешения для выполнения запросов на чтение данных, запись данных и изменение параметров:0
— разрешено выполнять все типы запросов, нет ограничений (значение по умолчанию).1
— разрешено выполнять только запросы на чтение данных.2
— разрешено выполнять запросы на чтение данных и изменение настроек.
Настройка не влияет на возможность выполнения DDL-запросов. Чтобы разрешить или запретить выполнение DDL-запросов, используйте настройку Allow DDL.
Подробнее см. в документации ClickHouse.
См. также: пример создания пользователя с правами «только чтение».
Полный список доступных настроек см. в документации ClickHouse.