SYSTEM

SHOW SESSIONS

显示会话的详细信息:包括session_id、用户名、登陆方式、ip地址、连接时长、活跃查询等等。

root用户可以查看所有当前登陆用户的session信息;其他用户只能看到自己的session信息。

也可以使用SHOW CLUSTER SESSIONS展示相应的信息。

返回参数说明

参数含义
node_id节点ID
session_id会话ID
user_name连接的用户名
client_adress客户端地址和端口
application_name客户端连接方式
active_queries活动状态的SQL查询
last_active_query最近完成的SQL查询
session_start会话开始时间
oldest_query_start当前运行时间最长的SQL查询
kv_txn事务ID

列出集群中活动会话

SHOW SESSIONS;
SHOW CLUSTER SESSIONS;
  node_id |            session_id            | user_name |   client_address   | application_name |    active_queries     | last_active_query |          session_start           |        oldest_query_start         
+---------+----------------------------------+-----------+--------------------+------------------+-----------------------+-------------------+----------------------------------+----------------------------------+
        1 | 16b20c35abefaec10000000000000001 | root      | 192.168.1.11:11373 | $ hubble sql     | SHOW CLUSTER SESSIONS | SHOW database     | 2021-10-28 01:03:59.346244+00:00 | 2021-10-28 01:23:34.070655+00:00  
(1 row)

查询指定用户的session信息

SELECT * FROM [SHOW CLUSTER SESSIONS] WHERE user_name = 'beagledata';

SHOW QUERIES

可以使用SHOW QUERIESSHOW CLUSTER QUERIES查询当前活跃的SQL的执行信息。

返回参数说明

列名说明
query_id查询ID
node_id当前连接的节点ID
username当前连接的用户名
start查询开始的时间
query查询的SQL语句
client_adress发起这条查询的客户端地址与端口
application_name客户端使用的具体名称
distributedtrue:这条查询会被分布式SQL执行引擎(DistSQL)执行。
false:查询会通过本地的SQL引擎执行。
null:表示该条查询正在准备,不知道会通过哪种引擎执行。
phase查询执行的阶段。如果是if preparing,表示这条查询正在被解析和生成执行计划。如果是executing,表示这条语句正在执行。
SHOW QUERIES;
              query_id             | node_id | user_name |              start               |        query         |   client_address   | application_name | distributed |   phase    
+----------------------------------+---------+-----------+----------------------------------+----------------------+--------------------+------------------+-------------+-----------+
  16b20ecf05fae0a60000000000000001 |       1 | root      | 2021-10-28 01:51:37.010185+00:00 | SHOW CLUSTER QUERIES | 192.168.1.11:11373 | $ hubble sql     |    false    | executing  
(1 row)

查看整个集群的SQL

SHOW CLUSTER QUERIES;
SHOW queries;
              query_id             | node_id | user_name |              start               |        query         |   client_address   | application_name | distributed |   phase    
+----------------------------------+---------+-----------+----------------------------------+----------------------+--------------------+------------------+-------------+-----------+
  16b20f390f56a7a30000000000000001 |       1 | root      | 2021-10-28 01:59:12.433748+00:00 | SHOW CLUSTER QUERIES | 192.168.1.11:11373 | $ hubble sql     |    false    | executing  
(1 row)

查看当前节点SQL

SHOW LOCAL queries;
              query_id             | node_id | user_name |              start               |       query        |   client_address   | application_name | distributed |   phase    
+----------------------------------+---------+-----------+----------------------------------+--------------------+--------------------+------------------+-------------+-----------+
  16b20f60f8928e3f0000000000000001 |       1 | root      | 2021-10-28 02:02:03.850485+00:00 | SHOW LOCAL QUERIES | 192.168.1.11:11373 | $ hubble sql     |    false    | executing  
(1 row)

查看具体的查询任务,可将SHOW QUERIES作为SELECT语句的数据源用于过滤SQL,通过WHERE条件查找。

SELECT * FROM [ SHOW QUERIES ] WHERE node_id=1; 
SELECT * FROM [ SHOW QUERIES ] WHERE START < (now()-INTERVAL '3 hours'); 
SELECT * FROM [ SHOW QUERIES ] 
  WHERE client_address='192.168.100.113:32135' 
  AND user_name='beagledata'; 
