暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

TDSQL MySQL

原创 huayumicheng 2023-08-11
902

高度兼容 MySQL

兼容大多数常用的 MySQL 语法

包括 MySQL 的语言结构、字符集和时区、数据类型、常用函数、预处理协议、排序、联合(join)、存储过程、索引、分区、事务、预处理协议、控制指令、等常用的 DDL、DML、DCL 和数据库访问接口。


支持(分布式)事务

通过两段提交的方式支持分布式事务,支持诸如转账、出单、支付等场景;跨节点事务性能约为单节点的 70%,高于开源分布式事务 XA 约 56%。目前仅开放 MySQL 5.7支持该能力。


支持(分布式)JOIN

TDSQL 支持多个物理节点之间的 JOIN(联合查询)操作,即分布式 JOIN。如果 JOIN 相关的表有 shardkey 相等条件,由于分表的一致性原则,会让这部分数据自动存储到同一物理节点,此时相当于单机 JOIN,性能最好。如果涉及到跨物理节点数据,此时 proxy 会先从其他节点拉取数据并缓存,由于涉及到网络数据传输,性能会损失。


支持JSON

TDSQL 支持存储 JSON 格式的数据,使得对 JSON处理更加有效,同时又能提早检查错误;如果您既希望使用 JSON类型,又对数据一致性,事务,JOIN 等传统数据库具备的能力也有一定要求的话,TDSQL 将是一个很好的选择,当然 TDSQL 的 JSON 是基于 MySQL 与 Mongodb 的使用仍有一些差异,如果您感兴趣,可以阅读 TDSQL 与 MongoDB 的 JSON 能力对比。


三种建表策略

分表:即水平拆分的表,通常适用于表规模大于 2000 万行、大于 50GB,且快速增长的表;

广播表:即所有操作都将广播到所有逻辑分片(Shard)中,这意味着每个分片都有该表的全量数据,通常适用于配置表,或需要频繁 JOIN 的表,该类表数据更新相对较少,广播表可以两个表的联合查询(JOIN)、事务收敛到单节点中,以提高性能;

单表:一些无需分片的表,通常适用于数据量较小的库表;由于单表并未拆分,这意味着单表使用完全兼容 MySQL。


全局唯一数字序列

与 AUTO_INCREMENT 类似。自增长序列为用户提供一个全局唯一数字 ID 服务,实现分布式环境下唯一键、主键等数据的全局唯一性。


透传命令

支持通过注释方式(hint)将 SQL 透传到指定目标分片,以提高性能和操作灵活性。


二级分区

在分表的基础上,还支持分区表方案。即在水平拆分的表,再支持一层逻辑分区。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论