前言
本篇文章将初步探索ShardingSphere执行引擎的工作原理
如何理解执行引擎
首先,通过官方文档,来对其做一个大致了解
目标
我们了解到,执行引擎是为了高效地利用数据库连接这一宝贵资源,那么,具体是如何实现呢?
场景
先看几个场景:
在分库分表的情况下,一条SQL查询在实际执行时,可能会落在多张分表上,那么,就引出了连接数的分配问题:
- 对每张分表的查询,都分配一条连接,效率最高;
- 但是,假设有100张分表,就需要占用100条连接,这极大地加剧了数据库连接数的开销;
- 假如只分配一条连接,去处理这100张分表的查询操作,就需要串行执行,并且每次执行的结果需要加载到内存;
连接模式
基于上述场景,ShardingSphere给出了两种连接模式:
内存限制模式
不对数据库连接数做限制,假设操作10个分表,就分配10条数据库连接
这种模式,适合连接数较少的情况
连接限制模式
严格控制数据库连接数,假设操作100张分表,也只分配1条数据库连接,对分表的操作,串行处理
自动化选择
如上所述,执行引擎在实际工作时,根据不同的场景,自动地选择合适的连接模式,这一选择就是基于下面的公式: