其他语句
USE
语法格式
USE的语法格式如下:
参数说明
- database_name
数据库名称。
语法示例
示例1:选择数据库。
> use db4;
SET
CANCEL QUERY
CANCEL QUERY语句用于取消正在运行的SQL查询。
模式更改与其他SQL查询的处理方式不同。可以SHOW JOBS用来监视模式更改的进度以及CANCEL JOB取消花费比预期更长的模式更改。
在极少数情况下,当发出取消请求时查询接近完成时,查询可能会运行到完成。
admin角色的成员(包括include root,默认情况下属于admin)可以取消任何当前活动的角色。不是admin角色成员的用户只能取消他们自己当前活动的查询。
语法格式
取消查询的语法结构如下:
如果加上IF EXISTS取消查询(如果存在);如果不存在,则不返回错误。如果不加上IF EXISTS 取消查询(如果存在);如果不存在,则返回错误:该查询不存在。
参数说明
- query_id
scalar表达式,用于生成要取消的查询的ID。CANCEL QUERY接受单个查询ID。 如果使用子查询并返回多个ID,则CANCEL QUERY语句将失败。。要取消多个查询,请使用CANCEL QUERIES。
- select_stmt
要取消其结果的选择查询。
语法示例
示例1:通过查询ID取消查询。
在此示例中,使用该SHOW QUERIES语句获取查询的ID,然后将ID传递给该CANCEL QUERY语句:
> show queries;
query_id | node_id | user_name | start | query | client_address | application_name | distributed | phase
+—————————————————+————-+—————-+————————————————-+———————————+——————————+—————————+——————-+—— 15d91d0d6dd077d30000000000000001 | 1 | root | 2019-11-21 07:31:28.25678+00:00 | SHOW CLUSTER QUERIES | 192.168.0.30:53888 | $ bini sql | NULL | preparing |
示例2:通过子查询取消查询。
> CANCEL QUERY ( SELECT query_id FROM [ SHOW CLUSTER QUERIES ] WHERE client_address = ‘192.168.0.30:53888’ AND user_name = ‘root’ AND query = ‘SHOW CLUSTER QUERIES’ );
CANCEL QUERIES 1
注意:CANCEL QUERY接受一个查询ID。如果使用子查询并返回多个ID,则该CANCEL QUERY语句将失败。要取消多个查询,请使用CANCEL QUERIES。
TRANSACTIONS
数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。
隔离级别
InCloud ZNBASE数据库支持的隔离有以下两种:
串行化快照隔离 SSI(Serializable Snapshot Isolation);
已提交读 RC(READ COMMITTED)
默认隔离级别为SSI级别。
可以通过SET TRANSACTION ISOLATION LEVEL来设置事务的隔离级别;例如,将数据库的隔离级别设置为RC :
> SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
也可以通过SET TRANSACTION ISOLATION LEVEL来对事务的隔离级别进行更改,例如: 将数据库的隔离级别由默认的SSI设置为RC:
> BEGIN; SET TRANSACTION ISOLATION LEVEL READ COMMITTED; COMMIT;
如果想要查看当前的事务隔离级别,可以通过如下的语句来查看:
> SHOW TRANSACTION ISOLATION LEVEL;
BEGIN
BEGIN语句将启动一个事务,该事务将成功执行它包含的所有语句,或者根本不执行任何语句。
在InCloud ZNBASE中,以下是BEGIN语句的别名:
BEGIN TRANSACTION
START TRANSACTION
语法格式
BEGIN的语法格式如下:
- PRIORITY
事务的优先级。如果不希望事务以NORMAL优先级运行,可以将其设置为LOW或HIGH。优先级越高的事务,重试的几率越低。有关更多信息,请参见事务:优先级。优先级默认为NORMAL
- READ
事务访问模式。将事务访问模式设置为READ ONLY或READ WRITE。当前的事务访问模式也作为会话变量transaction_read_only公开。默认值为READ WRITE
AS OF SYSTEM TIME
as_of_clause
使用过去指定时间“截至”的数据库内容执行事务。该AS OF SYSTEM TIME子句仅在事务为只读时才能使用。如果事务包含任何写操作,或者如果READ WRITE指定了模式,则将返回错误。
参数说明
- as_of_clause
详细信息已在语法格式中进行了说明,不再进行赘述。
语法示例
示例1:开始一个事务:使用默认设置
在不修改BEGIN语句的情况下,事务使用SERIALIZABLE隔离级别和NORMAL优先级。
> BEGIN;
> SAVEPOINT ZNBase_restart;
> UPDATE office_dogs SET rides_city = ‘tianjin’ WHERE alive = ‘true’;
> INSERT INTO kv (k,v) VALUES (2, ‘world’);
> RELEASE SAVEPOINT ZNBase_restart;
> COMMIT;
更改优先级,可以将事务的优先级设置为LOW或HIGH。
> BEGIN PRIORITY HIGH;
> SAVEPOINT ZNBase_restart;
> UPDATE office_dogs SET rides_city = ‘tianjin’ WHERE alive = ‘true’;
> INSERT INTO kv (k,v) VALUES (4, ‘death’);
> RELEASE SAVEPOINT ZNBase_restart;
> COMMIT;
还可以使用SET TRANSACTION设置事务的优先级。
示例2:使用AS OF SYSTEM TIME 选项,可以使用过去指定时间“截至”的数据库内容执行事务。
> BEGIN AS OF SYSTEM TIME ‘2019-11-20 10:00:00.0+00:00’;
> SELECT * FROM office_dogs;
> SELECT * FROM kv;
> COMMIT;
k | v
+—-+———-+
1 | hello
(1 row) |
也可以使用SET TRANSACTION语句来达到同样的效果。
示例3:使用自动重试开始事务。
InCloud ZNBASE会自动重试同时包含BEGIN和COMMIT并且在同一批次所有事务。批处理由驱动程序或客户端的行为控制,但意味着InCloud ZNBASE将所有语句作为一个单元接收,而不是接收多个请求。
从InCloud ZNBASE的角度来看,批量发送的事务如下所示:
> BEGIN;
> SAVEPOINT ZNBase_restart;
> UPDATE office_dogs SET rides_city = ‘tianjin’ WHERE alive = ‘true’;
> INSERT INTO kv (k,v) VALUES (2, ‘world’);
> RELEASE SAVEPOINT ZNBase_restart;
> COMMIT;
但是,在应用程序的代码中,批处理事务通常只是一次发送的多个语句。例如,在Go中,此事务将作为一个批次发送(并自动重试):
>db.Exec( “BEGIN; DELETE FROM customers WHERE id = 1;
>DELETE orders WHERE customer = 1;
COMMIT;” )
以这种方式执行语句会向InCloud ZNBASE发出信号,如果事务没有立即成功,则无需更改任何语句的值,因此它可以连续重试该事务,直到事务被接受为止。
SET TRANSACTION
SET TRANSACTION 语句用于执行BEGIN之后,操作数据库语句之前,来设置事务隔离级别或优先级以及“截至”时间戳。
语法格式
设置事务相关属性的语法格式如下:
设置事务相关属性的语法格式与BEGIN相似,因此不再赘述。
参数说明
- as_of_clause
因为该参数与BEGIN处的参数相同,因此不再赘述。详情请见BEGIN部分。
语法示例
示例1:设置优先顺序。
BEGIN;
>SET TRANSACTION PRIORITY HIGH;
> SAVEPOINT ZNBase_restart;
> UPDATE office_dogs SET rides_city = ‘tianjin’ WHERE alive = ‘true’;
> INSERT INTO kv (k,v) VALUES (5, ‘death’);
> RELEASE SAVEPOINT ZNBase_restart;
> COMMIT;
示例2:设定AS OF SYSTEM TIME选项
BEGIN;
> SET TRANSACTION AS OF SYSTEM TIME ‘2019-11-20 10:00:00.0+00:00’;
> SELECT * FROM office_dogs;
> SELECT * FROM kv;
> COMMIT;
k | v
+—-+———-+
1 | hello
ROLLBACK
ROLLBACK 语句用来进行回滚。也就是中止当前事务,丢弃该事务中包含的语句所做的所有更新。
当使用事务重试机制, 使用 ROLLBACK TO SAVEPOINT ZNBase_restart 语句去重试一个事务 (identified via the 40001 error code or retry transaction 以上报错的事务),然后事务中包含的语句将会重新执行。
语法格式
回滚事务的语法格式如下:
参数说明
- ZNBase_restart
固定参数。若使用了 client-side transaction retries 机制,当事务返回 40001 /retry transaction 错误时,使用TO SAVEPOINT ZNBase_restart语句去重试事务。
语法示例
示例1:回滚事务。
当使用ROLLBACK 代替 COMMIT后,你将会看到事务进行了回滚。
>SELECT * FROM kv;
k | v +—-+———-+
1 | hello
2 | world
3 | death
4 | death
> BEGIN;
> UPDATE kv SET v=’!’ WHERE k=4;
> ROLLBACK;
ROLLBACK
> SELECT * FROM kv;
k | v
+—-+———-+
1 | hello
2 | world
3 | death
4 | death
示例2:重试事务。
要使用高级客户端事务重试,应用程序必须在检测到40001/ retry transaction错误后执行ROLLBACK TO SAVEPOINT。
> ROLLBACK TO SAVEPOINT ZNBase_restart;
COMMIT
COMMIT语句用于提交当前事务,或者在使用客户端事务重试时,清除连接以允许新事务开始。
使用客户端事务重试时,在发出RELEASE SAVEPOINT ZNBase_restart而不是COMMIT时,将提交SAVEPOINT ZNBase_restart之后发出的语句。但是,你仍必须发出COMMIT语句以清除下一个事务的连接。
对于不可重试的事务,如果事务中的语句生成了任何错误,则COMMIT等效于ROLLBACK,它会中止事务并丢弃其语句所做的所有更新。
在InCloud ZNBASE中,END是COMMIT语句的别名。
语法格式
提交事务的语法格式如下:
语法示例
示例1:提交事务。
如何提交事务取决于应用程序如何处理事务重试。客户端可重试事务,使用客户端事务重试时,语句由RELEASE SAVEPOINT ZNBase_restart提交。COMMIT本身仅清除下一个事务的连接。(本示例假定正在使用客户端干预来处理事务重试)
> BEGIN;
> SAVEPOINT ZNBase_restart;
> UPDATE kv SET v=’!’ WHERE k=4;
> INSERT INTO kv(k,v) VALUES(5,’!’);
> RELEASE SAVEPOINT ZNBase_restart;
> COMMIT;
自动重试事务,如果你正在使用InCloud ZNBASE可自动重试的事务(例如在单个batch中发送所有语句),使用COMMIT来提交事务。
> BEGIN;
> UPDATE kv SET v=’!’ WHERE k=4;
> INSERT INTO kv(k,v) VALUES(6,’!’);
> COMMIT;
SAVEPOINT
SavePoint(保存点)是定义嵌套事务开始的标记,以后可以使用此标记来提交或回滚嵌套事务的效果,而不会影响封闭事务的进度。
语法格式
参数说明
- name
保存点的名称。默认为ZNBase_restart,但可以自定义。(设置force_savepoint_restart 会话变量为true使自定义名称生效。
设置此变量后,该SAVEPOINT语句将接受保存点的任何名称,而不仅仅是ZNBase_restart。这允许与每个事务使用单个保存点的现有代码兼容,只要该保存点出现在访问存储在非虚拟表中的数据的任何语句之前。)
语法示例
创建一个名为kv的表用作示例:
>CREATE TABLE kv (k INT PRIMARY KEY, v INT);
示例1:基础用法:要在事务内建立保存点:
>SAVEPOINT foo;
要将事务部分回滚到先前建立的保存点:
>ROLLBACK TO SAVEPOINT foo;
注:SAVEPOINT foo; 和SAVEPOINT Foo都表示创建一个名为foo的保存点,SAVEPOINT “Foo”;创建一个名为Foo的保存点要释放保存点,并保持建立保存点后执行语句的结果有效,使用RELEASE SAVEPOINT:
>RELEASE SAVEPOINT foo;
下面的事务会将值(1,1)和(3,3)插入表中,但不插入(2,2):
>BEGIN; INSERT INTO kv VALUES ( 1, 1 ); SAVEPOINT my_savepoint; INSERT INTO kv VALUES ( 2, 2 ); ROLLBACK TO SAVEPOINT my_savepoint; INSERT INTO kv VALUES ( 3, 3 ); COMMIT;
示例2:嵌套事务的保存点。
可以使用命名的保存点嵌套事务。在嵌套层次结构中,释放SAVEPOINT和回滚到SAVEPOINT都可以引用“更高”的保存点。发生这种情况时,嵌套“下”的所有保存点也会自动释放/回滚。特别的:
当回滚上一个保存点时,在该保存点之后输入的语句也会回滚。
释放先前的保存点后,它将提交; 在保存点之后输入的语句也会被提交。
示例3:使用RELEASE SAVEPOINT进行多级提交。
通过释放保存点提交的更改将提交在该保存点之后输入的所有语句。 例如,以下事务在释放最外面的保存点时将(2,2)和(4,4)都插入到表中:
BEGIN;
SAVEPOINT foo;
INSERT INTO kv VALUES (2,2);
SAVEPOINT bar;
INSERT INTO kv VALUES (4,4);
RELEASE SAVEPOINT foo;
COMMIT;
示例4:多级回滚并在同一事务中提交。
由保存点版本部分提交的更改可以由外部保存点回滚。例如,以下事务仅插入值(5,5),值(6,6)和(7,7)将回滚。
BEGIN;
INSERT INTO kv VALUES (5,5);
SAVEPOINT foo;
INSERT INTO kv VALUES (6,6);
SAVEPOINT bar;
INSERT INTO kv VALUES (7,7);
RELEASE SAVEPOINT bar;
ROLLBACK TO SAVEPOINT foo;
COMMIT;
示例5:使用ROLLBACK TO SAVEPOINT进行嵌套事务中的错误恢复。如果在数据库错误后使用ROLLBACK TO SAVEPOINT,它也可以取消事务的错误状态。数据库错误使事务(或嵌套事务)进入“已终止”状态。在这种状态下,事务将不再执行任何其他SQL语句。可以使用ROLLBACK TO SAVEPOINT从嵌套事务中的逻辑错误中恢复。 逻辑错误包括:
唯一索引错误(重复行)
外键约束检查失败(引用表中不存在行)
查询中的错误(引用不存在的列)
另外,可以使用SHOW TRANSACTION STATUS语句检查嵌套事务的状态,具体语句描述见下节,仅列出示例如下所示:
BEGIN; SAVEPOINT error1; INSERT INTO kv VALUES ( 5, 5 ); ERROR : duplicate KEY VALUE ( K ) = ( 5 ) violates UNIQUE CONSTRAINT “primary” SAVEPOINT foo; SHOW TRANSACTION STATUS;—— Aborted (1 row) ROLLBACK TO SAVEPOINT error1; INSERT INTO kv VALUES ( 6, 6 ); COMMIT;
示例6:保存点名称可见性。
已回滚的保存点的名称不再可见。 例如,在下面的事务中,名称“ bar”的savepoint在回滚操作后变成不可见:
BEGIN; SAVEPOINT foo; SAVEPOINT bar; ROLLBACK TO SAVEPOINT foo; RELEASE SAVEPOINT bar;
COMMIT;
ERROR : SAVEPOINT bar does NOT exist ? ERROR > ROLLBACK;
示例7:保存点和prepared语句
语句(PREPARE / EXECUTE)不是事务性的。 因此,PREPARE 语句在保存点回滚时不会无效。结果,尽管回滚到先前的保存点,但PREPARE语句仍在事务内保存并执行:
BEGIN; SAVEPOINT foo; PREPARE bar AS SELECT 1; ROLLBACK TO SAVEPOINT foo; EXECUTE bar;
COMMIT;
? COLUMN ?
1 (1 row)
示例8:客户端事务重试的保存点。
用名称ZNBase_restart定义的保存点是“重试保存点”,用于实现高级客户端事务重试。 下面的示例显示重试保存点的基本用法。
BEGIN; SAVEPOINT ZNBase_restart; UPDATE products SET inventory = 0 WHERE sku = ‘8675309’; INSERT INTO orders ( customer, sku, status ) VALUES ( 1001, ‘8675309’, ‘new’ ); RELEASE SAVEPOINT ZNBase_restart; COMMIT; |
使用SAVEPOINT进行客户端事务重试的应用程序还必须包含使用ROLLBACK TO SAVEPOINT执行重试的功能。可以根据需要使用会话变量将重试保存点名称自定义为ZNBase_restart以外的名称。
示例9:自定义重试保存点名称。
将force_savepoint_restart设置为true,以启用对重试保存点使用自定义名称。设置此变量后,SAVEPOINT语句将接受重试保存点的任何名称,而不仅仅是ZNBase_restart。由于每个保存点名称都等同于ZNBase_restart,不允许使用嵌套事务。存在此功能是为了支持希望使用高级客户端事务重试协议,但无法将保存点的名称自定义为ZNBase_restart的应用程序。
RELEASE SAVEPOINT
RELEASE SAVEPOINT语句使用相同的保存点名称(包括其所有嵌套子事务)从相应的SAVEPOINT语句开始提交嵌套事务。这是对使用重试保存点的持续支持的补充。
语法格式
RELEASE SAVEPOINT的语法格式如下:
参数说明
- name
保存点的名称。默认为ZNBase_restart,但可以自定义。具体自定义过程已经在SAVEPOINT部分进行了讲解,在此不再进行赘述。
处理错误
嵌套事务遇到错误后,RELEASE SAVEPOINT语句无效。 错误后,可以使用以下语句:
- ROLLBACK TO SAVEPOINT回滚到上一个保存点。
- ROLLBACK或ABORT可回滚相关事务。
- 提交所有相关事务。 如果发生错误,COMMIT是ROLLBACK /ABORT的同义词,同时会回滚事务。
- 当(子)事务遇到重试错误时,客户端应重复ROLLBACK TO SAVEPOINT和事务中的语句,直到语句完整无误,然后发出RELEASE。要在嵌套事务遇到错误后完全删除其标记并在外部事务中开始其他工作,请立即使用ROLLBACK TO SAVEPOINT,然后再执行RELEASE。
语法示例
示例1. 通过释放保存点来提交嵌套事务。
下面的示例回滚内部嵌套事务(由lower保存点标记),并释放(提交)higher外部保存点:
BEGIN; SAVEPOINT higher; UPDATE promo_codes SET rules = jsonb_set ( rules, ‘{value}’, ‘“15%”‘ ) WHERE rules @> ‘{“type”: “percent_discount”}’; SAVEPOINT LOWER; UPDATE promo_codes SET rules = jsonb_set ( rules, ‘{value}’, ‘“7.5%”‘ ) WHERE rules @> ‘{“type”: “percent_discount”}’; ROLLBACK TO SAVEPOINT LOWER; RELEASE SAVEPOINT higher; COMMIT;
示例2: 通过释放重试保存点来提交事务。
用名称ZNBase_restart定义的保存点是“重试保存点”,用于实现高级客户端事务重试。声明重试保存点后,使用RELEASE SAVEPOINT提交事务,然后使用COMMIT为下一个事务准备连接:
BEGIN; SAVEPOINT ZNBase_restart; UPDATE products SET inventory = 0 WHERE sku = ‘8675309’; INSERT INTO orders ( customer, sku, status ) VALUES ( 1001, ‘8675309’, ‘new’ ); RELEASE SAVEPOINT ZNBase_restart; COMMIT;
RollBack To SavePoint
ROLLBACK TO SAVEPOINT语句回滚并重新启动从相应的SAVEPOINT语句开始的嵌套事务,以使用标准保存点。
语法格式
参数说明
- savepoint_name
保存点的名称。
示例
使用BEGIN打开一个事务,并使用一个保存点创建一个嵌套事务:
>SELECT * FROM accounts;
+—————+————-+
| name | balance |
+—————+————-+
| Marciela | 1000 |
>BEGIN; SAVEPOINT foo; UPDATE accounts SET balance = 2500 WHERE NAME = ‘Marciela’; ROLLBACK TO SAVEPOINT foo; COMMIT;
>SELECT * FROM accounts;
+—————+————-+
| name | balance |
+—————+————-+
| Marciela | 1000 |
Show SavePoint Status
SHOW SAVEPOINT STATUS语句列出了当前事务中的活动保存点。
语法格式
返回参数说明
- savepoint_name
保存点的名称。
- Is_initial_savepoint
保存点是否是事务中最外面的保存点。
语法示例
首先,使用BEGIN打开一个事务,并使用一个保存点创建一个嵌套事务:
BEGIN; SAVEPOINT foo;
其次,使用SHOW SAVEPOINT STATUS语句列出当前嵌套事务中的活动保存点。
>SHOW SAVEPOINT STATUS;
savepoint_name | is_initial_savepoint
-————————+———————————-
foo | true
RANGE
InCloud ZNBASE将所有用户数据(表,索引等)和几乎所有系统数据存储在键值对的巨型排序映射中。此键空间分为“range”,即键空间的连续块,因此,每个键始终可以在单个范围内找到。
从SQL的角度来看,表及其二级索引最初映射到单个范围,其中范围内的每个键值对表示表中的一行(也称为主索引,因为该表按主键排序)或二级索引中的一行。一旦该range达到64 MiB,它就会分为两个range。随着表格及其索引的不断增长,这些新range将继续进行相同的操作。
ALTER RANGE
ALTER RANGE 语句用于配置系统范围的Range副本。
语法格式
配置系统范围Range副本的语法格式如下:
关于Range副本配置的详细信息已经在DDL部分的ALTER INDEX部分进行了详细的说明。因此,在此不再进行赘述。
参数说明
- range_name
显示Range副本配置的系统范围的名称。
- variable
要更改的变量的名称。具体的变量已经在DDL部分的ALTER INDE的参数说明中进行了罗列和解释,在此不再进行赘述。
- value
要更改的变量的值。
语法示例
示例1:创建系统范围的Range副本。
除了可通过SQL界面查看的数据库和表之外,InCloud ZNBASE还将内部数据存储在所谓的系统范围内。InCloud ZNBASE预定义了一些以下范围的预配置Range副本:
meta
“meta”范围包含有关群集中所有数据位置的权威信息。这些范围必须保留整个集群的大多数副本,才能保持可用状态,并且永远不会在其上运行历史查询,因此InCloud ZNBASE带有预先配置的 metaRange副本,该区域num_replicas设置为5,以使这些范围对节点故障和恢复更具弹性。低于默认值gc.ttlseconds以保持较小的范围,以实现可靠的性能。如果集群在多个数据中心中运行,则最佳做法是将元范围配置为在每个数据中心中都有一个副本。
liveness
“liveness”范围包含有关在任何给定时间哪些节点处于活动状态的权威信息。这些范围必须保留整个集群的大多数副本,才能保持可用状态,并且永远不会在其上运行历史查询,因此InCloud ZNBASE带有预先配置的 livenessRange副本,该区域num_replicas设置为5,以使这些范围对节点故障和恢复更具弹性。低于默认值gc.ttlseconds以保持较小的范围,以实现可靠的性能。
system
对于其他各种重要的内部数据,也存在系统范围,其中包括分配新表ID和跟踪集群节点状态所需的信息。这些范围必须保留大多数副本才能使整个群集保持可用,因此InCloud ZNBASE带有预配置的 systemRange副本,该区域num_replicas设置为5,以使这些范围对节点故障更具弹性。
timeseries
“timeseries”范围包含有关群集的监视数据,该群集为InCloud ZNBASE的管理UI中的图提供了动力。如有必要,可以添加一个timeseriesRange副本来控制此数据的复制。
注意:在编辑系统范围的Range副本时请格外小心,因为它们可能导致群集的某些(或全部)部分停止工作。
要控制以上系统范围之一的复制,使用以下ALTER RANGE … CONFIGURE ZONE语句定义相关值(其他值将从父区域继承):
> ALTER RANGE meta CONFIGURE ZONE USING num_replicas=7;
CONFIGURE ZONE 1
> SHOW ZONE CONFIGURATION FOR RANGE meta;
zone_name | config_sql
+—————-+———————————————————-+ .
meta | ALTER RANGE meta CONFIGURE ZONE USING | range_min_bytes = 16777216, | range_max_bytes = 67108864, | gc.ttlseconds = 3600, | num_replicas = 7, | constraints = ‘[]‘, | lease_preferences = ‘[]‘
(1 row) |
SHOW RANGES
SHOW RANGES 语句用于显示有关范围的信息,这些范围包含表,索引。该信息对于验证SQL数据如何映射到基础范围以及范围副本的位置很有用。要显示表或索引中特定行的范围信息,请使用SHOW RANGE … FOR ROW语句。
语法格式
SHOW RANGES的语法格式如下:
- ranges_kw
查询返回的字段解释
start_key
范围的开始键。
- end_key
范围的结束键。
- range_id
范围ID。
- replicas
包含范围副本的节点。
- lease_holder
包含范围的leaseholder的节点。
参数说明
- table_name
范围信息有关的表的名称。
- table_index_name
范围信息有关的索引的名称。
语法示例
示例1:显示表的范围(主索引)。
> SHOW EXPERIMENTAL_RANGES FROM TABLE rides;
start_key | end_key | range_id | replicas | lease_holder
+—————-+————-+—————+———————+———————+
NULL | NULL | 200 | {1,2,3,9,10} | 9 |
示例2:显示索引范围
>SHOW EXPERIMENTAL_RANGES FROM INDEX rides_auto_index_fk_vehicle_city_ref_vehicles;
start_key | end_key | range_id | replicas | lease_holder
+—————-+————-+—————+———————+———————+
NULL | NULL | 200 | {1,2,3,9,10} | 9
JOB
JOB分为以下几种类型:
AUTO CREATE STATS
SCHEMA CHANGE
DUMP
IMPORT
CREATE STATS
SHOW JOBS
SHOW JOBS 语句列出了集群在过去12小时内执行的长时间运行的所有任务,包括:
模式的更改(通过ALTER TABLE、DROP DATABASE、DROP TABLE和TRUNCATE)。
LOAD和DUMP。
用户创建的表统计信息,供基于成本的优化器使用。
该自动表的统计数据没有显示在SHOW JOBS语句的结果中。要查看自动表统计信息,请使用SHOW AUTOMATIC JOBS。
这些详细信息可以帮助你了解可能影响群集性能的关键任务的状态,并帮助你控制它们。
注意:
该SHOW JOBS语句仅显示长期运行的任务。有关群集中正在运行的job的详尽列表,请使用SQL审核日志记录(实验性)功能。
对于12小时以上的job,请查询crdb_internal.jobs表。
14天后删除job,可以通过jobs.retention_time 群集设置更改此时间间隔。
默认情况下,只有root用户可以执行SHOW JOBS。
语法格式
SHOW JOBS的语法格式如下:
- opt_automatic
当加上AUTOMATIC 关键字后可以查看自动表统计信息。
返回字段说明
SHOW JOBS命令首先输出在运行的job,再输出最近12小时内已完成的。在运行的job以开始时间排序,已完成的job以结束的时间排序。
每个 job 返回以下字段:
字段 | 描述 |
---|---|
job_id | 每个job的唯一标识。可以用来控制job(如暂停,恢复或取消)。 |
job_type | job的类型。可能的值: SCHEMA CHANGE、LOAD、RESTORE、DUMP、CREATE STATS。 |
description | 启动job的语句或job的文字性描述。 |
statement | 如果description是一个文字性描述,本字段将返回启动job的语句。现在本字段只在自动表统计信息的job中使用。 |
status | job目前的状态。可能的值:pending, running, paused, failed, succeeded,canceled |
running_status | job 详细的运行状态,提供 drop 或者 truncate 表格的可视化进程。drop 或者 truncate 表格的运行状态取决于表格最初的模式变化。垃圾回收到期后 job 结束,表格的数据和 ID 被删除。可能的值:draining names, waiting for GC TTL, RocksDB compaction, NULL(无法确定状态时)。 执行 SHOW AUDOTMATIC JOBS 语句,该字段值为 NULL。 |
created | job 被创建时的 TIMESTAMP |
started | job 刚开始运行时的 TIMESTAMP |
finished | job 状态处于 succeeded, failed, 或者 canceled时的 TIMESTAMP |
modified | job 的任何修改的 TIMESTAMP |
fraction_completed | job 完成的比例(在 0.00 和 1.00之间) |
error | job 处于failed状态后,返回的错误。 |
coordinator_id | 运行 job 节点的 ID |
语法示例
示例1:显示job。
> SHOW JOBS;
job_id | job_type | description | statement | user_name | status | running_status | created | started | finished | modified | fraction_completed | error | coordinator_id
+——————————+———————-+————————————————————+—————-+—————-+—————-+————————+—————————————————+—-505401752453021697 | SCHEMA CHANGE | DROP DATABASE db1 | | root | succeeded | NULL | 2019-11-21 03:26:14.633458+00:00 | 2019-11-21 03:26:15.538752+00:00 | 2019-11-22 04:27:47.065148+00:00 | 2019-11-22 04:27:47.065149+00:00 | 1 | | NULL 505399220932116481 | SCHEMA CHANGE | DROP TABLE ygl.public.student_profiles | | root | succeeded | NULL | 2019-11-21 03:13:22.065906+00:00 | 2019-11-21 03:13:22.93572+00:00 | 2019-11-22 04:14:21.608486+00:00 | 2019-11-22 04:14:21.608486+00:00 | 1 | | NULL 505396193949089793 | SCHEMA CHANGE | DROP TABLE ygl.public.users | | root | succeeded | NULL | 2019-11-21 02:57:58.315713+00:00 | 2019-11-21 02:57:59.546034+00:00 | 2019-11-22 03:59:04.900975+00:00 | 2019-11-22 03:59:04.900976+00:00 | 1 | | NULL |
示例2:筛选job。
可以通过将SHOW JOBS用作SELECT语句的数据源来筛选job,然后使用WHERE子句筛选值。
> SELECT \ * FROM [ SHOW JOBS ] WHERE job_type = ‘SCHEMA CHANGE’ AND STATUS IN ( ‘succeeded’ ) ORDER BY created DESC;
job_id | job_type | description | statement | user_name | status | running_status | created | started | finished | modified | fraction_completed | error | coordinator_id
+——————————+———————-+————————————————————+—————-+—————-+—————-+————————+—————————————————+———505401752453021697 | SCHEMA CHANGE | DROP DATABASE db1 | | root | succeeded | NULL | 2019-11-21 03:26:14.633458+00:00 | 2019-11-21 03:26:15.538752+00:00 | 2019-11-22 04:27:47.065148+00:00 | 2019-11-22 04:27:47.065149+00:00 | 1 | | NULL 505399220932116481 | SCHEMA CHANGE | DROP TABLE ygl.public.student_profiles | | root | succeeded | NULL | 2019-11-21 03:13:22.065906+00:00 | 2019-11-21 03:13:22.93572+00:00 | 2019-11-22 04:14:21.608486+00:00 | 2019-11-22 04:14:21.608486+00:00 | 1 | | NULL 505396193949089793 | SCHEMA CHANGE | DROP TABLE ygl.public.users | | root | succeeded | NULL | 2019-11-21 02:57:58.315713+00:00 | 2019-11-21 02:57:59.546034+00:00 | 2019-11-22 03:59:04.900975+00:00 | 2019-11-22 03:59:04.900976+00:00 | 1 | | NULL |
示例3:显示自动job。
| > SHOW AUTOMATIC JOBS;
job_id | job_type | description | statement | user_name | status | running_status | created | started | finished | modified | fraction_completed | error | coordinator_id
+——————————+—————————-+——————————————————————————-+———————————————————————————————————————————-505687279733702657 | AUTO CREATE STATS | Table statistics refresh for jdb.public.bytes | CREATE STATISTICS _auto_ FROM [169] WITH OPTIONS THROTTLING 0.9 AS OF SYSTEM TIME ‘-30s’ | root | succeeded | NULL | 2019-11-22 03:38:30.660925+00:00 | 2019-11-22 03:38:34.39854+00:00 | 2019-11-22 03:38:52.988305+00:00 | 2019-11-22 03:38:52.988306+00:00 | 1 | | 1 |
示例4:筛选自动job。
可以通过将job SHOW AUTOMATICJOBS用作SELECT语句的数据源来筛选job,然后使用WHERE子句筛选值。
> SELECT \ * FROM [ SHOW AUTOMATIC JOBS ] WHERE STATUS = ( ‘succeeded’ ) ORDER BY created DESC;
job_id | job_type | description | statement | user_name | status | running_status | created | started | finished | modified | fraction_completed | error | coordinator_id
+——————————+—————————-+——————————————————————————-+————————————————————————————————————————- 505687279733702657 | AUTO CREATE STATS | Table statistics refresh for jdb.public.bytes | CREATE STATISTICS _auto_ FROM [169] WITH OPTIONS THROTTLING 0.9 AS OF SYSTEM TIME ‘-30s’ | root | succeeded | NULL | 2019-11-22 03:38:30.660925+00:00 | 2019-11-22 03:38:34.39854+00:00 | 2019-11-22 03:38:52.988305+00:00 | 2019-11-22 03:38:52.988306+00:00 | 1 | | 1 |
示例5:显示模式变更。
通过SHOW JOBS用作SELECT语句的数据源,然后使用WHERE子句过滤job_type值,可以仅显示模式更改job:
> SELECT * FROM [SHOW JOBS] WHERE job_type = ‘SCHEMA CHANGE’;
job_id | job_type | description | statement | user_name | status | running_status | created | started | finished | modified | fraction_completed | error | coordinator_id
+——————————+———————-+————————————————————+—————-+—————-+—————-+————————+—————————————————+——505401752453021697 | SCHEMA CHANGE | DROP DATABASE db1 | | root | succeeded | NULL | 2019-11-21 03:26:14.633458+00:00 | 2019-11-21 03:26:15.538752+00:00 | 2019-11-22 04:27:47.065148+00:00 | 2019-11-22 04:27:47.065149+00:00 | 1 | | NULL 505399220932116481 | SCHEMA CHANGE | DROP TABLE ygl.public.student_profiles | | root | succeeded | NULL | 2019-11-21 03:13:22.065906+00:00 | 2019-11-21 03:13:22.93572+00:00 | 2019-11-22 04:14:21.608486+00:00 | 2019-11-22 04:14:21.608486+00:00 | 1 | | NULL 505396193949089793 | SCHEMA CHANGE | DROP TABLE ygl.public.users | | root | succeeded | NULL | 2019-11-21 02:57:58.315713+00:00 | 2019-11-21 02:57:59.546034+00:00 | 2019-11-22 03:59:04.900975+00:00 | 2019-11-22 03:59:04.900976+00:00 | 1 | | NULL (3 rows) |
PAUSE JOB
该PAUSE JOB 语句可以暂停LOAD、DUMP和RESTORE job,用户创建的表统计信息job,自动表统计信息job和CDC。
暂停job后,可以使用RESUME JOB恢复。
注意:无法暂停模式的更改。默认情况下,只有root用户可以控制job。
语法格式
暂停job的语法格式如下:
参数说明
- job_id
要暂停的job的ID,可通过SHOW JOBS找到。
- select_stmt
返回要暂停的job_id(s)的选择查询。
语法示例
示例1:暂停一项job。
本示例演示了无法暂停修改模式的job。
> SHOW JOBS;
job_id | job_type | description | statement | user_name | status | running_status | created | started | finished | modified | fraction_completed | error | coordinator_id
+——————————+———————-+————————————————————+—————-+—————-+—————-+————————+—————————————————+————-505401752453021697 | SCHEMA CHANGE | DROP DATABASE db1 | | root | succeeded | NULL | 2019-11-21 03:26:14.633458+00:00 | 2019-11-21 03:26:15.538752+00:00 | 2019-11-22 04:27:47.065148+00:00 | 2019-11-22 04:27:47.065149+00:00 | 1 | | NULL 505399220932116481 | SCHEMA CHANGE | DROP TABLE ygl.public.student_profiles | | root | succeeded | NULL | 2019-11-21 03:13:22.065906+00:00 | 2019-11-21 03:13:22.93572+00:00 | 2019-11-22 04:14:21.608486+00:00 | 2019-11-22 04:14:21.608486+00:00 | 1 | | NULL 505396193949089793 | SCHEMA CHANGE | DROP TABLE ygl.public.users | | root | succeeded | NULL | 2019-11-21 02:57:58.315713+00:00 | 2019-11-21 02:57:59.546034+00:00 | 2019-11-22 03:59:04.900975+00:00 | 2019-11-22 03:59:04.900976+00:00 | 1 | | NULL (3 rows) > PAUSE JOB 505396193949089793; pq: job 505396193949089793 is not controllable |
示例2:暂停多项job。
要暂停多个job,请在PAUSE JOBS语句内嵌套一个用于检索job_id的SELECT子句:
> PAUSE JOBS (SELECT job_id FROM [SHOW JOBS] WHERE user_name = ‘stone’);
由stone创建的所有job将被暂停。
示例3:暂停自动表格统计job。
注意:成功的job无法被暂停。
> SHOW AUTOMATIC JOBS; job_id | job_type | description | statement | user_name | status | running_status | created | started | finished | modified | fraction_completed | error | coordinator_id
+——————————+—————————-+——————————————————————————-+————————————————————————————————————————- 505687279733702657 | AUTO CREATE STATS | Table statistics refresh for jdb.public.bytes | CREATE STATISTICS _auto_ FROM [169] WITH OPTIONS THROTTLING 0.9 AS OF SYSTEM TIME ‘-30s’ | root | succeeded | NULL | 2019-11-22 03:38:30.660925+00:00 | 2019-11-22 03:38:34.39854+00:00 | 2019-11-22 03:38:52.988305+00:00 | 2019-11-22 03:38:52.988306+00:00 | > PAUSE JOB 505687279733702657; pq: cannot pause succeeded job (id 505687279733702657) |
要永久禁用自动表统计信息job,请禁用sql.stats.automatic_collection.enabled 集群设置:
> SET CLUSTER SETTING sql.stats.automatic_collection.enabled = false; SET CLUSTER SETTING
RESUME JOB
RESUME JOB 语句用于恢复已暂停的 LOAD、DUMP和RESTORE job以及changefeeds。默认情况下,只有root用户可以控制job。
语法格式
恢复job的语法格式如下:
参数说明
- job_id
要恢复job的ID,可通过SHOW JOBS找到。
- select_stmt
返回要恢复的job_id(s)的选择查询。
语法示例
示例1:恢复单个job。
> SHOW JOBS;
+————————+————-+—————————————————————-+…
| id | type | description |
+————————+————-+—————————————————————-+
| 27536791415282 | RESTORE | RESTORE db.* FROM ‘azure://backup/db/tbl’
> PAUSE JOB 27536791415282; > RESUME JOB 27536791415282;
示例2:恢复多个job。
要恢复多个job,请在RESUME JOBS语句内嵌套一个SELECT子句以检索job_id(s):
> RESUME JOBS (SELECT job_id FROM [SHOW JOBS] WHERE user_name = ‘stone’);
由stone创建的所有job将恢复。
CANCEL JOB
CANCEL JOB 语句可以停止长时间运行的job,包括LOAD、DUMP和RESTORE job、模式更改、用户创建的表统计信息job、自动表统计信息job和changefeeds。
RESTORE取消后,将正确清理部分还原的数据。这可能会对群集性能产生较小的暂时影响。
注意:只有admin角色成员才能取消工作。默认情况下,root用户属于admin角色。
语法格式
取消job的语法格式如下:
参数说明
- job_id
要取消job的ID,可通过SHOW JOBS找到。
- select_stmt
返回要取消的job_id(一个或多个)的选择查询。
语法示例
示例1:取消单个job。
> SHOW JOBS;
| id | type | description |
+————————+————-+—————————————————————-+
| 27536791415282 | RESTORE | RESTORE db.* FROM ‘azure://backup/db/tbl’ |
> CANCEL JOB 27536791415282;
示例2:取消多个job。
要取消多个job,请在CANCEL JOBS语句内嵌套一个用于检索job_id的SELECT子句:
> CANCEL JOBS (SELECT job_id FROM [SHOW JOBS] WHERE user_name = ‘stone’);
由stone创建的所有job将被取消。
示例3:取消自动表格统计job。
取消自动表统计信息job没有用,因为系统将立即自动重新启动该job。要永久禁用自动表统计信息job,请禁用sql.stats.automatic_collection.enabled 集群设置:
> SET CLUSTER SETTING sql.stats.automatic_collection.enabled = false;
STATISTICS
统计数据,用来对查询计划进行优化的,会统计表中的记录数、表的大小、字段不同值的数量等
CREATE STATISTICS
CREATE STATISTICS 语句用于生成表统计信息,以供基于成本的优化器使用。
一旦创建了表并将数据加载到其中(例如INSERT,IMPORT),就可以生成表统计信息。表统计信息可帮助基于成本的优化器确定每个查询中使用的行的基数,从而有助于预测更准确的成本。
CREATE STATISTICS 自动找出要获取统计信息的列-具体来说,它选择:
作为主键或索引一部分的列(换句话说,所有索引列)。
最多100个非索引列(除非指定要在其上创建统计信息的列)。
注意:默认情况下,自动统计是启用的。大多数用户不需要直接执行CREATE STATISTICS语句。用户必须对父数据库具有CREATE 特权。
语法格式
CREATE STATISTICS语法格式如下:
- opt_stats_columns
- opt_create_stats_options
- as_of_clause
该变量已经在TRANSACTIONS中的BEGIN的语法结构中进行了详细说明,在此不再进行赘述。
参数说明
- statistics_name
正在创建的统计信息集的名称。
- opt_stats_columns
要为其创建统计信息的列的名称。
- create_stats_target
要为其创建统计信息的表的名称。
- opt_create_stats_options
用于使用AS OF SYSTEM TIME子句创建历史统计信息。
语法示例
示例1:在特定列上创建统计信息。
> CREATE STATISTICS kvalues ON v FROM kv; CREATE STATISTICS
示例2:在一组默认列上创建统计信息。
下面CREATE STATISTICS显示的语句自动找出要获取统计信息的列-具体来说,它选择:
作为主键或索引一部分的列(换句话说,所有索引列)。
最多100个非索引列。
> CREATE STATISTICS kvalues FROM kv;
CREATE STATISTICS
示例3:创建给定时间的统计信息。
要创建给定时间的统计信息,请运行以下语句:
> CREATE STATISTICS kvalues FROM kv AS OF SYSTEM TIME ‘-10m’;
CREATE STATISTICS
其中,’-10m’指的是10分钟以前。有关AS OF SYSTEM TIME的详细用法已经在TRANSACTIONS的BEGIN部分进行了详细的说明与举例,在此不再进行赘述。
示例4:删除统计资料,删除所有数据库中所有表的统计信息:
> DELETE FROM system.table_statistics WHERE true;
DELETE 770
删除一组命名的统计信息(例如,一个名为“my_stats”的统计信息),请运行如下查询:
> DELETE FROM system.table_statistics WHERE name = ‘my_stats’;
DELETE 0
删除统计信息后,重新启动集群中的节点以清除统计信息缓存。
示例5:查看统计job。
每次执行CREATE STATISTICS语句时,它都会启动一个后台job。对于由应用程序发出的查询以及由自动统计信息功能发出的查询,都是如此。要查看统计信息job,有两个选项:
- 使用 SHOW JOBS查看由用户查询(即有人在SQL提示符下或通过应用程序代码使CREATE STATISTICS)而产生的统计job:
> SELECT * FROM [SHOW JOBS] WHERE job_type LIKE ‘%CREATE STATS%’;
job_id | job_type | description | statement | user_name | status | running_status | created | started | finished | modified | fraction_completed | error | coordinator_id
+——————————+———————+——————————————————————————————————————————+—————-+—————-+—————-+————————505949637853741057 | CREATE STATS | CREATE STATISTICS kvalues FROM db4.public.kv WITH OPTIONS AS OF SYSTEM TIME ‘-10m’ | | root | succeeded | NULL | 2019-11-23 01:52:56.005174+00:00 | 2019-11-23 01:52:59.885251+00:00 | 2019-11-23 01:53:18.370253+00:00 | 2019-11-23 01:53:18.370254+00:00 | 1 | | 1 505949181751918593 | CREATE STATS | CREATE STATISTICS kvalues FROM db4.public.kv | | root | succeeded | NULL | 2019-11-23 01:50:36.813953+00:00 | 2019-11-23 01:50:39.613229+00:00 | 2019-11-23 01:50:48.330478+00:00 | 2019-11-23 01:50:48.330478+00:00 | 1 | | 1 505948943866068993 | CREATE STATS | CREATE STATISTICS kvalues ON v FROM db4.public.kv | | root | succeeded | NULL | 2019-11-23 01:49:24.216948+00:00 | 2019-11-23 01:49:27.419927+00:00 | 2019-11-23 01:49:37.488256+00:00 | 2019-11-23 01:49:37.488257+00:00 | 1 | | 1
使用 SHOW JOBS查看由自动统计功能创建的统计job:
> SELECT * FROM [SHOW AUTOMATIC JOBS] WHERE job_type LIKE ‘%CREATE STATS%’;
job_id | job_type | description | statement | user_name | status | running_status | created | started | finished | modified | fraction_completed | error | coordinator_id
+————+—————+——————-+—————-+—————-+————+————————+————-+————-+—————+—————+——————————+———-+——————- (0 rows) |
SHOW STATISTICS
SHOW STATISTICS语句用于查看基于成本的优化器使用的表统计信息。
语法格式
查看表统计信息的语法格式如下:
参数说明
- table_name
查看其统计信息的表的名称。
语法示例
示例1:列出表统计信息。
> CREATE STATISTICS kvalues ON v FROM kv; CREATE STATISTICS > SHOW STATISTICS FOR TABLE kv; statistics_name | column_names | created | row_count | distinct_count | null_count | histogram_id
+————————-+———————+—————————————————+—————-+————————+——————+———————+
kvalues | {v} | 2019-11-23 02:24:13.351961+00:00 | 6 | 4 | 0 | NULL
(1 row)
SESSION
会话连接(表示一个持续的连接状态)。
CANCEL SESSION
CANCEL SESSION 语句用于停止长时间运行的会话。CANCEL SESSION将尝试取消当前活动的查询并结束会话。只有admin角色成员和会话所属的用户才能取消会话。默认情况下,root用户属于admin角色。
语法格式
结束会话的语法格式如下:
不使用IF EXISTS,如果待结束的会话存在,则结束会话成功;否则报错:会话不存在。
若存在IF EXISTS,如果待结束的会话存在,则结束会话成功;否则不报错,也不执行结束会话操作。
参数说明
- session_id
要结束的会话的ID,可通过找到SHOW SESSIONS。
CANCEL SESSION接受一个会话ID。如果使用子查询并返回多个ID,则该CANCEL SESSION语句将失败。要取消多个会话,请使用CANCEL SESSIONS。
- select_stmt
选择查询语句,返回多个要结束的会话ID。
语法示例
示例1:取消一个会话。
使用SHOW SESSIONS语句获取会话的ID,然后将ID传递给CANCEL SESSION语句:
> SHOW SESSIONS;
node_id | session_id | user_name | client_address | application_name | active_queries | last_active_query | session_start | oldest_query_start
+————-+—————————————————+—————-+——————————+—————————+———————————-+—————————-+———————————————— 1 | 15d9a5cdf17b9f840000000000000001 | root | 192.168.0.30:51084 | $ bini sql | SHOW CLUSTER SESSIONS | SHOW database | 2019-11-23 01:17:28.680867+00:00 | 2019-11-23 02:40:58.170346+00:00
1 | 15d9a5cdf28b9f840000000000000001 | stone | 192.168.0.30:51084 | $ bini sql | SHOW CLUSTER SESSIONS | SHOW database | 2019-11-23 01:20:28.680867+00:00 | 2019-11-23 02:41:31.170346+00:00
> CANCEL SESSION ‘15d9a5cdf28b9f840000000000000001’;
也可以使用返回单个会话ID的子查询来取消会话:
> CANCEL SESSIONS (SELECT session_id FROM [SHOW SESSIONS] WHERE user_name = ‘stone’);
示例2:取消多个会话。
> SHOW SESSIONS; node_id | session_id | user_name | client_address | application_name | active_queries | last_active_query | session_start | oldest_query_start
+————-+—————————————————+—————-+——————————+—————————+———————————-+—————————-+———————————————
1 | 15d9a5cdf17b9f840000000000000001 | root | 192.168.0.30:51084 | $ bini sql | SHOW CLUSTER SESSIONS | SHOW database | 2019-11-23 01:17:28.680867+00:00 | 2019-11-23 02:40:58.170346+00:00
1 | 15d9a5cdf28b9f840000000000000001 | stone | 192.168.0.30:51084 | $ bini sql | SHOW CLUSTER SESSIONS | SHOW database | 2019-11-23 01:20:28.680867+00:00 | 2019-11-23 02:41:31.170346+00:00
(2 row) |
要取消多个会话,需要在CANCEL SESSIONS语句内嵌套一个用于检索session_id SELECT子句:
> CANCEL SESSIONS (SELECT session_id FROM [SHOW SESSIONS] WHERE user_name = ‘stone’);
SHOW SESSIONS
SHOW SESSIONS 语句列出了有关当前活动会话的详细信息,包括:
打开会话的客户端的地址
连接到的节点
连接已打开多长时间
会话中哪些查询处于活动状态
哪个查询在会话中运行时间最长
这些详细信息可以监视客户端连接的总体状态,并确定可能需要进一步调查或调整的客户端连接。
注意:执行此语句不需要特权。但是,请注意,非root用户只能看到他们自己当前活动的会话,而root用户只能看到所有用户当前活动的会话。
语法格式
查看会话的语法格式如下:
要列出集群所有节点上的活动会话,请使用SHOW ALL CLUSTER SESSIONS。
要仅在本地节点上列出活动会话,请使用SHOW ALL LOCAL SESSIONS或者SHOW LOCAL SESSIONS或者SHOW CLUSTER SESSIONS。
语法示例
示例1:显示整个集群的活跃会话。
> SHOW ALL CLUSTER SESSIONS; node_id | session_id | user_name | client_address | application_name | active_queries | last_active_query | session_start | oldest_query_start
+————-+—————————————————+—————-+——————————+—————————————+——————————————————————————————————- 1 | 15d9aaa1a260962c0000000000000001 | root | 192.168.0.30:51126 | $ bini sql | SHOW ALL CLUSTER SESSIONS | SHOW database | 2019-11-23 02:45:55.933281+00:00 | 2019-11-23 03:01:15.398925+00:00
2 | 15d9ab779d640dbe0000000000000002 | root | <admin> | $ internal-lease-release | DELETE FROM system.public.lease WHERE (“descID”, version, “nodeID”, expiration) = ($1, $2, $3, $4) | | 2019-11-23 03:01:14.972698+00:00 | 2019-11-23 03:01:14.97216+00:00
2 | 15d9ab779da32d080000000000000002 | root | <admin> | $ internal-lease-release | DELETE FROM system.public.lease WHERE (“descID”, version, “nodeID”, expiration) = ($1, $2, $3, $4) | | 2019-11-23 03:01:14.976856+00:00 | 2019-11-23 03:01:14.976446+00:00
2 | 15d9ab779d62228d0000000000000002 | root | <admin> | $ internal-lease-release | DELETE FROM system.public.lease WHERE (“descID”, version, “nodeID”, expiration) = ($1, $2, $3, $4) | | 2019-11-23 03:01:14.972586+00:00 | 2019-11-23 03:01:14.971953+00:00
2 | 15d9ab779d6816cf0000000000000002 | root | <admin> | $ internal-lease-release | DELETE FROM system.public.lease WHERE (“descID”, version, “nodeID”, expiration) = ($1, $2, $3, $4) | | 2019-11-23 03:01:14.972982+00:00 | 2019-11-23 03:01:14.972148+00:00
2 | 15d9ab779d6e6ff00000000000000002 | root | <admin> | $ internal-lease-release | DELETE FROM system.public.lease WHERE (“descID”, version, “nodeID”, expiration) = ($1, $2, $3, $4) | | 2019-11-23 03:01:14.9734+00:00 | 2019-11-23 03:01:14.973028+00:00 11 | NULL | NULL | NULL | NULL | — failed to dial into node 11 (DEAD): unable to look up descriptor for n11 | NULL | NULL | NULL
示例2:显示当前节点的活跃会话。
> SHOW ALL LOCAL SESSIONS; node_id | session_id | user_name | client_address | application_name | active_queries | last_active_query | session_start | oldest_query_start
+————-+—————————————————+—————-+——————————+—————————+————————————-+—————————-+———————————————1 | 15d9aaa1a260962c0000000000000001 | root | 192.168.0.30:51126 | $ bini sql | SHOW ALL LOCAL SESSIONS | SHOW database | 2019-11-23 02:45:55.933281+00:00 | 2019-11-23 03:02:14.681132+00:00
示例3:过滤特定的会话。
使用SELECT语句通过一个或多个返回字段来过滤当前的活动会话列表。
显示与特定用户相关的会话
> SELECT * FROM [SHOW ALL CLUSTER SESSIONS] WHERE user_name = ‘root’;
node_id | session_id | user_name | client_address | application_name | active_queries | last_active_query | session_start | oldest_query_start
+————-+—————————————————+—————-+——————————+—————————+——————————————————————————————————+————1 | 15d9aaa1a260962c0000000000000001 | root | 192.168.0.30:51126 | $ bini sql | SELECT * FROM [SHOW ALL CLUSTER SESSIONS] WHERE user_name = ‘root’ | SHOW database | 2019-11-23 02:45:55.933281+00:00 | 2019-11-23 03:06:20.26288+00:00
(1 row) |
从内置的SQL客户端中过滤会话
过滤application_name不是ZNBase的会话:
> SELECT * FROM [SHOW ALL CLUSTER SESSIONS] WHERE application_name != ‘ZNBase’;
node_id | session_id | user_name | client_address | application_name | active_queries | last_active_query | session_start | oldest_query_start
+————-+—————————————————+—————-+——————————+—————————+————————————————————————————————————+——1 | 15d9aaa1a260962c0000000000000001 | root | 192.168.0.30:51126 | $ test_app | SELECT * FROM [SHOW CLUSTER SESSIONS] WHERE application_name != ‘ZNBase’ | SHOW database | 2019-11-23 02:45:55.933281+00:00 | 2019-11-23 03:09:24.541944+00:00
SHOW TRACE FOR SESSION
SHOW TRACE FOR SESSION 语句用于返回有关InCloud ZNBASE如何执行在会话期间记录的一条语句或一系列语句的详细信息。这些详细信息包括来自执行所涉及的所有节点的消息和计时信息,从而使InCloud ZNBASE在其所有软件层中所采取的操作具有可见性。
SHOW TRACE FOR SESSION用来调试查询未按预期执行的原因,向错误报告中添加更多信息,或者通常了解有关InCloud ZNBASE如何工作的更多信息。
SHOW TRACE FOR SESSION返回会话期间记录的所有语句的消息和计时信息。请注意以下几点很重要:
SHOW TRACE FOR SESSION 仅返回最近记录的跟踪,或者返回当前活动的跟踪记录。
要在会话期间开始记录跟踪,请通过SET tracing = on启用会话变量tracing。
要在会话期间停止记录跟踪,请通过SET tracing = off禁用会话变量tracing。
在会话期间记录跟踪不会影响所跟踪的任何语句的执行。这意味着在记录过程中语句遇到的错误将返回给客户端。当由于争用而遇到重试错误时,InCloud ZNBASE将自动重试作为单个批处理发送的单个语句(考虑为隐式事务)和多语句事务。此外,客户端将收到处理客户端重试所需的重试错误。结果,将在记录期间捕获所有事务重试的跟踪。
语法格式
SHOW TRACE FOR SESSION的语法格式如下:
- COMPACT
如果指定,则该语句返回的列较少。
- KV
如果指定,返回的消息将仅限于描述对基础键值存储层的请求和响应的消息,包括按结果行消息。对于SHOW KV TRACE FOR SESSION,仅当会话设置变量SET tracing = kv已经/正在生效时,才包含按结果行消息。
TRACE相关描述
InCloud ZNBASE对“trace” 的定义是OpenTracing定义的专门化。在内部,InCloud ZNBASE使用OpenTracing库进行跟踪,这也意味着它可以轻松地与OpenTracing兼容的跟踪收集器集成。例如,已经支持Lightstep和Zipkin。
概念 | 说明 |
---|---|
trace | 作为高级操作(一个查询或者事务)一部分的子操作执行的相关消息。消息在内部表示为一个”spans”树,而在SHOW TRACE FOR <stmt> 中的查询执行或者SHOW TRACE FOR SESSION中的这个SQL事务执行就是一个具体的”root span”。 |
span | 一种命名的定时操作,用于描述跟踪中的连续工作段。每个span下有子span,代表子操作;而这些子操作也会有子操作。 不同的span表示顺序或者并行执行的(子)操作。(可并行执行是跟踪应该描述的重要事情之一)跟踪的操作描述可能是分布式的,也就是说,不同的span可以描述由不同节点执行的操作。 |
message | 带有计时信息的字符串。每个span可能包含一系列message。他们在日志记录的基础上生成的,而且可以在InCloud ZNBASE的日志文件中找到相同的消息,但是对于跟踪记录中的跨所有严重级别的消息在日志文件中是不存在的,因为日志文件默认不存储这类消息。所以,跟踪记录比日志文件更加冗长,但是跟踪记录仅仅包含一个特定操作的上下文生成的消息。 |
语法示例
示例1:跟踪会话。
> SET tracing = on;
SET TRACING
> SHOW TRACE FOR SESSION;
timestamp | age | message | tag | location | operation | span
+—————————————————+————————-+———————————————————————————————————————————————————————+—————— 2019-11-23 06:06:58.584751+00:00 | 00:00:00 | === SPAN START: session recording === | | | session recording | 0 2019-11-23 06:06:58.584785+00:00 | 00:00:00.000034 | [NoTxn pos:181] executing Sync | [n1,client=192.168.0.30:51126,user=root] | | session recording | 0 2019-11-23 06:06:58.585104+00:00 | 00:00:00.000353 | [NoTxn pos:182] executing ExecStmt: SHOW TRANSACTION STATUS | [n1,client=192.168.0.30:51126,user=root] | | session recording | 0 2019-11-23 06:06:58.585113+00:00 | 00:00:00.000362 | executing: SHOW TRANSACTION STATUS in state: NoTxn | [n1,client=192.168.0.30:51126,user=root] | | session recording | 0 2019-11-23 06:06:58.585137+00:00 | 00:00:00.000386 | [NoTxn pos:183] executing Sync | [n1,client=192.168.0.30:51126,user=root] | | session recording | 0 2019-11-23 06:06:58.585348+00:00 | 00:00:00.000597 | [NoTxn pos:184] executing ExecStmt: SHOW database | [n1,client=192.168.0.30:51126,user=root] | | session recording | 0 2019-11-23 06:06:58.585397+00:00 | 00:00:00.000646 | executing: SHOW database in state: NoTxn | [n1,client=192.168.0.30:51126,user=root] | | session recording | 0 … |
示例2:跟踪冲突的事务。
在此示例中,同时使用两个终端来生成 在终端1中,创建一个表然后打开事务并执行写操作而不关闭事务:
> CREATE TABLE t (k INT);
> BEGIN;
> INSERT INTO t VALUES (1);
再按一次Enter键即可将这些语句发送到服务器。
然后在终端2中打开跟踪并执行有冲突的读取:
> SET tracing = on;
SET TRACING
> SELECT * FROM t;
会看到该语句被阻塞,直到终端1中的事务完成为止。
回到终端1,完成事务:
>COMMIT;
然后在终端2中,停止跟踪,然后查看完成的跟踪。
> SHOW TRACE FOR SESSION;
timestamp | age | message | tag | location | operation | span
+—————————————————+————————-+—————————————————————————————————————————————————————————————— 2019-11-23 06:18:12.804442+00:00 | 00:00:00 | === SPAN START: session recording === | | | session recording | 0 2019-11-23 06:18:12.804466+00:00 | 00:00:00.000024 | [NoTxn pos:21] executing Sync | [n1,client=192.168.0.30:51244,user=root] | | session recording | 0 2019-11-23 06:18:12.804728+00:00 | 00:00:00.000286 | [NoTxn pos:22] executing ExecStmt: SHOW TRANSACTION STATUS | [n1,client=192.168.0.30:51244,user=root] | | session recording | 0 2019-11-23 06:18:12.804735+00:00 | 00:00:00.000293 | executing: SHOW TRANSACTION STATUS in state: NoTxn | [n1,client=192.168.0.30:51244,user=root] | | session recording | 0 2019-11-23 06:18:12.804749+00:00 | 00:00:00.000307 | [NoTxn pos:23] executing Sync | [n1,client=192.168.0.30:51244,user=root] | | session recording | 0 … (272 rows) |
SET <session variable>
SET语句可以单个修改会话变量。会话变量可以通过SHOW来查询。
语法格式
会话变量设置语法格式如下:
- set_rest_more
generic_set变量的语法结构如下:
- transaction_mode_list
- opt_comma
- transaction_mode
transaction_user_priority事务的优先级设置。
- transaction_read_mode
事务的读模式
- as_of_clause
该变量已经在TRANSACTIONS的BEGIN部分进行了详细的说明,在此不再进行赘述。
参数说明
- var_name
会话变量。支持的会话变量已经在SHOW <session variable>中进行了详细的说明,在此不再进行赘述。
- to_or_eq
具体是“=”或者TO 关键字。
- var_list
变量值。
特殊语法
语法 | 相当于 | 说明 |
---|---|---|
USE … | SET database = … | 为具有MySQL / MSSQL背景的用户提供方便。 |
SET NAMES … | SET client_encoding = … | 提供它是为了与PostgreSQL客户端兼容。 |
SET SCHEMA <name> | SET search_path = <name> | 提供它是为了更好地与PostgreSQL兼容。 |
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL … | SET default_transaction_isolation = … | 提供它是为了与标准SQL兼容。 |
SET TIME ZONE … | SET timezone = … | 提供它是为了与PostgreSQL客户端兼容。 |
语法示例
示例1:设置简单变量。
为当前会话配置默认数据库:
> SET database = db4;
SET
> SHOW database;
database
+—————+
db4
示例2:将变量设置值列表。
> SET search_path = pg_catalog,public;
SET
> SHOW search_path;
search_path
+——————————+
pg_catalog, public
示例3:将变量重置为默认值。
> SHOW search_path;
search_path
+——————————+
pg_catalog, public
(1 row)
> SET search_path = DEFAULT;
SET
> SHOW search_path;
search_path
+——————-+
public
示例4:设置时区。
注意:建议不要使用此设置,并且避免为数据库设置会话时间。相反,我们建议在客户端将UTC值转换为适当的时区。
可以使用来控制客户端当前会话的默认时区SET TIME ZONE。这会将会话偏移量应用于所有TIMESTAMP WITH TIME ZONE值。
时区值指示当前会话的时区。
该值可以是本地系统定义的时区(例如’EST’,’America/New_York’)的字符串表示形式,也可以是相对于UTC的正或负数值偏移(例如-7,+7)。所有时区的缩写是大小写敏感的,而且必须是大写,除外UTC(别名utc)。
DEFAULT,LOCAL或0将会话时区设置为UTC。
> SET TIME ZONE ‘EST’;
SET
> SHOW TIME ZONE;
timezone
+—————+
EST
(1 row)
> SET TIME ZONE DEFAULT;
SET
> SHOW TIME ZONE;
timezone
+—————+
UTC |
示例5:设置会话跟踪记录状态。
SET TRACING更改当前会话的跟踪记录状态。可以使用SHOW TRACE FOR SESSION语句检查跟踪记录。
下面是相关记录状态值:
- off
跟踪记录已禁用。
- cluster
跟踪记录已启用;收集分布式跟踪。
- on
与cluster相同。
- kv
与cluster除收集“ kv消息”而不是常规跟踪消息外,其他操作均相同。请参阅SHOW TRACE FOR SESSION。
- local
跟踪记录已启用;仅收集本地节点发出的跟踪消息。
- results
结果行和行数将复制到会话跟踪中。必须将其指定为在会话跟踪中打印查询的输出。例:SET tracing = kv, results;
RESET <session variable>
RESET语句用于将会话变量重置为客户端会话的默认值。
语法格式
重置会话的语法格式如下:
参数说明
- session_var
会话变量的名称。
语法示例
示例1:重置会话变量。
> SET extra_float_digits = -10;
SET
> SHOW extra_float_digits;
extra_float_digits
+——————————+
-10
(1 row)
> SELECT random();
random
+————-+
0.86652
(1 row)
> RESET extra_float_digits;
SET
> SHOW extra_float_digits;
extra_float_digits
+——————————+
2
(1 row)
> SELECT random();
random
+——————————+
0.5673282027760184
(1 row) |
SHOW <session variable>
该SHOW 语句可以显示一个或所有会话设置变量的值。其中一些也可以通过SET进行配置。
语法格式
查看会话的语法格式如下:
参数说明
- var_name
会话变量名主要支持如下:
变量名 | 描述 | 初始值 | 是否可以通过SET修改? | 是否可以通过SHOW查看 |
---|---|---|---|---|
application_name | 用于统计信息收集的当前应用程序名称。 | 空字符串,或ZNBase用于来自内置SQL Client的会话。 | 是 | 是 |
bytea_output | 该模式从转换STRING到BYTES。 | 十六进制 | 是 | 是 |
database | 当前所在数据库。 | 连接字符串中的数据库;如果未指定,则为空。 | 是 | 是 |
default_int_size | 类型的大小(以字节为单位)INT。 | 8 | 是 | 是 |
default_transaction_read_only | 当前会话的默认事务访问模式。如果设置为on,则在当前会话中的事务中仅允许读取操作;否则为false。如果设置为off,则允许读写操作。请参阅SET TRANSACTION 以获取更多详细信息。 | off | 是 | 是 |
default_transaction_isolation | 所有事务都SERIALIZABLE隔离执行。 | SERIALIZABLE | 没有 | 是 |
distsql | 会话的查询分发模式。默认情况下,如果InCloud ZNBASE分布在多个节点上,则InCloud ZNBASE确定哪些查询执行得更快,而所有其他查询都通过网关节点运行。 | auto | 是 | 是 |
enable_zig_zag_join | 指示基于成本的优化器是否将使用Zig-zag合并联接算法来计划某些查询,该算法会基于约束索引后共享索引的事实,通过在索引之间来回跳转来搜索所需的交集。 | on | 是 | 是 |
extra_float_digits | 浮点值显示的位数。仅支持-15和之间的值3。 | 0 | 是 | 是 |
experimental_reorder_joins_limit | 搜索最佳查询执行计划时,优化器将尝试重新排序的最大连接数。 | 4 | 是 | 是 |
force_savepoint_restart | 设置为时true,允许SAVEPOINT语句接受保存点的任何名称。 | off | 是 | 是 |
node_id | 当前连接的节点的ID。该变量对于验证负载平衡连接特别有用。 | 节点相关 | 没有 | 是 |
results_buffer_size | 在将语句或一批语句的结果发送到客户端之前,其累积结果的缓冲区的默认大小。使用“ sql.defaults.results_buffer_size” 群集设置为所有连接设置此设置。请注意,自动重试通常仅在没有结果交付给客户端时才会发生,因此减小此大小会增加客户端接收到的可重试错误的数量。另一方面,增加缓冲区大小可能会增加延迟,直到客户端收到第一个结果行。设置为0将禁用任何缓冲。 | 16384 | 是 | 是 |
search_path | 将搜索用于解析不合格表或函数名称的模式列表。 | public | 是 | 是 |
server_version | InCloud ZNBASE模拟的PostgreSQL版本。 | 取决于版本 | 没有 | 是 |
server_version_num | InCloud ZNBASE模拟的PostgreSQL版本。 | 取决于版本 | 是 | 是 |
session_user | 用户已连接当前会话。 | 连接字符串中的用户 | 没有 | 是 |
sql_safe_updates | 如果为false,则允许使用潜在的不安全SQL语句,包括DROP非空数据库和所有从属对象,DELETE不带WHERE子句,UPDATE不带WHERE子句,以及ALTER TABLE .. DROP COLUMN。 | true用于来自内置SQL客户端的交互式会话, false用于来自其他客户端的会话 | 是 | 是 |
statement_timeout | 语句在被停止之前可以运行的时间。 该值可以是int(例如10),并将被解释为毫秒。它也可以是一个时间间隔或字符串参数,其中可以将字符串解析为有效的时间间隔(例如’4s’)。值0将其关闭。 | 0s | 是 | 是 |
timezone | 当前会话的默认时区。 | UTC | 是 | 是 |
tracing | 跟踪记录状态。 | off | 是 | |
transaction_isolation | 所有事务都SERIALIZABLE隔离执行。 | SERIALIZABLE | 没有 | 是 |
transaction_priority | 当前事务的优先级。 | NORMAL | 是 | 是 |
transaction_read_only | 当前事务的访问方式。有关更多详细信息,请参见设置事务。 | off | 是 | 是 |
transaction_status | 当前事务的状态。有关更多详细信息,请参见事务。 | NoTxn | 没有 | 是 |
vectorize | 向量化执行引擎模式。选项包括auto,experimental_on,和off。 | auto | 是 | 是 |
语法示例
示例1:显示单个会话变量的值。
> SET extra_float_digits = -10;
SET
> SHOW DATABASE;
database
+—————+
db4
(1 row)
示例2:显示所有会话变量的值。
> SHOW ALL;
variable | value
+——————————————————-+——————————————————————————————————————————————————————+
application_name | $ ZNBase sql bytea_output | hex client_encoding | utf8 client_min_messages | notice crdb_version | InCloudZNBASE OSS v19.1.0-145-g5b5586c-dirty (x86_64-unknown-linux-gnu, built 2019/11/04 10:30:22, go1.11.6) database | db4 datestyle | ISO, MDY default_int_size | 8 default_transaction_isolation | SERIALIZABLE default_transaction_read_only | off distsql | off experimental_enable_zigzag_join | off experimental_force_split_at | off experimental_serial_normalization | rowid experimental_vectorize | off extra_float_digits | 2 force_savepoint_restart | off idle_in_transaction_session_timeout | 0 integer_datetimes | on intervalstyle | postgres lock_timeout | 0 max_index_keys | 32 node_id | 1 optimizer | on reorder_joins_limit | 4 results_buffer_size | 16384 row_security | off search_path | public server_encoding | UTF8 server_version | 9.5.0 server_version_num | 90500 session_user | root sql_safe_updates | on standard_conforming_strings | on statement_timeout | 0 synchronize_seqscans | on timezone | UTC tracing | off transaction_isolation | SERIALIZABLE transaction_priority | normal transaction_read_only | off transaction_status | NoTxn
(42 rows) |
CLUSTER SETTING
集群的一些参数设置。
SET CLUSTER SETTING
S ET CLUSTER SETTING 语句用于修改集群设置。
注意:许多的集群设置会影响InCloud ZNBASE内部运行机制。因此,修改这些设置前,强烈建议需要明确使用InCloud ZNBASE的目的,否则修改设置会带来一定的风险。仅root 用户可以更改集群参数设置。
语法格式
修改集群设置的语法格式如下:
注意:SET CLUSTER SETTING语句与另一个SET TRANSACTION和SET <session variable>语句无关。
参数说明
- var_name
集群设置的名称(不区分大小写)。
- var_value
集群设置的值。
语法示例
示例1:更改默认的分布式执行参数。
通过配置参数,可以让新的sessions自动执行分布式查询 (in a distributedfashion)。
> SET CLUSTER SETTING sql.defaults.distsql = 1;
SET CLUSTER SETTING
也可以使集群的分布式执行失效。
> SET CLUSTER SETTING sql.defaults.distsql = 0;
SET CLUSTER SETTING
示例2:禁用自动诊断报告。
可以不使用InCloud ZNBASE Labs的数据自动诊断报告(automatic diagnostic reporting)。
> SET CLUSTER SETTING diagnostics.reporting.enabled = false;
SET CLUSTER SETTING
> SHOW CLUSTER SETTING diagnostics.reporting.enabled;
diagnostics.reporting.enabled
+———————————————-+
false
(1 row) |
SHOW CLUSTER SETTING
SHOW CLUSTER SETTING 语句用于可以查看一个或多个cluster settings的值,也可以通过 SET CLUSTER SETTING进行配置。
语法格式
查看集群设置的语法格式如下:
注意:集群设置的SHOW 语句与下面SHOW 语句无关,具体语句如下: SHOW <session variable>、SHOW CREATE TABLE、SHOW CREATE VIEW、SHOW USERS、 SHOW DATABASES、SHOW COLUMNS、SHOW GRANTS、以及SHOW CONSTRAINTS。
参数说明
- var_name
集群设置的名称(不区分大小写)。
语法示例
示例1:显示单个集群设置的值。
> SHOW CLUSTER SETTING diagnostics.reporting.enabled;
diagnostics.reporting.enabled
+———————————————-+
false
示例2:显示所有集群设置的值。
> SHOW ALL CLUSTER SETTINGS;
variable | value | setting_type | description
+—————————————————————————————+————————————-+———————+——————————————————————————————————————changefeed.experimental_poll_interval | 1s | d | polling interval for the prototype changefeed implementation (WARNING: may compromise cluster stability or correctness; do not edit without supervision) changefeed.push.enabled | true | b | if set, changed are pushed instead of pulled. This requires the kv.rangefeed.enabled setting. See https://www.ZNBaselabs.com/docs/v19.1/change-data-capture.html#enable-rangefeeds-to-reduce-latency cloudsink.http.custom_ca | | s | custom root CA (appended to system’s default CAs) for verifying certificates when interacting with HTTPS storage cloudsink.timeout | 10m0s | d | the timeout for load/dump storage operations cloudstorage.gs.default.key | | s | if set, JSON key to use during Google Cloud Storage operations cloudstorage.http.custom_ca | | s | custom root CA (appended to system’s default CAs) for verifying certificates when interacting with HTTPS storage cloudstorage.timeout | 10m0s | d | the timeout for import/export storage operations cluster.organization | | s | organization name cluster.preserve_downgrade_option | | s | disable (automatic or manual) cluster version upgrade from the specified version until reset compactor.enabled | true | b | when false, the system will reclaim space occupied by deleted data less aggressively … |
RESET CLUSTER SETTING
RESET语句用于将群集设置重置为客户端会话的默认值。
语法格式
重置集群设置的语法格式如下:
只有admin角色成员才能修改集群设置。默认情况下,root用户属于admin角色。
参数说明
- var_name
集群设置的名称(不区分大小写)。
语法示例
示例1:重置集群设置。
> SET CLUSTER SETTING sql.metrics.statement_details.enabled = false;
SET CLUSTER SETTING
> SHOW CLUSTER SETTING sql.metrics.statement_details.enabled;
sql.metrics.statement_details.enabled
+———————————————————-+
false (1 row)
> RESET CLUSTER SETTING sql.metrics.statement_details.enabled;
SET CLUSTER SETTING
> SHOW CLUSTER SETTING sql.metrics.statement_details.enabled;
sql.metrics.statement_details.enabled
+———————————————————-+
true
(1 row) |