本申请涉及数据库,尤其涉及一种sql语句执行方法、装置、电子设备及机器可读存储介质。
背景技术:
1、结构化查询语言(structured query language,sql)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理数据库系统。在数据库系统中,sql语句的执行过程通常包括查询解析、执行计划生成和执行等步骤。其中,sql语句执行计划的生成是sql语句执行效率优化的关键所在。
2、传统的sql语句执行计划是在sql语句执行之前固定生成的,然而,在很多情况下由于各种原因,该固定生成的执行计划可能并不适合当前的sql语句,导致sql语句的执行效率下降,进而影响数据库的整体性能。
技术实现思路
1、第一方面,本申请提供了一种sql语句执行方法,包括:
2、获取待执行的目标sql语句,并解析所述目标sql语句;
3、基于解析结果确定所述目标sql语句的语句类型,并从预先构建的执行计划库中选择出与所述目标sql语句的语句类型相匹配的目标执行计划;所述执行计划库中包含与多种语句类型对应的多个执行计划;
4、基于所述目标执行计划,执行所述目标sql语句。
5、可选的,所述方法还包括:
6、基于已执行的多个历史sql语句的执行信息,构建所述执行计划库;所述执行信息包括历史sql语句的执行计划和历史sql语句的语句类型。
7、可选的,所述目标sql语句的语句类型包括所述目标sql语句所执行的数据操作的操作类型;其中,所述操作类型包括数据插入操作、数据删除操作、数据更改操作和数据查询操作中的任意一种。
8、可选的,所述目标sql语句为数据查询语句,所述目标sql语句的语句类型包括与数据查询操作对应的查询类型;其中,所述查询类型包括全表查询、字段查询、单表查询和数据表关联查询中的任意一种。
9、可选的,所述基于所述目标执行计划,执行所述目标sql语句,包括:
10、基于所述目标执行计划,执行所述目标sql语句,并在执行过程中,基于所述目标sql语句的执行情况,实时调整所述目标执行计划中的执行参数。
11、可选的,所述基于所述目标sql语句的执行情况,实时调整所述目标执行计划中的执行参数,包括:
12、基于所述目标sql语句执行过程中的cpu负载情况,实时调整所述目标执行计划中的执行参数;所述执行参数包括执行计划中的并行度、数据排序方式和缓存大小中的一个或多个。
13、可选的,所述目标sql语句为数据查询语句,所述基于所述目标sql语句的执行情况,实时调整所述目标执行计划中的执行参数,包括:
14、基于所述目标sql语句的查询类型、所述目标sql语句针对的待查询数据的数据量和分布方式中的任意一个或多个,实时调整所述目标执行计划中的执行参数;所述执行参数包括执行计划中的扫描方式和/或索引。
15、可选的,所述方法还包括:
16、响应于所述目标sql语句执行完成,将调整后的所述目标执行计划保存至所述执行计划库中。
17、第二方面,本申请提供了一种sql语句执行装置,包括:
18、语句解析单元,用于获取待执行的目标sql语句,并解析所述目标sql语句;
19、选择单元,用于基于解析结果确定所述目标sql语句的语句类型,并从预先构建的执行计划库中选择出与所述目标sql语句的语句类型相匹配的目标执行计划;所述执行计划库中包含与多种语句类型对应的多个执行计划;
20、执行单元,用于基于所述目标执行计划,执行所述目标sql语句。
21、本申请还提供了一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
22、所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行上述第一方面所述的sql语句执行方法。
23、本申请还提供了一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现上述第一方面所述的sql语句执行方法。
24、本申请提供的技术方案至少可以包括以下有益效果:
25、通过以上实施例,本申请可以预先构建执行计划库,该执行计划库中可以包含与sql语句的多种语句类型对应的多个执行计划。基于此,本申请在获取到待执行的目标sql语句后可以解析该目标sql语句,并基于解析结果确定该目标sql语句的语句类型,进而可以从预先构建的执行计划库中选择出与该目标sql语句的语句类型相匹配的目标执行计划。最后,本申请可以基于选择出的目标执行计划,执行该目标sql语句。如此,本申请通过预先构建执行计划库,实现从执行计划库包含的与多种语句类型对应的多个执行计划中,为当前待执行的sql语句选择合适的执行计划,进而提升sql语句执行效率。
26、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
1.一种sql语句执行方法,包括:
2.根据权利要求1所述方法,所述方法还包括:
3.根据权利要求1所述方法,所述目标sql语句的语句类型包括所述目标sql语句所执行的数据操作的操作类型;其中,所述操作类型包括数据插入操作、数据删除操作、数据更改操作和数据查询操作中的任意一种。
4.根据权利要求1所述方法,所述目标sql语句为数据查询语句,所述目标sql语句的语句类型包括与数据查询操作对应的查询类型;其中,所述查询类型包括全表查询、字段查询、单表查询和数据表关联查询中的任意一种。
5.根据权利要求1所述方法,所述基于所述目标执行计划,执行所述目标sql语句,包括:
6.根据权利要求5所述方法,所述基于所述目标sql语句的执行情况,实时调整所述目标执行计划中的执行参数,包括:
7.根据权利要求5所述方法,所述目标sql语句为数据查询语句,所述基于所述目标sql语句的执行情况,实时调整所述目标执行计划中的执行参数,包括:
8.根据权利要求5所述的方法,所述方法还包括:
9.一种sql语句执行装置,包括:
10.一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
11.一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现权利要求1至8任一项所述的方法。