SELECT * FROM [ SHOW QUERIES ] WHERE application_name='hubbleapplication';

查询指定用户的query信息

SELECT * FROM [SHOW CLUSTER QUERIES] WHERE user_name = 'beagledata';

CANCEL QUERY

用于取消正在运行的SQL查询

所需权限

root用户可以取消任何当前状态为active的查询,而非root用户只取消他们自己当前状态为active的查询。

CANCEL QUERY '15d611a6c5a6307f0000000000000001';
CANCEL QUERY (
    SELECT query_id FROM [SHOW CLUSTER QUERIES] 
    WHERE client_address = '192.168.100.113:32135'
	AND user_name = 'beagledata'
	AND query = 'SELECT * FROM test.beagledata ORDER BY k' limit 1 );

CANCEL QUERY只能用于单个查询query id。如果使用的子查询并返回多个query id,CANCEL QUERY语句将失败。

SHOW ALL

使用SHOW ALL语句可以查看当前session中所有的变量的值:

SHOW ALL;

查看一个具体变量的值时,可以使用SHOW SESSION varableName

例如,查看编码格式:

SHOW SESSION client_encoding;
  client_encoding  
+-----------------+
  UTF8             
(1 row)

SET

使用SET语句可以修改客户端session中变量的值

参数说明

变量名称默认值说明
application_name$ hubble sql应用名称
databasedefaultdb数据库名
default_transaction_prioritynormal默认事务优先权
default_transaction_use_follower_readsoff用于允许事务使用跟随者读取。
disable_partially_distributed_plansoff禁用部分分发状态
disallow_full_table_scansoff执行全表扫描的语句将被记录到慢查询日志中,即使它们不满足延迟阈值。必须启用慢查询日志才能使此设置生效。
enable_copying_partitioning_when_deinterleaving_tableoff启用复制分区取消表
enable_drop_enum_valueoff启用删除枚举值
enable_experimental_alter_column_type_generaloff启用实验更改列类型
enable_experimental_stream_replicationoff启用实验流复制,使能够集群流式传输
enable_implicit_select_for_updateon启用隐式查询锁
enable_insert_fast_pathon是否将使用专门的执行运算符来插入表。建议保留此设置on。
enable_seqscanon启用序列扫描
escape_string_warningon避免字符警告
experimental_distsql_planningoff分布式sql计划
experimental_enable_hash_sharded_indexesoff启用hash分片索引
experimental_enable_implicit_column_partitioningoff允许使用隐式列分区
experimental_enable_temp_tablesoff默认允许使用临时表
experimental_enable_unique_without_index_constraintsoff默认禁用没有唯一性的索引约束
experimental_use_new_schema_changeroff是否对支持的语句使用声明性模式更改器。
foreign_key_cascades_limit10000限制作为单个查询的一部分运行的级联操作的数量
idle_in_session_timeout0自动终止超过指定阈值的空闲会话。
locality_optimized_partitioned_index_scanon启用在搜索远程区域之前搜索当前区域中的行
optimizer_improve_disjunction_selectivityoff更准确地估计查询过滤器的选择性
optimizer_use_histogramson优化器使用收集的直方图进行基数估计。
optimizer_use_multicol_statson优化器使用收集的多列统计信息进行基数估计。
override_multi_region_zone_configoff允许覆盖多区域表或数据库的区域配置
prefer_lookup_joins_for_fksoff使外键操作使用查找连接
require_explicit_primary_keysoff在CREATE TABLE语句中显式主键的默认值
serial_normalizationrowid表定义中 SERIAL 的默认处理
session_id当前会话的ID
stub_catalog_tablesonstub_catalog_tables 会话设置的默认值
synchronous_commiton同步提交
testing_vectorize_inject_panicsoff用于测试矢量化注入

指定当前数据库:

SET database=database_0922;
  • idle_in_session_timeout实例

自动终止超过指定阈值的空闲会话。当设置为0时,会话不会超时。

show session idle_in_session_timeout;
  idle_in_session_timeout
---------------------------
  0
(1 row)
select current_time;
    current_time
----------------------
  11:41:31.810453+08
(1 row)
select current_time;
     current_time
----------------------
  11:42:26.815024+08
(1 row)

设置 10s 超时

set idle_in_session_timeout='10s';
select current_time;
    current_time
---------------------
  11:43:43.89054+08
