「分布式技术专题」SQL 解析的 AP/TP 判别

通常SQL语句可以分为分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。

但在数据的操作上,可以根据SQL对于IO、CPU、内存等资源的消耗可以分为AP的SQL和TP的SQL。

通常情况下单个TP的SQL语句对于资源的消耗是非常的少的。而AP的SQL会消耗量的IO、内存、CPU等资源。过程如下图:

ap_tp_decide

SQL的判别可以从几个点入手:

1)基于规则的判别。

SQL语法可以解析为抽象语法解析树,通过观察者模型对语法解析数进行规则分析,提取出SQL语法的关键信息点可以进行简单的做甄别出SQL的类别。如TP 类SQL会有事务级别的插入、修改、删除等操作,也会有指定条件的简单查询等操。AP类SQL通常会有大量的分类统计与语法嵌套,根据类似SQL的规则的甄别可以通常可以判断出70%左右的SQL的类别。对于无法做到甄别的可以再通过算法模型做进一步判别

2)基于算法模型的判别。

基于算法模型的判别需要从几个步骤入手:训练集、验证集数据准备与标注、特征变量处理、训练模型选择、模型参数优化、验证准确性、根据验证准确性做进一步优化。

训练集、验证集准备:

开启数据库的日志记录功能,把SQL语句以及对应的资源消耗等记录记录下来,用做算法模型需要使用的数据,并把数据分成训练集合验证集。

特征变量处理:

可以对数据的特征变量进行进一步加工处理,如对SQL可以进一步处理为语法树,根据语法树展开放入到特征变量中去。

训练模型选择:

本次做的处理是分类模型,是对SQL语句或者SQL解析后的语法树进行分类,所以我们可以选择分类模型来处理这个事情,但由于数据库对于性能要求很高,所以在选择时也要从模型调用的性能做为考虑。

模型参数优化:

通常指的就是模型调参,这个是一个算法模型的常规做法根据不同的参数进行优化。

验证准确性:

把数据代入到验证集中对数据做进一步校验,验证算法的准确度。

以上为SQL 解析的 AP/TP 判别,「分布式技术专题」是国产数据库hubble团队精心整编,专题会持续更新,欢迎大家保持关注。

你可能感兴趣的:(「分布式技术专题」SQL 解析的 AP/TP 判别)