本申请属于数据库技术领域,具体公开了一种数据库负载均衡方法、装置、电子设备及存储介质,该方法包括:获取第一数据库语句;判断数据库语句负载信息结构是否存有第一数据库语句对应的负载统计信息,数据库语句负载信息结构用于存放数据库语句对应的负载统计信息;若确定数据库语句负载信息结构存有第一数据库语句对应的负载统计信息,则基于各个数据库节点的负载信息和第一数据库语句对应的负载统计信息,以负载均衡方式在多个数据库节点中确定一个目标数据库节点;发送第一数据库语句至目标数据库节点。通过本申请能够实现数据库语句级别的负载均衡,能够充分利用各个数据库节点的各类资源,从而充分发挥各个数据库节点的最大性能。
背景技术
传统的分布式数据库负载均衡方式一般是在驱动层实现,驱动层是指连接数据库节点和应用程序之间的接口层,负责将应用程序的请求转换为数据库可以理解的格式,并将数据库返回的结果转换为应用程序可以处理的格式。同时,数据库节点提供SQL接口用于查询可用的数据库节点以及其负载情况。
驱动层通常由数据库驱动程序(Database Driver)执行相应处理逻辑,它是一个软件层。现有的驱动层的具体工作流程如下:(1)驱动程序连接数据库节点,执行SQL语句拉取数据库节点信息,主要是可用的数据库节点信息以及其负载情况;(2)应用程序请求获取连接时,驱动程序根据数据库节点的负载情况分配连接。
现有的分布式数据库负载均衡方案中是基于数据库实例级别的负载均衡,而在实际中不同SQL产生的负载特性有较大差异,例如联机分析处理(Online AnalyticalProcessing,OLAP)类型的SQL语句其IO代价、算子下盘数据量、网络开销比较大,传统的负载均衡方法不考虑实例中的SQL的负载特性差异,可能把相同负载特性的SQL均衡到同一个节点上,从而导致提前达到负载的上限,例如把IO代价高的SQL语句均衡到了同一个节点上,从而导致该节点的IO达到了上限,SQL语句执行的性能会下降。
实现思路