(1 row)
select current_time;
invalid syntax: statement ignored: unexpected error: write tcp 192.168.100.134:27604->192.168.100.134:35432: write: broken pipe
warning: error retrieving the transaction status: write tcp 192.168.100.134:27604->192.168.100.134:35432: write: broken pipe
warning: error retrieving the database name: write tcp 192.168.100.134:27604->192.168.100.134:35432: write: broken pipe
root@ty-bj03-test04:35432/? ?> 
  • 关于时区

默认时区为UTC,如果需要修改客户端显示的时区,设置后显示的时间即为中国时间。

SET timezone='Asia/Shanghai';
  • session变量传参设置功能options
jdbc:postgresql://xx:35432/defaultdb?ssl=true&sslmode=require&options=--statement_timeout=1000

SHOW CLUSTER SETTING

  • 集群变量
变量名称默认值说明
changefeed.experimental_poll_interval1s实现的轮询间隔(可能会损害集群的稳定性或正确性;请勿在没有监督的情况下进行编辑)
cloudstorage.timeout10ms导入/导出存储操作的超时
schemachanger.backfiller.max_sst_size16MiB读取文件的目标大小
diagnostics.reporting.enabledtrue允许向实验室报告诊断指标
diagnostics.reporting.send_crash_reportstrue发送崩溃和报告
external.graphite.interval10s指标推的送时间间隔
jobs.registry.leniency1ms推迟任何重新安排工作的尝试的时间
kv.allocator.lease_rebalancing_aggressiveness1设置大于1以更积极地重新平衡租约,或设置在 0 和1.0 之间以更保守​​地重新平衡租约
kv.allocator.load_based_lease_rebalancing.enabledtrue设置以启用基于负载和延迟的范围租约的重新平衡
kv.allocator.qps_rebalance_threshold0.25与QPS的平均值相差的最小分数可以被认为是过满或过满
kv.bulk_ingest.buffer_increment32MiB批量添加器在刷新之前尝试增加其缓冲区的大小
kv.bulk_ingest.index_buffer_size32MiB处理二级索引导入的缓冲区的初始大小
kv.bulk_ingest.max_index_buffer_size51 MiB处理二级索引导入的缓冲区的最大大小
kv.bulk_ingest.max_pk_buffer_size128MiB处理主索引导入的缓冲区最大大小
kv.bulk_ingest.pk_buffer_size32MiB处理主索引导入的缓冲区的初始大小
kv.bulk_io_write.concurrent_addsstable_requests1存储在排队之前将同时处理的请求数
kv.bulk_io_write.concurrent_export_requests3排队之前将同时处理的导出请求数
kv.bulk_io_write.concurrent_import_requests1排队之前将同时处理的导入请求数
kv.bulk_io_write.experimental_incremental_export_enabledfalse在 BACKUP中导出时使用实验性的时间限制文件过滤器
kv.bulk_io_write.max_rate1.0TiB代表批量 用于写入磁盘的速率限制(字节/秒)
kv.bulk_io_write.small_write_size400KiB低于该大小的批量写入将作为普通写入执行
kv.closed_timestamp.close_fraction0.2关闭时间戳目标持续时间的分数
kv.closed_timestamp.follower_reads_enabledtrue允许副本根据封闭的时间戳信息提供一致的历史读取
kv.raft_log.disable_synchronization_unsafefalse设置 true以禁用 Raft日志写入持久存储的同步。设置为 true会导致服务器崩溃时数据丢失或数据损坏。该设置仅用于内部测试,不应在生产中使用。
kv.range_descriptor_cache.size1000000范围描述符和租用者缓存中的最大条目数
kv.range_merge.queue_enabledtrue是否启用自动合并队列
kv.range_merge.queue_interval1s合并队列在处理副本之间等待多长时间
kv.range_split.by_load_enabledtrue允许根据负载集中的位置自动分割范围
kv.snapshot_rebalance.max_rate8MiB用于重新平衡和复制快照的速率限制(字节/秒)
kv.snapshot_recovery.max_rate8MiB用于恢复快照的速率限制(字节/秒)
kv.transaction.max_intents_bytes262144用于跟踪事务中写入意图的最大字节数
kv.transaction.max_refresh_spans_bytes256000用于跟踪可序列化事务中的刷新跨度的最大字节数
kv.transaction.parallel_commits_enabledtrue如果启用,事务提交将与事务写入并行
kv.transaction.write_pipelining_enabledtrue如果启用,事务写入通过 Raft共识流水线化
kv.transaction.write_pipelining_max_batch_size128如果非零,则定义将通过 Raft共识流水线化的最大批量
kv.transaction.write_pipelining_max_outstanding_size256 KiB在禁用流水线之前用于跟踪正在进行的流水线写入的最大字节数
schemachanger.backfiller.buffer_increment32MiB加载器在刷新之前尝试增加其缓冲区的大小
schemachanger.backfiller.buffer_size32MiB缓冲区处理索引回填的初始大小
schemachanger.backfiller.max_buffer_size512MiB缓冲区处理索引回填的最大大小
schemachanger.backfiller.max_sst_size16 MiB读取文件的目标大小
server.consistency_check.interval24h范围一致性检查间隔的时间;设置 0以禁用一致性检查
server.failed_reservation_timeout5s预留调用失败后考虑限制存储进行复制的时间量
server.heap_profile.max_profiles5要保留的最大配置文件数。分数较低的配置文件被 GC处理,但始终保留最新的配置文件。
server.web_session_timeout168h新创建的 Web会话有效的持续时间
sql.defaults.default_int_size8INT类型的大小(以字节为单位)
sql.defaults.distsqlauto默认分布式SQL执行模式[off = 0,auto = 1,on = 2]
sql.defaults.experimental_optimizer_foreign_keys.enabledfalse默认启用优化器驱动的外键检查
sql.defaults.results_buffer.size16 KiB在将语句或一批语句发送到客户端之前累积结果的缓冲区的默认大小。
sql.defaults.vectorizeon默认矢量化模式 [off = 0,on = 1]
sql.defaults.vectorize_row_count_threshold1000默认矢量化行计数值
sql.distsql.flow_stream_timeout10s输入流在出错之前等待设置流的时间量
sql.distsql.max_running_flows500一个节点上可以运行的最大并发流数
sql.distsql.temp_storage.workmem64MiB处理器在回退到临时存储之前可以使用的最大内存量(以字节为单位)
sql.metrics.statement_details.dump_to_logsfalse定期清除时将收集的语句统计信息转储到节点日志
sql.metrics.statement_details.enabledtrue收集每个语句的查询统计信息
sql.metrics.statement_details.plan_collection.enabledtrue定期为每个指纹保存一个逻辑计划
sql.metrics.statement_details.plan_collection.period5ms收集新逻辑计划的时间
sql.metrics.statement_details.threshold0s收集统计信息的最短执行时间
sql.metrics.transaction_details.enabledtrue收集每个应用程序的事务统计信息
sql.query_cache.enabledtrue启用查询缓存
sql.stats.automatic_collection.enabledtrue自动统计收集模式
sql.stats.histogram_collection.enabledtrue直方图采集模式
sql.tablecache.lease.refresh_limit50定期刷新租约的最大数
sql.trace.log_statement_executefalse设置为true以启用已执行语句的日志记录
sql.trace.session_eventlog.enabledfalse设置为true以启用会话跟踪
sql.trace.txn.enable_threshold0s跟踪所有事务的持续时间(设置为 0 以禁用)
timeseries.storage.enabledtrue如果设置true,则将周期性时间序列数据存储在集群中

查看一个或多个clister setting的值,也可以通过SET CLUSTER SETTING进行配置。

查看所有Cluster Setting的值,需要admin权限

SHOW ALL CLUSTER SETTINGS;

使用SET CLUSTER SETTING语句可以修改集群中变量的默认值。

需要用户拥有admin权限

SET CLUSTER SETTING <variable>=<value>;

例如:执行语句超时时间设置,默认值0

SET CLUSTER SETTING sql.defaults.statement_timeout = '0s';

EXPERIMENTAL_AUDIT

语句用来打开或关闭表的SQL审计。

所需权限

只有root用户可以打开表的审计日志

审计日志包含有关针对你的系统执行查询的详细信息,包括

  • 查询语句全文
  • 时间
  • 客户端地址
  • 应用名
ALTER TABLE customers experimental_audit SET READ WRITE;

开启后,将会把所有关于这个表的操作记录在日志中。

ALTER TABLE customers EXPERIMENTAL_AUDIT SET OFF;