联接如何在Cloud Spanner数据库中工作?

时间:2017-03-24 17:32:36

标签: sql google-cloud-platform google-cloud-spanner cockroachdb tidb

加入如何在Google的Cloud Spanner数据库中运行?

连接查询是否会快速执行? SQL(MySql,Oracle,MSSQL)与NewSQL(Cloud Spanner / TiDB / CockroachDB)之间是否有任何比较?

3 个答案:

答案 0 :(得分:3)

TiDB支持加入。 TiDB将数据存储在tikv-server中,并在tidb-server中处理sql。 tidb-server将从tikv-server获取数据并处理sql逻辑。

默认情况下,TiDB使用并行HashJoin运算符作为物理连接运算符。您还可以通过在sql语句中添加提示来选择SortMergeJoin和IndexLookupJoin运算符。 对于大多数情况,HashJoin是一个不错的选择。但在某些情况下,SortMergeJoin或IndexLookupJoin会更好。最后两个运营商对内存更友好。在下一个版本中,TiDB将根据成本选择使用哪个物理连接运算符。

下图显示了并行HashJoin运算符如何在TiDB中工作。 Parallel HashJoin

答案 1 :(得分:2)

Cloud Spanner supports内部,交叉,完整,左侧和右侧连接。联接速度很快,但由于Cloud Spanner在多个splits之间分配数据,因此只要您将查询限制为更少的拆分,查询就会越快。 Cloud Spanner支持interleaving您的数据以定义父子关系,这使您可以有效地预先加入数据以便更快地进行查询。

答案 2 :(得分:1)

它不太可能与Spanner完全相同,但如果您想了解更多有关联接如何工作以及在NewSQL数据库中进行优化的详细信息,我建议您查看CockroachDB关于联接的博客文章:

https://www.cockroachlabs.com/blog/cockroachdbs-first-join/ https://www.cockroachlabs.com/blog/better-sql-joins-in-cockroachdb/