TiDb是否支持小表广播?

小表广播这个事儿就是分库分表的东西,分库分表因为表的数据分散在各个分库里面,如果想执行join,把小表放在各个大表旁边,直接就地join了。节省很多时间。
但是tidb是个分布式数据库,表是以region为单位分散在各个节点的,我理解tidb还不支持join下推,也就意味着即是说2个region的数据属于join的两张表,在同一个tikv上,tikv也不能直接就地计算。

join这个事儿只能tidb把两边的数据拉上来(没有tiflash的前提下),在tidb计算。

如果说想用类似小表广播的功能,缓存表是一个选项。缓存表是把小表缓存在tidb节点,这样join的时候各个节点只需要拉取大表的数据就可以了,能加速一部分,但是有限,毕竟大批量的数据还是得从tikv到tidb走一趟。

最好用tiflash,用tiflash的话两个表的数据都在tiflash存储,直接在tiflash执行join了,tiflash各个节点之间还可以交换数据实现mpp,速度应该是很快的。

2 个赞