CREATE BLOCK RULE
功能描述
该语法用于创建一条查询过滤规则,包括查询过滤规则名称、绑定的客户端名称、客户端IP、用户以及匹配方式等。在日常数据库操作中,异常SQL的执行可能会导致资源过度消耗,影响数据库性能和稳定性,DWS支持通过创建查询过滤规则,将此类语句进行拦截。
本文档提供基础SQL语法,您也可以通过控制台进行配置,参见使用DWS查询过滤器拦截慢SQL。
注意事项
- 该语法仅9.1.0.100及以上集群版本支持。
- 只有拥有数据库所有者权限的用户或者授予gs_role_block角色权限的用户才能执行CREATE BLOCK RULE命令,系统管理员默认拥有此权限。
语法格式
1 2 3 4 5 6 |
CREATE BLOCK RULE [ IF NOT EXISTS ] block_name [ [ TO user_name@'host' ] | [ TO user_name ] | [ TO 'host' ] ] | [ FOR UPDATE | SELECT | INSERT | DELETE | MERGE ] | FILTER BY { SQL ( 'text' ) | TEMPLATE ( template_parameter = value ) } [ WITH ( { with_parameter = value }, [, ... ] ) ]; |
参数说明
参数 |
描述 |
取值范围 |
---|---|---|
block_name |
要创建的查询过滤规则名称。 |
字符串,需符合标识符命名规范。 |
user_name |
查询过滤规则适用的用户。 |
字符串,有效的用户名。 |
host |
查询过滤规则适用的客户端IP。 |
字符串,有效的IP地址。 |
SQL |
查询过滤规则正则匹配语句。 |
字符串,正则表达式。正则匹配的语句或者关键词长度不能超过1024个字符。 |
template_parameter |
查询过滤规则匹配模板。 |
unique_sql_id或sql_hash。 其值为字符串,其中unique_sql_id必须为全数字。 |
with_parameter |
查询过滤规则选项参数。 |
以下选项可以一起设置,满足任何一个参数的限制查询将会被过滤。
|
示例
创建名称为query_block的查询过滤规则。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
CREATE BLOCK RULE query_block TO user1@'192.168.x.x' FOR SELECT FILTER BY SQL('select * from table_name') WITH ( application_name='gsql', query_band='test1', table_num='2', partition_num='3', estimate_row='1000', resource_pool='rsp1', max_active_num='3', is_warning='off' ) ; CREATE BLOCK RULE query_block FILTER BY TEMPLATE(unique_sql_id='1634655172'); CREATE BLOCK RULE query_block FILTER BY TEMPLATE(sql_hash='sql_c3d119fe636b9ef439b1f96c561c74ff'); |