Управление запросами
Количество пользовательских подключений
Property устанавливается на уровне пользователя. Чтобы установить максимальное количество подключений между клиентом и FE, используйте следующую команду.
ALTER USER '<username>' SET PROPERTIES ("key"="value", ...)
Свойства пользователя включают ресурсы, назначенные пользователю. Свойства, установленные здесь, относятся к пользователю, а не к user_identity. То есть, если два пользователя jack'@'% и jack'@'192.% созданы с помощью оператора CREATE USER, то оператор ALTER USER SET PROPERTIES может работать с пользователем jack, а не с jack'@'% или jack'@'192.%.
Пример 1:
-- Для пользователя `jack` изменить максимальное количество подключений на 1000
ALTER USER 'jack' SET PROPERTIES ("max_user_connections" = "1000");
-- Проверить лимит подключений для пользователя root
SHOW PROPERTY FOR 'root';
Переменные сессии, связанные с запросами
Переменные сессии можно установить с помощью 'key' = 'value', что позволяет ограничить параллелизм, память и другие параметры запросов в текущей сессии. Например:
-
parallel_fragment_exec_instance_num
Параллелизм запроса со значением по умолчанию 1. Указывает количество экземпляров фрагментов на каждом BE. Вы можете установить это значение равным половине количества ядер CPU BE для улучшения производительности запросов.
-
query_mem_limit
Лимит памяти запроса на каждом узле BE, может быть скорректирован, когда запрос сообщает о недостатке памяти.
-
load_mem_limit
Лимит памяти для импорта, может быть скорректирован, когда задача импорта сообщает о недостатке памяти.
Пример 2:
set parallel_fragment_exec_instance_num = 8;
set query_mem_limit = 137438953472;
Квота емкости хранилища базы данных
Квота емкости хранилища базы данных по умолчанию неограничена. Вы можете изменить значение квоты, используя alter database.
ALTER DATABASE db_name SET DATA QUOTA quota;
Единицы квоты: B/K/KB/M/MB/G/GB/T/TB/P/PB
Пример 3:
ALTER DATABASE example_db SET DATA QUOTA 10T;
Завершение запросов
Чтобы завершить запрос на определенном подключении, используйте следующую команду:
kill connection_id;
connection_id можно увидеть с помощью show processlist; или select connection_id();.
show processlist;
+------+------------+---------------------+-----------------+---------------+---------+------+-------+------+
| Id | User | Host | Cluster | Db | Command | Time | State | Info |
+------+------------+---------------------+-----------------+---------------+---------+------+-------+------+
| 1 | selenamgr | 172.26.34.147:56208 | default_cluster | selena_monitor | Sleep | 8 | | |
| 129 | root | 172.26.92.139:54818 | default_cluster | | Query | 0 | | |
| 114 | test | 172.26.34.147:57974 | default_cluster | ssb_100g | Query | 3 | | |
| 3 | selenamgr | 172.26.34.147:57268 | default_cluster | selena_monitor | Sleep | 8 | | |
| 100 | root | 172.26.34.147:58472 | default_cluster | ssb_100 | Sleep | 637 | | |
| 117 | selenamgr | 172.26.34.147:33790 | default_cluster | selena_monitor | Sleep | 8 | | |
| 6 | selenamgr | 172.26.34.147:57632 | default_cluster | selena_monitor | Sleep | 8 | | |
| 119 | selenamgr | 172.26.34.147:33804 | default_cluster | selena_monitor | Sleep | 8 | | |
| 111 | root | 172.26.92.139:55472 | default_cluster | | Sleep | 2758 | | |
+------+------------+---------------------+-----------------+---------------+---------+------+-------+------+
9 rows in set (0.00 sec)
mysql> select connection_id();
+-----------------+
| CONNECTION_ID() |
+-----------------+
| 98 |
+-----------------+
mysql> kill 114;
Query OK, 0 rows affected (0.02 sec)