暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【华为云MySQL技术专栏】让数据库业务更稳定:详解TaurusDB SQL限流机制

GaussDB数据库 2025-03-28
20

1


背景介绍


在实际生产环境中,尤其是在高并发的业务场景中,某些SQL语句可能会对数据库性能产生严重的负面影响,具体表现如下:


1)复杂的查询操作会占用大量资源,导致系统资源紧张;

2)可能会阻塞正常查询的执行,最终导致整体性能显著下降;

3)短时间出现突发流量,导致数据库瞬间过载,进而影响系统的稳定性。


在这些情况下,如果数据库的CPU资源被完全占用,所有依赖该数据库的业务都会受到影响,尤其是核心业务的正常运行可能会受到严重威胁。因此,必须采取有效的方法来限制那些对CPU资源消耗较大的SQL语句的执行。


SQL限流特性(SQL Filter)为解决这一问题,提供了有效思路。


SQL限流是一种用于控制数据库查询执行频率和资源占用的机制,能够防止某些SQL语句因过度消耗数据库资源,而影响其他查询的性能或导致系统不稳定。这一特性在高并发场景、多租户环境或资源受限的系统中尤为重要。


实现SQL限流的方法有很多种。例如,通过调整连接池的参数,可以有效限制系统的并发连接数,从而实现限流,又或者通控制数据库访问频率来限流。


2


TaurusDB SQL限流功能介绍


TaurusDBSQL限流特性基于查询规则关键字匹配实现。它通过识别SQL语句的类型、匹配配置的规则关键字,并结合SQL的并发度限制,实现对业务流量的精准控制,防止高负载SQL对系统资源的过度消耗,保障数据库在高并发场景下的稳定性和性能。


SQL限流总体处理流程示意图如下所示:


1 TaurusDB SQL限流功能流程图


主要处理流程可以分为两部分:

1)限流规则解析;

2)限流规则的匹配与应用。


限流规则解析


当启用SQL限流特性开关,并在管理界面上添加相应的规则后,后台会将配置的规则进行拼接并发送至服务端。


2 TaurusDB SQL限流添加规则界面图


2是一个新建SQL限流规则的管理界面。其中,

1SQL 类型TaurusDB 支持对 SELECTDELETEUPDATE  INSERT 类型的 SQL 语句进行限流。用户可以根据业务需求选择相应的 SQL 类型来配置限流规则。


2关键字生成方式TaurusDB 提供2种关键字生成方式:“直接输入关键字”与“从原始 SQL 语句中生成关键字”。


3关键字。这是指限流规则中需要匹配的字符内容。


4最大并发度。用户可以为限流规则选择最大并发度,最小可设置值为 0


5会话管理和规则同步功能TaurusDB 支持“kill满足规则的已有会话”和“同步规则给其他节点”

以添加SELECT类型限流规则为例,下面展开介绍限流规则的处理流程。


3 TaurusDB 添加两条SQL限流规则


3中添加了两条SELECT类型的限流规则:

服务端接收到的是一串同类型限流规则拼接而成的字符串,例如:“select~from~t1~where~id,0;select~from~t2~where~name,1”。该字符串中包含了两条限流规则:


规则1:限流关键字为“select”、“from”、“t1”、“where”、“id”,最大并发度为0


规则2:限流关键字为“select”、“from”、“t2”、“where”、“name”,最大并发度为1


限流规则的解析处理流程,如图4所示,主要包括以下几个步骤:

限流规则解析流程图


1

字符总长度校验


对接收到的规则字符串进行长度校验,确保其长度不超过4000 bytes。

2

字符串分割


将规则集合字符串拆分为单条规则(如图4中限流规则1和限流规则2)。

3

Filter Header检查


验证每条规则的第一个关键词是否符合预期类型。例如,若添加的是SELECT类型的限流规则,则第一个关键词必须以“select”开头。

4

字符串分割


将单条限流规则中的“关键词集合”和“并发度”进行拆分。

