显示会话的详细信息:包括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 CLUSTER QUERIES
查询当前活跃的SQL的执行信息。
返回参数说明
列名 | 说明 |
---|---|
query_id | 查询ID |
node_id | 当前连接的节点ID |
username | 当前连接的用户名 |
start | 查询开始的时间 |
query | 查询的SQL语句 |
client_adress | 发起这条查询的客户端地址与端口 |
application_name | 客户端使用的具体名称 |
distributed | true :这条查询会被分布式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';
用于取消正在运行的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
语句可以查看当前session
中所有的变量的值:
SHOW ALL;
查看一个具体变量的值时,可以使用SHOW SESSION varableName
;
例如,查看编码格式:
SHOW SESSION client_encoding;
client_encoding
+-----------------+
UTF8
(1 row)
使用SET
语句可以修改客户端session
中变量的值
参数说明
变量名称 | 默认值 | 说明 |
---|---|---|
application_name | $ hubble sql | 应用名称 |
database | defaultdb | 数据库名 |
default_transaction_priority | normal | 默认事务优先权 |
default_transaction_use_follower_reads | off | 用于允许事务使用跟随者读取。 |
disable_partially_distributed_plans | off | 禁用部分分发状态 |
disallow_full_table_scans | off | 执行全表扫描的语句将被记录到慢查询日志中,即使它们不满足延迟阈值。必须启用慢查询日志才能使此设置生效。 |
enable_copying_partitioning_when_deinterleaving_table | off | 启用复制分区取消表 |
enable_drop_enum_value | off | 启用删除枚举值 |
enable_experimental_alter_column_type_general | off | 启用实验更改列类型 |
enable_experimental_stream_replication | off | 启用实验流复制,使能够集群流式传输 |
enable_implicit_select_for_update | on | 启用隐式查询锁 |
enable_insert_fast_path | on | 是否将使用专门的执行运算符来插入表。建议保留此设置on。 |
enable_seqscan | on | 启用序列扫描 |
escape_string_warning | on | 避免字符警告 |
experimental_distsql_planning | off | 分布式sql计划 |
experimental_enable_hash_sharded_indexes | off | 启用hash分片索引 |
experimental_enable_implicit_column_partitioning | off | 允许使用隐式列分区 |
experimental_enable_temp_tables | off | 默认允许使用临时表 |
experimental_enable_unique_without_index_constraints | off | 默认禁用没有唯一性的索引约束 |
experimental_use_new_schema_changer | off | 是否对支持的语句使用声明性模式更改器。 |
foreign_key_cascades_limit | 10000 | 限制作为单个查询的一部分运行的级联操作的数量 |
idle_in_session_timeout | 0 | 自动终止超过指定阈值的空闲会话。 |
locality_optimized_partitioned_index_scan | on | 启用在搜索远程区域之前搜索当前区域中的行 |
optimizer_improve_disjunction_selectivity | off | 更准确地估计查询过滤器的选择性 |
optimizer_use_histograms | on | 优化器使用收集的直方图进行基数估计。 |
optimizer_use_multicol_stats | on | 优化器使用收集的多列统计信息进行基数估计。 |
override_multi_region_zone_config | off | 允许覆盖多区域表或数据库的区域配置 |
prefer_lookup_joins_for_fks | off | 使外键操作使用查找连接 |
require_explicit_primary_keys | off | 在CREATE TABLE语句中显式主键的默认值 |
serial_normalization | rowid | 表定义中 SERIAL 的默认处理 |
session_id | 当前会话的ID | |
stub_catalog_tables | on | stub_catalog_tables 会话设置的默认值 |
synchronous_commit | on | 同步提交 |
testing_vectorize_inject_panics | off | 用于测试矢量化注入 |
指定当前数据库:
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
变量名称 | 默认值 | 说明 |
---|---|---|
changefeed.experimental_poll_interval | 1s | 实现的轮询间隔(可能会损害集群的稳定性或正确性;请勿在没有监督的情况下进行编辑) |
cloudstorage.timeout | 10ms | 导入/导出存储操作的超时 |
schemachanger.backfiller.max_sst_size | 16MiB | 读取文件的目标大小 |
diagnostics.reporting.enabled | true | 允许向实验室报告诊断指标 |
diagnostics.reporting.send_crash_reports | true | 发送崩溃和报告 |
external.graphite.interval | 10s | 指标推的送时间间隔 |
jobs.registry.leniency | 1ms | 推迟任何重新安排工作的尝试的时间 |
kv.allocator.lease_rebalancing_aggressiveness | 1 | 设置大于1以更积极地重新平衡租约,或设置在 0 和1.0 之间以更保守地重新平衡租约 |
kv.allocator.load_based_lease_rebalancing.enabled | true | 设置以启用基于负载和延迟的范围租约的重新平衡 |
kv.allocator.qps_rebalance_threshold | 0.25 | 与QPS的平均值相差的最小分数可以被认为是过满或过满 |
kv.bulk_ingest.buffer_increment | 32MiB | 批量添加器在刷新之前尝试增加其缓冲区的大小 |
kv.bulk_ingest.index_buffer_size | 32MiB | 处理二级索引导入的缓冲区的初始大小 |
kv.bulk_ingest.max_index_buffer_size | 51 MiB | 处理二级索引导入的缓冲区的最大大小 |
kv.bulk_ingest.max_pk_buffer_size | 128MiB | 处理主索引导入的缓冲区最大大小 |
kv.bulk_ingest.pk_buffer_size | 32MiB | 处理主索引导入的缓冲区的初始大小 |
kv.bulk_io_write.concurrent_addsstable_requests | 1 | 存储在排队之前将同时处理的请求数 |
kv.bulk_io_write.concurrent_export_requests | 3 | 排队之前将同时处理的导出请求数 |
kv.bulk_io_write.concurrent_import_requests | 1 | 排队之前将同时处理的导入请求数 |
kv.bulk_io_write.experimental_incremental_export_enabled | false | 在 BACKUP中导出时使用实验性的时间限制文件过滤器 |
kv.bulk_io_write.max_rate | 1.0TiB | 代表批量 用于写入磁盘的速率限制(字节/秒) |
kv.bulk_io_write.small_write_size | 400KiB | 低于该大小的批量写入将作为普通写入执行 |
kv.closed_timestamp.close_fraction | 0.2 | 关闭时间戳目标持续时间的分数 |
kv.closed_timestamp.follower_reads_enabled | true | 允许副本根据封闭的时间戳信息提供一致的历史读取 |
kv.raft_log.disable_synchronization_unsafe | false | 设置 true以禁用 Raft日志写入持久存储的同步。设置为 true会导致服务器崩溃时数据丢失或数据损坏。该设置仅用于内部测试,不应在生产中使用。 |
kv.range_descriptor_cache.size | 1000000 | 范围描述符和租用者缓存中的最大条目数 |
kv.range_merge.queue_enabled | true | 是否启用自动合并队列 |
kv.range_merge.queue_interval | 1s | 合并队列在处理副本之间等待多长时间 |
kv.range_split.by_load_enabled | true | 允许根据负载集中的位置自动分割范围 |
kv.snapshot_rebalance.max_rate | 8MiB | 用于重新平衡和复制快照的速率限制(字节/秒) |
kv.snapshot_recovery.max_rate | 8MiB | 用于恢复快照的速率限制(字节/秒) |
kv.transaction.max_intents_bytes | 262144 | 用于跟踪事务中写入意图的最大字节数 |
kv.transaction.max_refresh_spans_bytes | 256000 | 用于跟踪可序列化事务中的刷新跨度的最大字节数 |
kv.transaction.parallel_commits_enabled | true | 如果启用,事务提交将与事务写入并行 |
kv.transaction.write_pipelining_enabled | true | 如果启用,事务写入通过 Raft共识流水线化 |
kv.transaction.write_pipelining_max_batch_size | 128 | 如果非零,则定义将通过 Raft共识流水线化的最大批量 |
kv.transaction.write_pipelining_max_outstanding_size | 256 KiB | 在禁用流水线之前用于跟踪正在进行的流水线写入的最大字节数 |
schemachanger.backfiller.buffer_increment | 32MiB | 加载器在刷新之前尝试增加其缓冲区的大小 |
schemachanger.backfiller.buffer_size | 32MiB | 缓冲区处理索引回填的初始大小 |
schemachanger.backfiller.max_buffer_size | 512MiB | 缓冲区处理索引回填的最大大小 |
schemachanger.backfiller.max_sst_size | 16 MiB | 读取文件的目标大小 |
server.consistency_check.interval | 24h | 范围一致性检查间隔的时间;设置 0以禁用一致性检查 |
server.failed_reservation_timeout | 5s | 预留调用失败后考虑限制存储进行复制的时间量 |
server.heap_profile.max_profiles | 5 | 要保留的最大配置文件数。分数较低的配置文件被 GC处理,但始终保留最新的配置文件。 |
server.web_session_timeout | 168h | 新创建的 Web会话有效的持续时间 |
sql.defaults.default_int_size | 8 | INT类型的大小(以字节为单位) |
sql.defaults.distsql | auto | 默认分布式SQL执行模式[off = 0,auto = 1,on = 2] |
sql.defaults.experimental_optimizer_foreign_keys.enabled | false | 默认启用优化器驱动的外键检查 |
sql.defaults.results_buffer.size | 16 KiB | 在将语句或一批语句发送到客户端之前累积结果的缓冲区的默认大小。 |
sql.defaults.vectorize | on | 默认矢量化模式 [off = 0,on = 1] |
sql.defaults.vectorize_row_count_threshold | 1000 | 默认矢量化行计数值 |
sql.distsql.flow_stream_timeout | 10s | 输入流在出错之前等待设置流的时间量 |
sql.distsql.max_running_flows | 500 | 一个节点上可以运行的最大并发流数 |
sql.distsql.temp_storage.workmem | 64MiB | 处理器在回退到临时存储之前可以使用的最大内存量(以字节为单位) |
sql.metrics.statement_details.dump_to_logs | false | 定期清除时将收集的语句统计信息转储到节点日志 |
sql.metrics.statement_details.enabled | true | 收集每个语句的查询统计信息 |
sql.metrics.statement_details.plan_collection.enabled | true | 定期为每个指纹保存一个逻辑计划 |
sql.metrics.statement_details.plan_collection.period | 5ms | 收集新逻辑计划的时间 |
sql.metrics.statement_details.threshold | 0s | 收集统计信息的最短执行时间 |
sql.metrics.transaction_details.enabled | true | 收集每个应用程序的事务统计信息 |
sql.query_cache.enabled | true | 启用查询缓存 |
sql.stats.automatic_collection.enabled | true | 自动统计收集模式 |
sql.stats.histogram_collection.enabled | true | 直方图采集模式 |
sql.tablecache.lease.refresh_limit | 50 | 定期刷新租约的最大数 |
sql.trace.log_statement_execute | false | 设置为true以启用已执行语句的日志记录 |
sql.trace.session_eventlog.enabled | false | 设置为true以启用会话跟踪 |
sql.trace.txn.enable_threshold | 0s | 跟踪所有事务的持续时间(设置为 0 以禁用) |
timeseries.storage.enabled | true | 如果设置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';
语句用来打开或关闭表的SQL审计。
所需权限
只有root用户可以打开表的审计日志
审计日志包含有关针对你的系统执行查询的详细信息,包括
ALTER TABLE customers experimental_audit SET READ WRITE;
开启后,将会把所有关于这个表的操作记录在日志中。
ALTER TABLE customers EXPERIMENTAL_AUDIT SET OFF;