采用分布式数据库中间件模式时,我们将业务表按照某种特定的算法和规则分散到了多个业务子表当中。中间层对应用屏蔽后端拆分细节、解析客户端 SQL 请求并转发至后端数据库,整个过程由中间件进行 SQL 解析、重写、路由、执行、结果集归并。对于每一个执行过程,我们一般希望语句能完整地下压至多个后端数据库节点,以达到并行计算的目的。然而有些关联查询语句却可能无法达到我们的预期。它会把语句拆分执行,然后将结果集提升到 DBLE 层匹配计算。这就造成了 DBLE 的 CPU 升高、语句执行耗时严重的问题。极端情况下更可能会造成 DBLE 无法对外提供服务。什么样的语句会造成这种情况?我们下面逐一说明。