大猩猩追逐游戏
75.7MB · 2025-10-19
如果我们现在在搭建新的业务架构,如果说你们未来的业务数据量会达到千万 或者上亿的级别 还在一股脑的使用分库分表的架构,那么你们的技术负责人真的就应该提前退休了
如果对未来的业务非常有信心,单表的数据量能达到千万上亿的级别,请使用NewSQL 数据库,那么NewSQL 这么牛,分布库分表还有意义吗?
NewSQL 是21世纪10年代初出现的一个术语,用来描述一类新型的关系型数据库管理系统(RDBMS)。它们的共同目标是:在保持传统关系型数据库(如Oracle、MySQL)的ACID事务和SQL模型优势的同时,获得与NoSQL系统类似的、弹性的水平扩展能力
NewSQL 的核心理念就是 将“分库分表”的复杂性从应用层下沉到数据库内核层,对上层应用呈现为一个单一的数据库入口,解决现在 分库分表的问题;
分库分表之后,会带来非常多的问题;比如需要跨库联查、跨库更新数据如何保证事务一致性等问题,下面就来详细看看分库分表都有那些问题
数据库的操作变得复杂
COUNT()
, SUM()
, GROUP BY
, ORDER BY
等操作无法在数据库层面直接完成。需要在每个分片上执行,然后再进行合并。LIMIT 20, 10
这样的分页查询会变得非常诡异。你需要从所有分片中获取前30条数据,然后在应用层排序后取第20-30条。页码越大,性能越差。设计上需要注意的问题
数据量非常大,需要满足OLTP (Online Transactional Processing)
、OLAP (Online Analytical Processing)
、HTAP
且预算充足(分布式数据库的成本也是非常高的这一点非常的重要),并且是新业务新架构落地 优先推荐使用TiDB。
当然实际上选择肯定是需要多方面考虑的,大家有什么观点都可以在评论区讨论。
可以看看一个资深开发,深度参与TiDB项目,他对TiDB的一些看法:
TiDB是PingCAP公司研发的开源分布式关系型数据库,采用存储计算分离架构,支持混合事务分析处理(HTAP) 。它与MySQL 5.7协议兼容,并支持MySQL生态,这意味着使用MySQL的应用程序可以几乎无需修改代码就能迁移到TiDB。
目标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。
TiDB之所以在分布式数据库领域脱颖而出,得益于其五大核心特性:
虽然TiDB兼容MySQL协议,但它们在架构设计和适用场景上存在根本差异。以下是它们的详细对比:
表1:TiDB与MySQL架构对比
特性 | MySQL | TiDB |
---|---|---|
架构模式 | 集中式架构 | 分布式架构 |
扩展性 | 垂直扩展,主从复制 | 水平扩展,存储计算分离 |
数据分片 | 需要分库分表 | 自动分片,无需sharding key |
高可用机制 | 主从复制、MGR | Multi-Raft协议,多副本 |
存储引擎 | InnoDB、MyISAM等 | TiKV(行存)、TiFlash(列存) |
性能方面,TiDB与MySQL各有优势,主要取决于数据量和查询类型:
MySQL的主要扩展方式是一主多从架构,主节点无法横向扩展(除非接受分库分表),从节点扩容需要应用支持读写分离。而TiDB的存储和计算节点都可以独立扩容,支持最大512节点,集群容量可达PB级别。
高可用方面,MySQL使用增强半同步和MGR方案,但复制效率较低,主节点故障会影响业务处理[]。TiDB则通过Raft协议将数据打散分布,单机故障对集群影响小,能保证RTO(恢复时间目标)不超过30秒且RPO(恢复点目标)为0,真正实现金融级高可用。
虽然TiDB高度兼容MySQL 5.7协议和生态,但仍有一些重要差异需要注意:
不支持的功能包括:
有差异的功能包括:
选择数据库时,应基于实际业务需求和技术要求做出决策。以下是具体的选型建议:
TiDB在以下场景中表现卓越:
MySQL在以下情况下仍是更合适的选择:
为了更直观地帮助决策,可以参考以下决策表:
考虑因素 | 倾向TiDB | 倾向MySQL |
---|---|---|
数据规模 | TB级别或预计快速增长 | GB级别,增长稳定 |
并发需求 | 高并发(数千连接以上) | 低至中等并发 |
查询类型 | 复杂SQL,多表关联 | 简单点查点写 |
可用性要求 | 金融级(RTO<30s,RPO=0) | 常规可用性要求 |
架构演进 | 微服务、云原生、HTAP | 传统单体应用 |
运维能力 | 有分布式系统管理经验 | 传统DBA团队 |
如果决定从MySQL迁移到TiDB,需要注意以下关键点:
TiDB和MySQL是适用于不同场景的数据库解决方案,没有绝对的优劣之分。MySQL是优秀的单机数据库,适用于数据量小、架构简单的场景;数据量大了之后需要做分库分表。而TiDB作为分布式数据库,专注于解决大数据量、高并发、高可用性需求下的数据库瓶颈问题,但是成本也是非常的高
75.7MB · 2025-10-19
403.53MB · 2025-10-19
143.25M · 2025-10-19