ShardingSphere-执行引擎

382 阅读1分钟

前言

本篇文章将初步探索ShardingSphere执行引擎的工作原理

如何理解执行引擎

首先,通过官方文档,来对其做一个大致了解

目标

我们了解到,执行引擎是为了高效地利用数据库连接这一宝贵资源,那么,具体是如何实现呢?

场景

先看几个场景:

在分库分表的情况下,一条SQL查询在实际执行时,可能会落在多张分表上,那么,就引出了连接数的分配问题:

  1. 对每张分表的查询,都分配一条连接,效率最高;
  2. 但是,假设有100张分表,就需要占用100条连接,这极大地加剧了数据库连接数的开销;
  3. 假如只分配一条连接,去处理这100张分表的查询操作,就需要串行执行,并且每次执行的结果需要加载到内存;

连接模式

基于上述场景,ShardingSphere给出了两种连接模式:

内存限制模式

不对数据库连接数做限制,假设操作10个分表,就分配10条数据库连接

这种模式,适合连接数较少的情况

连接限制模式

严格控制数据库连接数,假设操作100张分表,也只分配1条数据库连接,对分表的操作,串行处理

自动化选择

如上所述,执行引擎在实际工作时,根据不同的场景,自动地选择合适的连接模式,这一选择就是基于下面的公式:

image.png