TDSQL Boundless CONCURRENCY_CONTROL

sys.concurrency_control 系统表用于持久化存储 CCL(Concurrency Control List,并发控制列表)规则。通过 dbms_admin.ccl_add_rule、ccl_add_normal_rule、ccl_add_digest_rule、ccl_add_digest_text_rule 添加的规则,以及通过 ccl_del_rule 删除的规则,均会写入或移除此表。实例重启。

相关产品
TDSQL Boundless 产品页,含版本规格、价格与购买入口。

一、支持版本

适用于 TDSQL Boundless V21.6.4.0 及以上版本。

二、字段说明

sys.concurrency_control 表共包含17个字段,字段定义如下:

字段名 类型 说明
Id BIGINT 规则 ID,自增主键,唯一标识一条并发控制规则。
Type ENUM 规则类型,取值 SELECT、UPDATE、INSERT、DELETE、REPLACE、DIGEST。
Schema_name VARCHAR(64) 规则作用的库名。普通规则需与 Table_name 同时为空或同时非空;digest 规则中为空表示全局匹配,非空表示仅在该库内生效。
Table_name VARCHAR(64) 规则作用的表名。普通规则需与 Schema_name 同时为空或同时非空;digest 规则中此字段必须为空。
Concurrency_count BIGINT 匹配该规则的 SQL 允许同时执行的最大并发数。并发已满时按 Wait_timeout 与 Max_waiting_count 决定等待或拒绝。
Wait_timeout BIGINT UNSIGNED 并发已满时新请求的等待超时时间(秒)。0 表示不等待、直接拒绝。取值范围 0 – 31536000。
Max_waiting_count BIGINT UNSIGNED 等待队列最大长度。达到该值后新请求被直接拒绝。0 表示不允许等待。取值范围 0 – 9223372036854775807。
Descriptor TEXT 规则描述符。普通规则为关键词,多个关键词以 ; 分隔;digest 规则为 64 位十六进制 digest 哈希值。
State ENUM 规则状态。Y 表示启用,N 表示停用。停用的规则不参与匹配。
Ordered ENUM 关键词是否有序匹配。Y 表示按顺序匹配,N 表示无序匹配。
Case_sensitive ENUM 关键词是否区分大小写。Y 表示区分,N 表示不区分。
Host VARCHAR(255) 匹配的客户端 IP,为空表示不限制 IP。仅 ccl_add_rule 添加的规则包含此维度。
User_name TEXT 匹配的数据库用户名,为空表示不限制用户。仅 ccl_add_rule 添加的规则包含此维度。
Comment TEXT 规则备注,便于标识和管理。
Applied_node TEXT 规则应用的节点信息。当前版本为预留字段,通过存储过程添加的规则该字段为空。
Extra TEXT 扩展信息字段,预留供后续功能使用。
Template TEXT 由 ccl_add_digest_text_rule 添加的 digest 规则对应的标准化 SQL 模板,便于人工识别规则对应的 SQL 形态。通过 ccl_add_digest_rule 添加的 digest 规则和普通规则该字段为空。

注意:说明:

三、示例

# 1. 查询当前所有 CCL 规则tdsql [test]> SELECT Id, Type, Schema_name, Table_name, Concurrency_count, Descriptor, Comment -> FROM sys.concurrency_control;+—-+———-+————-+————+———————+————-+———————–+| Id | Type | Schema_name | Table_name | Concurrency_count | Descriptor | Comment |+—-+———-+————-+————+———————+————-+———————–+| 1 | SELECT | ccl_test | t_ccl | 0 | LIMIT | refuse select LIMIT || 2 | DIGEST | | | 0 | 5f2b6e8c.. | global digest |+—-+———-+————-+————+———————+————-+———————–+2 rows in set# 2. 按备注查询规则 ID(用于删除)tdsql [test]> SELECT Id FROM sys.concurrency_control WHERE Comment = 'refuse select LIMIT';+—-+| Id |+—-+| 1 |+—-+1 row in set# 3. 直接修改表中的规则后,需调用 ccl_flush_rule 使变更生效到内存tdsql [test]> UPDATE sys.concurrency_control SET Concurrency_count = 5 WHERE Id = 1;Query OK, 1 row affectedtdsql [test]> CALL dbms_admin.ccl_flush_rule();Query OK, 0 rows affected# 4. 直接清空全部规则(谨慎操作)tdsql [test]> DELETE FROM sys.concurrency_control;Query OK, 2 rows affectedtdsql [test]> CALL dbms_admin.ccl_flush_rule();Query OK, 0 rows affected

赞 (0)
上一篇 4天前
下一篇 4天前