clickhouse的SQL参考——(五)system、set和权限相关
参考资料
https://clickhouse.tech/docs/en/sql-reference/statements
版本:v20.11
目录
DROP COMPILED EXPRESSION CACHE
Managing ReplicatedMergeTree Tables
SYSTEM语句
以下查询语句均以SYSTEM开头,格式为SYSTEM [相关语句]。
RELOAD EMBEDDED DICTIONARIES
重新加载所有内部词典(Internal dictionaries.)。
默认情况下,内部字典是禁用的。
始终返回OK, 无论内部字典更新的结果如何。
RELOAD DICTIONARIES
重新加载之前已成功加载的所有词典。
默认情况下,字典是延迟加载的(请参阅 dictionaries_lazy_load),因此,它们不是在启动时自动加载的,而是在第一次访问时通过dictGet函数或从ENGINE = Dictionary的表中使用SELECT查询时进行初始化的。
SYSTEM RELOAD DICTIONARIES查询重新加载此类字典(LOADED)。
始终返回OK。 不管字典更新的结果如何。
RELOAD DICTIONARY
完全重载字典dictionary_name,而不管字典的状态如何(LOADED / NOT_LOADED / FAILED)。
始终返回OK。 不管字典更新的结果如何。
可以通过查询system.dictionaries表来检查字典的状态。
SELECT name, status FROM system.dictionaries;
DROP DNS CACHE
重置ClickHouse的内部DNS缓存。 有时(对于旧的ClickHouse版本),在更改基础结构(更改其他ClickHouse服务器或词典使用的服务器的IP地址)时,必须使用此命令。
有关更方便的(自动)缓存管理,请参阅disable_internal_dns_cache,dns_cache_update_period参数。
DROP MARK CACHE
重置标记缓存。 用于ClickHouse的开发和性能测试。
DROP REPLICA
可以使用以下语法删除死副本:
--删除database.table表的'replica_name'副本的元数据。
SYSTEM DROP REPLICA 'replica_name' FROM TABLE database.table;
--对数据库中所有复制的表执行相同的操作。
SYSTEM DROP REPLICA 'replica_name' FROM DATABASE database;
--对本地服务器上所有复制的表执行相同的操作。
SYSTEM DROP REPLICA 'replica_name';
--当删除表的所有其他副本时,可用于删除无效副本的元数据。
--它要求显式指定表路径。 它必须与创建表时传递给ReplicatedMergeTree引擎的第一个参数的路径相同。
SYSTEM DROP REPLICA 'replica_name' FROM ZKPATH '/path/to/table/in/zk';
查询将删除ZooKeeper中的副本路径。 当副本已失效并且DROP TABLE无法将其元数据从ZooKeeper中删除时,这将非常有用,因为不再有此类表。 它只会删除不活动/过时的副本,而不能删除本地副本,请为此使用DROP TABLE。 DROP REPLICA不会删除任何表,也不会从磁盘上删除任何数据或元数据。
DROP UNCOMPRESSED CACHE
重置未压缩的数据缓存。 用于ClickHouse的开发和性能测试。
对于管理未压缩的数据高速缓存参数,请使用以下设置,服务器级别的设置uncompressed_cache_size,查询/用户/配置文件级别的设置use_uncompressed_cache
DROP COMPILED EXPRESSION CACHE
重置编译的表达式缓存。 用于ClickHouse的开发和性能测试。
当query/user/profile开启编译选项时,编译表达式缓存会被使用。
FLUSH LOGS
将日志消息的缓冲区刷新到系统表(例如system.query_log)。 允许您调试时不等待7.5秒。
即使消息队列为空,也会创建系统表。
RELOAD CONFIG
重新加载ClickHouse配置。 当配置存储在ZooKeeper中时使用。
SHUTDOWN
正常关闭clickhouse服务器。
类似于service clickhouse-server stop、kill {$pid_clickhouse-server}
KILL
中止ClickHouse进程(像是kill -9 {$ pid_clickhouse-server})
Managing Distributed Tables
ClickHouse可以管理分布式表。 当用户将数据插入这些表中时,ClickHouse首先创建应发送到集群节点的数据队列,然后异步发送。
您可以使用STOP DISTRIBUTED SENDS,FLUSH DISTRIBUTED和START DISTRIBUTED SENDS查询来管理队列处理。
您还可以使用insert_distributed_sync设置同步插入分布式数据。
STOP DISTRIBUTED SENDS
将数据插入分布式表时,禁用后台数据分发。
SYSTEM STOP DISTRIBUTED SENDS [db.]<distributed_table_name>
FLUSH DISTRIBUTED
强制ClickHouse将数据同步发送到群集节点。
如果有节点不可用,ClickHouse会引发异常并停止查询执行。
在所有节点都重新联机后,您可以重试查询直到成功。
SYSTEM FLUSH DISTRIBUTED [db.]<distributed_table_name>
START DISTRIBUTED SENDS
将数据插入分布式表中时启用后台数据分发。
SYSTEM START DISTRIBUTED SENDS [db.]<distributed_table_name>
Managing MergeTree Tables
ClickHouse可以管理MergeTree表中的后台进程。
STOP MERGES
停止MergeTree系列中表的后台合并:
SYSTEM STOP MERGES [[db.]merge_tree_family_table_name]
即使之前已停止所有MergeTree表的合并,DETACH / ATTACH TABLE查询也会启动该表的后台合并。
START MERGES
启动MergeTree系列中表的后台合并:
SYSTEM START MERGES [[db.]merge_tree_family_table_name]
STOP TTL MERGES
根据TTL表达式,停止后台删除MergeTree系列表中的旧数据:
返回OK,即使表不存在或表没有使用MergeTree引擎。
数据库不存在时返回错误。
SYSTEM START TTL MERGES [[db.]merge_tree_family_table_name]
START TTL MERGES
根据TTL表达式,开始后台删除MergeTree系列表中的旧数据:
返回OK,即使表不存在或表没有使用MergeTree引擎。
数据库不存在时返回错误。
SYSTEM START TTL MERGES [[db.]merge_tree_family_table_name]
STOP MOVES
根据带有TO VOLUME或TO DISK子句的TTL表表达式,停止后台移动MergeTree系列表中的数据:
返回OK,即使表不存在或表没有使用MergeTree引擎。
数据库不存在时返回错误。
SYSTEM STOP MOVES [[db.]merge_tree_family_table_name]
START MOVES
根据带有TO VOLUME或TO DISK子句的TTL表表达式,开启后台移动MergeTree系列表中的数据:
返回OK,即使表不存在或表没有使用MergeTree引擎。
数据库不存在时返回错误。
SYSTEM STOP MOVES [[db.]merge_tree_family_table_name]
Managing ReplicatedMergeTree Tables
ClickHouse可以管理ReplicatedMergeTree表中的与后台复制相关的进程。
STOP FETCHES
停止对已经插入表中的数据的后台提取,用于ReplicatedMergeTree家族。
返回OK,即使表和数据库都不存在。
SYSTEM STOP FETCHES [[db.]replicated_merge_tree_family_table_name]
START FETCHES
开启对已经插入表中的数据的后台提取,用于ReplicatedMergeTree家族。
返回OK,即使表和数据库都不存在。
SYSTEM START FETCHES [[db.]replicated_merge_tree_family_table_name]
STOP REPLICATED SENDS
停止后台将插入到表中的新数据发送到群集中的其他副本,用于ReplicatedMergeTree家族。
SYSTEM STOP REPLICATED SENDS [[db.]replicated_merge_tree_family_table_name]
START REPLICATED SENDS
开启后台将插入到表中的新数据发送到群集中的其他副本,用于ReplicatedMergeTree家族。
SYSTEM START REPLICATED SENDS [[db.]replicated_merge_tree_family_table_name]
STOP REPLICATION QUEUES
停止从ZooKeeper集群中获取任务列表,用于ReplicatedMergeTree家族。
可能的后台任务类型:merges, fetches, mutation,带有 ON CLUSTER 的DDL语句。
SYSTEM STOP REPLICATION QUEUES [[db.]replicated_merge_tree_family_table_name]
START REPLICATION QUEUES
开启从ZooKeeper集群中获取任务列表,用于ReplicatedMergeTree家族。
可能的后台任务类型:merges, fetches, mutation,带有 ON CLUSTER 的DDL语句。
SYSTEM START REPLICATION QUEUES [[db.]replicated_merge_tree_family_table_name]
SYNC REPLICA
等待ReplicatedMergeTree表与集群中的其他副本同步。
如果当前未对该表进行提取操作,则将一直运行到receive_timeout。
SYSTEM SYNC REPLICA [db.]replicated_merge_tree_family_table_name
RESTART REPLICA
重新初始化ReplicatedMergeTree表的Zookeeper会话状态,会将当前状态与Zookeeper比较直到true,并在需要时将任务添加到Zookeeper队列中
基于ZooKeeper日期的初始化复制队列与ATTACH TABLE语句的方式相同。短时间内该表将无法进行任何操作。
SYSTEM RESTART REPLICA [db.]replicated_merge_tree_family_table_name
RESTART REPLICAS
重新初始化所有ReplicatedMergeTree表的Zookeeper会话状态,会将当前状态与Zookeeper比较直到true,并在需要时将任务添加到Zookeeper队列中。
GRANT语句
向ClickHouse用户帐户或角色授予特权。将角色分配给用户帐户或其他角色。
要撤消特权,请使用REVOKE语句。 可以使用SHOW GRANTS语句列出授予的特权。
授予权限语法
GRANT [ON CLUSTER cluster_name] privilege[(column_name [,...])] [,...] ON {db.table|db.*|*.*|table|*} TO {user | role | CURRENT_USER} [,...] [WITH GRANT OPTION]
privilege
— 权限类型role
— ClickHouse 用户角色user
— ClickHouse 用户账户
WITH GRANT OPTION子句向用户或角色授予执行GRANT查询的权限。 用户可以授予与他们相同或更少范围的特权。
分配角色语法
GRANT [ON CLUSTER cluster_name] role [,...] TO {user | another_role | CURRENT_USER} [,...] [WITH ADMIN OPTION]
role
— ClickHouse用户角色。user
— ClickHouse用户账户。
WITH ADMIN OPTION子句向用户或角色授予ADMIN OPTION特权。
使用方法
要使用GRANT,您的帐户必须具有GRANT OPTION特权。 您只能在帐户权限范围内授予权限。
--管理员通过查询授予了john帐户特权
GRANT SELECT(x,y) ON db.table TO john WITH GRANT OPTION
这意味着john有权执行:
SELECT x,y FROM db.table
.SELECT x FROM db.table
.SELECT y FROM db.table
.
john无法执行SELECT z FROM db.table.,SELECT * FROM db.table也不可用。在处理此查询时,ClickHouse不会返回任何数据,即使x和y也是如此。唯一的例外是如果表仅包含x和y列。在这种情况下,ClickHouse将返回所有数据。
john还具有GRANT OPTION特权,因此它可以向其他用户授予相同或较小范围的特权。
指定特权后,可以使用星号(*)代替表或数据库名称。例如,GRANT SELECT ON db.* TO john 允许join执行在db数据库全表上的SELECT查询。
另外,您可以省略数据库名称。 在这种情况下,将为当前数据库授予特权。 例如,GRANT SELECT ON * TO john授予当前数据库中所有表的SELECT特权,GRANT SELECT ON mytable TO john授予当前数据库中的mytable表的SELECT特权。
始终允许访问系统数据库(因为该数据库用于处理查询)。
您可以在一个查询中为多个帐户授予多个特权。例如,GRANT SELECT, INSERT ON *.* TO john, robin ,允许帐户john和robin对服务器上所有数据库中的所有表执行INSERT和SELECT查询。
权限
特权是执行特定类型查询的权限。
特权具有层次结构。 一组允许的查询取决于特权范围。
特权等级:
- SELECT
- INSERT
- ALTER
ALTER TABLE
ALTER UPDATE
ALTER DELETE
ALTER COLUMN
ALTER ADD COLUMN
ALTER DROP COLUMN
ALTER MODIFY COLUMN
ALTER COMMENT COLUMN
ALTER CLEAR COLUMN
ALTER RENAME COLUMN
ALTER INDEX
ALTER ORDER BY
ALTER SAMPLE BY
ALTER ADD INDEX
ALTER DROP INDEX
ALTER MATERIALIZE INDEX
ALTER CLEAR INDEX
ALTER CONSTRAINT
ALTER ADD CONSTRAINT
ALTER DROP CONSTRAINT
ALTER TTL
ALTER MATERIALIZE TTL
ALTER SETTINGS
ALTER MOVE PARTITION
ALTER FETCH PARTITION
ALTER FREEZE PARTITION
ALTER VIEW
ALTER VIEW REFRESH
ALTER VIEW MODIFY QUERY
- CREATE
CREATE DATABASE
CREATE TABLE
CREATE VIEW
CREATE DICTIONARY
CREATE TEMPORARY TABLE
- DROP
DROP DATABASE
DROP TABLE
DROP VIEW
DROP DICTIONARY
- TRUNCATE
- OPTIMIZE
- SHOW
SHOW DATABASES
SHOW TABLES
SHOW COLUMNS
SHOW DICTIONARIES
- KILL QUERY
- ACCESS MANAGEMENT
CREATE USER
ALTER USER
DROP USER
CREATE ROLE
ALTER ROLE
DROP ROLE
CREATE ROW POLICY
ALTER ROW POLICY
DROP ROW POLICY
CREATE QUOTA
ALTER QUOTA
DROP QUOTA
CREATE SETTINGS PROFILE
ALTER SETTINGS PROFILE
DROP SETTINGS PROFILE
SHOW ACCESS
SHOW_USERS
SHOW_ROLES
SHOW_ROW_POLICIES
SHOW_QUOTAS
SHOW_SETTINGS_PROFILES
ROLE ADMIN
- SYSTEM
SYSTEM SHUTDOWN
SYSTEM DROP CACHE
SYSTEM DROP DNS CACHE
SYSTEM DROP MARK CACHE
SYSTEM DROP UNCOMPRESSED CACHE
SYSTEM RELOAD
SYSTEM RELOAD CONFIG
SYSTEM RELOAD DICTIONARY
SYSTEM RELOAD EMBEDDED DICTIONARIES
SYSTEM MERGES
SYSTEM TTL MERGES
SYSTEM FETCHES
SYSTEM MOVES
SYSTEM SENDS
SYSTEM DISTRIBUTED SENDS
SYSTEM REPLICATED SENDS
SYSTEM REPLICATION QUEUES
SYSTEM SYNC REPLICA
SYSTEM RESTART REPLICA
SYSTEM FLUSH
SYSTEM FLUSH DISTRIBUTED
SYSTEM FLUSH LOGS
- INTROSPECTION
addressToLine
addressToSymbol
demangle
- SOURCES
FILE
URL
REMOTE
YSQL
ODBC
JDBC
HDFS
S3
- dictGet
有关如何处理此层次结构的示例:
- ALTER特权包括所有其他ALTER *特权。
- ALTER CONSTRAINT包括ALTER ADD CONSTRAINT和ALTER DROP CONSTRAINT特权。
级别(从低到高):
COLUMN
— 可以授予列,表,数据库或全局权限。TABLE
— 可以授予表,数据库或全局权限。VIEW
— 可以授予视图,数据库或全局权限。DICTIONARY
— 可以为字典,数据库或全局授予特权。DATABASE
—可以授予数据库权限或全局权限。GLOBAL
—只能手语全局特权。GROUP
— 分组不同级别的特权。 授予GROUP级别特权时,仅授予该组中与所使用语法相对应的特权。
允许的语法示例:
GRANT SELECT(x) ON db.table TO user
GRANT SELECT ON db.* TO user
不允许的语法示例:
GRANT CREATE USER(x) ON db.table TO user
GRANT CREATE USER ON db.* TO user
特殊特权ALL将所有特权授予用户帐户或角色。
默认情况下,用户帐户或角色没有特权。
如果用户或角色没有特权,则显示为“NONE”特权。
一些查询的实现需要一系列的特权。
例如,要执行RENAME查询,您需要以下特权:SELECT,CREATE TABLE,INSERT和DROP TABLE。
SELECT
允许执行SELECT查询。
特权级别:COLUMN。
授予此特权的用户可以在指定表和数据库中的指定列列表上执行SELECT查询。 如果用户包括其他列,则指定查询将不返回任何数据。
--john无法执行SELECT z FROM db.table.,SELECT * FROM db.table也不可用。
--在处理此查询时,ClickHouse不会返回任何数据,即使x和y也是如此。
--唯一的例外是如果表仅包含x和y列。在这种情况下,ClickHouse将返回所有数据。
GRANT SELECT(x,y) ON db.table TO john
INSERT
允许执行INSERT查询。
特权级别:COLUMN。
授予此特权的用户可以在指定表和数据库中的指定列列表上执行INSERT查询。 如果用户包括其他列,则在指定的查询中不会插入任何数据。
--授予的特权允许john将数据插入db.table中的x与y列。
GRANT INSERT(x,y) ON db.table TO john
ALTER
允许根据以下特权层次执行ALTER查询:
ALTER
. Level: COLUMN
.
ALTER TABLE
. Level:GROUP
ALTER UPDATE
. Level:COLUMN
. Aliases:UPDATE
ALTER DELETE
. Level:COLUMN
. Aliases:DELETE
ALTER COLUMN
. Level:GROUP
ALTER ADD COLUMN
. Level:COLUMN
. Aliases:ADD COLUMN
ALTER DROP COLUMN
. Level:COLUMN
. Aliases:DROP COLUMN
ALTER MODIFY COLUMN
. Level:COLUMN
. Aliases:MODIFY COLUMN
ALTER COMMENT COLUMN
. Level:COLUMN
. Aliases:COMMENT COLUMN
ALTER CLEAR COLUMN
. Level:COLUMN
. Aliases:CLEAR COLUMN
ALTER RENAME COLUMN
. Level:COLUMN
. Aliases:RENAME COLUMN
ALTER INDEX
. Level:GROUP
. Aliases:INDEX
ALTER ORDER BY
. Level:TABLE
. Aliases:ALTER MODIFY ORDER BY
,MODIFY ORDER BY
ALTER SAMPLE BY
. Level:TABLE
. Aliases:ALTER MODIFY SAMPLE BY
,MODIFY SAMPLE BY
ALTER ADD INDEX
. Level:TABLE
. Aliases:ADD INDEX
ALTER DROP INDEX
. Level:TABLE
. Aliases:DROP INDEX
ALTER MATERIALIZE INDEX
. Level:TABLE
. Aliases:MATERIALIZE INDEX
ALTER CLEAR INDEX
. Level:TABLE
. Aliases:CLEAR INDEX
ALTER CONSTRAINT
. Level:GROUP
. Aliases:CONSTRAINT
ALTER ADD CONSTRAINT
. Level:TABLE
. Aliases:ADD CONSTRAINT
ALTER DROP CONSTRAINT
. Level:TABLE
. Aliases:DROP CONSTRAINT
ALTER TTL
. Level:TABLE
. Aliases:ALTER MODIFY TTL
,MODIFY TTL
ALTER MATERIALIZE TTL
. Level:TABLE
. Aliases:MATERIALIZE TTL
ALTER SETTINGS
. Level:TABLE
. Aliases:ALTER SETTING
,ALTER MODIFY SETTING
,MODIFY SETTING
ALTER MOVE PARTITION
. Level:TABLE
. Aliases:ALTER MOVE PART
,MOVE PARTITION
,MOVE PART
ALTER FETCH PARTITION
. Level:TABLE
. Aliases:FETCH PARTITION
ALTER FREEZE PARTITION
. Level:TABLE
. Aliases:FREEZE PARTITION
ALTER VIEW
Level:GROUP
ALTER VIEW REFRESH
. Level:VIEW
. Aliases:ALTER LIVE VIEW REFRESH
,REFRESH VIEW
ALTER VIEW MODIFY QUERY
. Level:VIEW
. Aliases:ALTER TABLE MODIFY QUERY
有关如何处理此层次结构的示例:
- ALTER特权包括所有其他ALTER *特权。
- ALTER CONSTRAINT包括ALTER ADD CONSTRAINT和ALTER DROP CONSTRAINT特权。
注意:
- MODIFY SETTING特权允许修改表引擎设置。它不会影响设置或服务器配置参数。
- ATTACH操作需要CREATE特权。
- DETACH操作需要DROP特权。
- 要通过KILL MUTATION查询停止突变,您需要具有启动此突变的特权。 例如,如果要停止ALTER UPDATE查询,则需要ALTER UPDATE,ALTER TABLE或ALTER特权。
CREATE
允许根据以下特权层次执行CREATE和ATTACH DDL查询:
CREATE
. Level: GROUP
CREATE DATABASE
. Level:DATABASE
CREATE TABLE
. Level:TABLE
CREATE VIEW
. Level:VIEW
CREATE DICTIONARY
. Level:DICTIONARY
CREATE TEMPORARY TABLE
. Level:GLOBAL
注意:
- 要删除创建的表,用户需要DROP。
DROP
允许根据以下特权层次执行DROP和DETACH查询:
DROP
. Level:
DROP DATABASE
. Level:DATABASE
DROP TABLE
. Level:TABLE
DROP VIEW
. Level:VIEW
DROP DICTIONARY
. Level:DICTIONARY
TRUNCATE
允许执行TRUNCATE查询。
特权级别:TABLE。
OPTIMIZE
允许执行OPTIMIZE TABLE查询。
特权级别:TABLE。
SHOW
允许根据以下特权层次结构执行SHOW,DESCRIBE,USE和EXISTS查询:
SHOW
. Level: GROUP
SHOW DATABASES
. Level:DATABASE
. Allows to executeSHOW DATABASES
,SHOW CREATE DATABASE
,USE <database>
queries.SHOW TABLES
. Level:TABLE
. Allows to executeSHOW TABLES
,EXISTS <table>
,CHECK <table>
queries.SHOW COLUMNS
. Level:COLUMN
. Allows to executeSHOW CREATE TABLE
,DESCRIBE
queries.SHOW DICTIONARIES
. Level:DICTIONARY
. Allows to executeSHOW DICTIONARIES
,SHOW CREATE DICTIONARY
,EXISTS <dictionary>
queries.
注意:
如果用户具有与指定的表,字典或数据库有关的任何其他特权,则该用户具有SHOW特权。
KILL QUERY
允许根据以下特权层次执行KILL查询:
特权级别:GLOBAL。
注意:
KILL QUERY特权允许一个用户杀死其他用户的查询。
ACCESS MANAGEMENT
允许用户执行管理用户,角色和行策略的查询。
ACCESS MANAGEMENT
. Level: GROUP
CREATE USER
. Level:GLOBAL
ALTER USER
. Level:GLOBAL
DROP USER
. Level:GLOBAL
CREATE ROLE
. Level:GLOBAL
ALTER ROLE
. Level:GLOBAL
DROP ROLE
. Level:GLOBAL
ROLE ADMIN
. Level:GLOBAL
CREATE ROW POLICY
. Level:GLOBAL
. Aliases:CREATE POLICY
ALTER ROW POLICY
. Level:GLOBAL
. Aliases:ALTER POLICY
DROP ROW POLICY
. Level:GLOBAL
. Aliases:DROP POLICY
CREATE QUOTA
. Level:GLOBAL
ALTER QUOTA
. Level:GLOBAL
DROP QUOTA
. Level:GLOBAL
CREATE SETTINGS PROFILE
. Level:GLOBAL
. Aliases:CREATE PROFILE
ALTER SETTINGS PROFILE
. Level:GLOBAL
. Aliases:ALTER PROFILE
DROP SETTINGS PROFILE
. Level:GLOBAL
. Aliases:DROP PROFILE
SHOW ACCESS
. Level:GROUP
SHOW_USERS
. Level:GLOBAL
. Aliases:SHOW CREATE USER
SHOW_ROLES
. Level:GLOBAL
. Aliases:SHOW CREATE ROLE
SHOW_ROW_POLICIES
. Level:GLOBAL
. Aliases:SHOW POLICIES
,SHOW CREATE ROW POLICY
,SHOW CREATE POLICY
SHOW_QUOTAS
. Level:GLOBAL
. Aliases:SHOW CREATE QUOTA
SHOW_SETTINGS_PROFILES
. Level:GLOBAL
. Aliases:SHOW PROFILES
,SHOW CREATE SETTINGS PROFILE
,SHOW CREATE PROFILE
ROLE ADMIN特权允许用户分配和撤消任何角色,包括未使用admin选项分配给用户的角色。
SYSTEM
允许用户根据以下特权层次执行SYSTEM查询。
SYSTEM
. Level: GROUP
SYSTEM SHUTDOWN
. Level:GLOBAL
. Aliases:SYSTEM KILL
,SHUTDOWN
SYSTEM DROP CACHE
. Aliases:DROP CACHE
SYSTEM DROP DNS CACHE
. Level:GLOBAL
. Aliases:SYSTEM DROP DNS
,DROP DNS CACHE
,DROP DNS
SYSTEM DROP MARK CACHE
. Level:GLOBAL
. Aliases:SYSTEM DROP MARK
,DROP MARK CACHE
,DROP MARKS
SYSTEM DROP UNCOMPRESSED CACHE
. Level:GLOBAL
. Aliases:SYSTEM DROP UNCOMPRESSED
,DROP UNCOMPRESSED CACHE
,DROP UNCOMPRESSED
SYSTEM RELOAD
. Level:GROUP
SYSTEM RELOAD CONFIG
. Level:GLOBAL
. Aliases:RELOAD CONFIG
SYSTEM RELOAD DICTIONARY
. Level:GLOBAL
. Aliases:SYSTEM RELOAD DICTIONARIES
,RELOAD DICTIONARY
,RELOAD DICTIONARIES
SYSTEM RELOAD EMBEDDED DICTIONARIES
. Level:GLOBAL
. Aliases: RELOAD EMBEDDED DICTIONARIES
SYSTEM MERGES
. Level:TABLE
. Aliases:SYSTEM STOP MERGES
,SYSTEM START MERGES
,STOP MERGES
,START MERGES
SYSTEM TTL MERGES
. Level:TABLE
. Aliases:SYSTEM STOP TTL MERGES
,SYSTEM START TTL MERGES
,STOP TTL MERGES
,START TTL MERGES
SYSTEM FETCHES
. Level:TABLE
. Aliases:SYSTEM STOP FETCHES
,SYSTEM START FETCHES
,STOP FETCHES
,START FETCHES
SYSTEM MOVES
. Level:TABLE
. Aliases:SYSTEM STOP MOVES
,SYSTEM START MOVES
,STOP MOVES
,START MOVES
SYSTEM SENDS
. Level:GROUP
. Aliases:SYSTEM STOP SENDS
,SYSTEM START SENDS
,STOP SENDS
,START SENDS
SYSTEM DISTRIBUTED SENDS
. Level:TABLE
. Aliases:SYSTEM STOP DISTRIBUTED SENDS
,SYSTEM START DISTRIBUTED SENDS
,STOP DISTRIBUTED SENDS
,START DISTRIBUTED SENDS
SYSTEM REPLICATED SENDS
. Level:TABLE
. Aliases:SYSTEM STOP REPLICATED SENDS
,SYSTEM START REPLICATED SENDS
,STOP REPLICATED SENDS
,START REPLICATED SENDS
SYSTEM REPLICATION QUEUES
. Level:TABLE
. Aliases:SYSTEM STOP REPLICATION QUEUES
,SYSTEM START REPLICATION QUEUES
,STOP REPLICATION QUEUES
,START REPLICATION QUEUES
SYSTEM SYNC REPLICA
. Level:TABLE
. Aliases:SYNC REPLICA
SYSTEM RESTART REPLICA
. Level:TABLE
. Aliases:RESTART REPLICA
SYSTEM FLUSH
. Level:GROUP
SYSTEM FLUSH DISTRIBUTED
. Level:TABLE
. Aliases:FLUSH DISTRIBUTED
SYSTEM FLUSH LOGS
. Level:GLOBAL
. Aliases:FLUSH LOGS
SYSTEM RELOAD EMBEDDED DICTIONARIES特权由SYSTEM RELOAD DICTIONARY ON *。*特权隐式授予。
INTROSPECTION
允许使用自省功能。
INTROSPECTION
. Level: GROUP
. Aliases: INTROSPECTION FUNCTIONS
addressToLine
. Level:GLOBAL
addressToSymbol
. Level:GLOBAL
demangle
. Level:GLOBAL
SOURCES
允许使用外部数据源。 适用于表引擎和表函数。
SOURCES
. Level: GROUP
FILE
. Level:GLOBAL
URL
. Level:GLOBAL
REMOTE
. Level:GLOBAL
YSQL
. Level:GLOBAL
ODBC
. Level:GLOBAL
JDBC
. Level:GLOBAL
HDFS
. Level:GLOBAL
S3
. Level:GLOBAL
SOURCES特权允许使用所有源。 您也可以分别为每个来源授予特权。 要使用源,您需要其他特权。
举例:
要使用MySQL表引擎创建表,您需要CREATE TABLE (ON db.table_name) 和MYSQL特权。
要使用mysql表功能,您需要CREATE TEMPORARY TABLE和MYSQL特权。
dictGet
允许用户执行dictGet,dictHas,dictGetHierarchy和dictIsIn函数。
特权级别:DICTIONARY.
dictGet
. Aliases:dictHas
,dictGetHierarchy
,dictIsIn
举例:
GRANT dictGet ON mydb.mydictionary TO john
GRANT dictGet ON mydictionary TO john
ALL
将受监管实体的所有特权授予用户帐户或角色。
NONE
不授予任何特权。
ADMIN OPTION
ADMIN OPTION特权允许用户将其角色授予其他用户。
REVOKE语句
撤消用户或角色的特权。
语法
--撤销用户的特权
REVOKE [ON CLUSTER cluster_name] privilege[(column_name [,...])] [,...] ON {db.table|db.*|*.*|table|*} FROM {user | CURRENT_USER} [,...] | ALL | ALL EXCEPT {user | CURRENT_USER} [,...]
--撤消用户角色
REVOKE [ON CLUSTER cluster_name] [ADMIN OPTION FOR] role [,...] FROM {user | role | CURRENT_USER} [,...] | ALL | ALL EXCEPT {user_name | role_name | CURRENT_USER} [,...]
描述
要撤消某些特权,可以使用比计划撤消范围更广的特权。
例如,如果用户具有SELECT(x,y)特权,则管理员可以执行REVOKE SELECT(x,y)...或REVOKE SELECT * ...,甚至是REVOKE ALL PRIVILEGES ...查询来撤销此操作 特权。
部分撤销
您可以撤消部分特权。 例如,如果用户具有SELECT *.* 特权,则可以从中撤消从某些表或数据库读取数据的特权。
举例
--授予john用户帐户特权,以便从所有数据库中进行选择,但accounts帐户除外:
GRANT SELECT ON *.* TO john;
REVOKE SELECT ON accounts.* FROM john;
--授予mira用户帐户特权,使其可以从accounts.staff表的所有列中进行SELECT,除了wage
GRANT SELECT ON accounts.staff TO mira;
REVOKE SELECT(wage) ON accounts.staff FROM mira;
OPTIMIZE语句
OPTIMIZE TABLE [db.]name [ON CLUSTER cluster] [PARTITION partition | PARTITION ID 'partition_id'] [FINAL] [DEDUPLICATE]
该查询尝试使用MergeTree系列中的表引擎,对表的未计划合并的数据部分合并。
MaterializedView和Buffer引擎也支持OPTMIZE查询。 不支持其他表引擎。
当OPTIMIZE 用于ReplicatedMergeTree表引擎,clickhouse创建一个任务并等待在所有节点上运行(如果启用了Replication_alter_partitions_sync设置)
- 如果OPTIMIZE由于任何原因未执行合并,则不会通知客户。 要启用通知,请使用optimize_throw_if_noop设置。
- 如果指定PARTITION,则仅优化指定的分区。How to set partition expression.
- 如果指定FINAL,则即使所有数据已经在一个部分中,也会执行优化。
- 如果指定DEDUPLICATE,则将对完全相同的行进行重复数据删除(比较所有列),仅支持MergeTree引擎。
OPTIMIZE无法修复“Too many parts”错误。
SET语句
SET param = value
SET profile = 'profile-name-from-the-settings-file'
为当前会话的参数设置分配值。 您不能以这种方式更改服务器设置。
您还可以在单个查询中设置来自指定设置配置文件的所有值。
SET ROLE语句
为当前用户激活角色。
SET ROLE {DEFAULT | NONE | role [,...] | ALL | ALL EXCEPT role [,...]}
SET DEFAULT ROLE
为用户设置默认角色。
默认角色在用户登录时自动激活。 您只能将以前授予的角色设置为默认值。 如果未将角色授予用户,则ClickHouse会引发异常。
SET DEFAULT ROLE {NONE | role [,...] | ALL | ALL EXCEPT role [,...]} TO {user|CURRENT_USER} [,...]
举例
--为用户设置多个默认角色:
SET DEFAULT ROLE role1, role2, ... TO user
--将所有角色默认授予给用户:
SET DEFAULT ROLE ALL TO user
--从用户清除默认角色:
SET DEFAULT ROLE NONE TO user
--将除了一些角色外的所有角色默认授予给用户:
SET DEFAULT ROLE ALL EXCEPT role1, role2 TO user