5

字符长度检查


对关键词集合进行长度检查,确保其长度不超过1000 bytes。

6

字符串分割


将每条限流规则中的关键词,逐一拆分出来,以便后续匹配和处理。


通过以上步骤,系统能够准确解析限流规则,并根据配置的关键词和并发度实现精准的SQL流量控制。


限流规则的匹配与应用


限流规则的匹配与应用流程如图5所示,主要包括以下几个步骤:


限流规则匹配与应用流程图


1

检查SQL限流开关状态


只有在SQL限流功能开启时,系统才会进行限流规则的匹配。

2

获取QUERY的SQL类型


根据QUERY的语法结构,确定其SQL类型。例如,对于QUERY “SELECT * FROM t1 WHERE id = 1;”,其SQL类型为SELECT。

3

系统表查询


若QUERY涉及查询系统表,则QUERY不受限流规则的约束;若不涉及,则进入下一步。

4

获取对应类型的限流规则集合


根据QUERY SQL类型,获取对应的限流规则集合,这里获取的是SELECT类型的限流规则集合。

5

遍历SELECT类型的限流规则集合


通过遍历SELECT类型的限流规则集合,提取每条规则的关键词集合。

6

顺序匹配关键词


在QUERY中按顺序查找这些关键词。若QUERY能按顺序匹配到某条限流规则的所有关键字则进入下一步。

7

并发度检查


如果QUERY中按顺序匹配到某条规则的所有关键词,则检查该规则的并发度是否已达到上限。如果并发度已达上限,则终止该QUERY(KILL QUERY);否则,允许QUERY继续执行


通过以上流程,SQL限流功能能够精准控制高并发场景下的QUERY执行。


3


应用场景


1)高并发场景


在高并发环境下如突发流量,数据库段时间内接收到大量查询请求,导致系统过载,进而影响系统整体性能。通过SQL限流,可以有效控制并发的数量,确保数据库的稳定运行。


典型场景:电商大促、秒杀活动、节假日流量高峰、新闻热点事件、社交网络热点话题等。


2)核心业务保障


在资源有限的情况下,确保核心业务的稳定运行是首要任务。通过SQL限流,可以限制非核心业务的资源占用,为核心业务预留足够的资源。


典型场景:金融交易系统、在线支付系统、实时通信系统等。


3)复杂查询优化


某些复杂查询(如多表连接、子查询、复杂条件、聚合函数等)可能会消耗大量数据库资源,导致其他查询被阻塞或响应变慢。通过SQL限流,可以限制这类查询的执行频率或并发度,减轻其对系统的影响。


典型场景:数据分析、报表生成、批量数据处理等。


SQL限流在高并发,复杂查询场景下可以作为一种临时的保障手段,来减轻系统资源负载,保障核心业务的运行,但是开启SQL限流特性也会对性能有一定的影响。当限流规则数量较多时,由于SELECT/UPDATE/DELETE/INSERT语句每次执行时需要先做限流规则匹配,因此对于SELECT/UPDATE/DELETE/INSERT语句会有小幅度的性能劣化。客户在完成业务改造之后,需要删除相应的限流规则,减少SQL语句匹配限流规则的开销。


4


总结


SQL限流是确保数据库稳定性和性能的关键措施,尤其在高并发场景下。通过合理的限流策略,可以防止数据库资源过度占用,确保系统可用性和响应速度。SQL限流的实现方式多样,用户可以根据实际需求选择合适的方案。


TaurusDB的SQL限流机制,通过配置SQL类型、限流关键字和并发度,精准控制非核心业务的流量,确保数据库资源合理分配和高效利用,为关键业务的稳定运行提供保障。

END


华为云数据库 新用户


Flexus云数据库RDS 1年612元

(原价2400元)

RDS for MySQL单机版 1年611.5元


扫码抢购

        

活动时间:2025/3/1-2025/4/15

  戳“阅读原文”,了解更多

文章转载自GaussDB数据库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论