4

腾讯云 TDSQL MySQL版-开发指南概述

 2 years ago
source link: https://segmentfault.com/a/1190000040586309
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

腾讯云 TDSQL MySQL版-开发指南概述

发布于 今天 15:36

在 SQL 使用上,分布式实例高度兼容 MySQL 的协议和语法,但由于架构的差异,对于 SQL 有一定的限制,同时为了更好地发挥分布式的优势,建议业务在使用时尽量参考下文的建议。

分布式实例提供水平扩容能力,适合海量数据的场景。具有如下功能特性:

提供了灵活的读写分离模式
支持全局的 order by、group by、limit 操作
聚合函数支持 sum、count、avg、min、max 等
支持跨节点(set)的 join、子查询
支持预处理协议
支持全局唯一字段,支持 sequence
支持分布式事务
支持两级分区
提供特定的 SQL 查询整个集群的配置和状态
分布式实例支持三种不同类型的表:

分表:即水平拆分表,该表从业务视角是一张完整的逻辑表,但后端根据分表键(shardkey)的 HASH 值将数据分布到不同的节点(set)中。
单表:又名 Noshard 表,无需拆分,且没有做任何特殊处理的表,目前分布式实例将该表默认存放在第一个物理节点组(set)中。
广播表:又名小表广播技术,即设置为广播表后,该表的所有操作都将广播到所有节点(set)中,每个 set 都有该表的全量数据,常用于业务系统的配置表等。
注意:
在分布式实例中,如果两张表分表键相等,这意味着,两张表相同的分表键对应的行,一定存储于相同的物理节点组中。这种场景通常被称为组拆分(groupshard),会极大提高业务联合查询等语句的处理效率。
由于单表默认放置在第一个 set 上,如果在分布式实例中建立了大量的单表,则会导致第一个 set 的负载太大。
除特殊情况外,建议在分布式实例中尽量都使用分表。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK