加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL痿了,放不下这么多数据!

发布时间:2019-06-12 23:28:13 所属栏目:MySql教程 来源:小姐姐的味道
导读:MySQL在达到一定数据量(我的经验是3T、单表1亿)时,复杂查询会有明显的延迟。继续分库分表,会严重增加业务复杂性,尤其对很多非互联网产品来说,急需一个分布式存储。 MySQL本身也做了一些努力,那就是基于Paxos协议的MGR。但它没有Sharding的解决方案,
副标题[/!--empirenews.page--]

MySQL在达到一定数据量(我的经验是3T、单表1亿)时,复杂查询会有明显的延迟。继续分库分表,会严重增加业务复杂性,尤其对很多非互联网产品来说,急需一个分布式存储。

MySQL本身也做了一些努力,那就是基于Paxos协议的MGR。但它没有Sharding的解决方案,需要借助其他中间件。

这样的DB已经有很多,其中,以Aurora为代表的云数据库进入视野。根据其流行度,仅对PorlarDB和TiDB进行了调研。

其他产品,包括但不限于:

  1. Greenplum 
  2. Druid 
  3. Aurora 
  4. Taurus 
  5. Spanner 
  6. NuoDB 
  7. Oracle Exadata 
  8. Oracle RAC 

如果你时间有限,直接看初步结论即可。下面的内容可以忽略。

初步结论

它们都支持MySQL协议,现有业务迁移起来会比较平滑,但对硬件的要求都较高。部分一致性都有Raft协议的参与,可靠性都有保证。

TiDB是开源的,某些组件强制要求SSD,且需配备DBA,造成了整体成本的上升。但是使用案例较多,经历过较大规模的应用。

PolarDB。阿里新的明星产品,价格相对合理,但使用案例有限,也无法窥视其源码,只有零星宣传文档。鉴于阿里喜好夸大的尿性,需试用后进行深入评价。但云端优势太明显,已被优先考虑。

通过咨询已有经验的实践者,普遍吐槽会遇到很多奇怪的问题,并不像宣传中的那么美好。

以下。

TiDB

一、简介

TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP (Online Transactional Processing) 和 OLAP (Online Analytical Processing) 场景提供一站式的解决方案。

特性

TiDB 具备如下特性:

高度兼容 MySQL

大多数情况下,无需修改代码即可从 MySQL 轻松迁移至 TiDB,分库分表后的 MySQL 集群亦可通过 TiDB 工具进行实时迁移。

水平弹性扩展

通过简单地增加新节点即可实现 TiDB 的水平扩展,按需扩展吞吐或存储,轻松应对高并发、海量数据场景。

分布式事务

TiDB 100% 支持标准的 ACID 事务。

真正金融级高可用

相比于传统主从 (M-S) 复制方案,基于 Raft 的多数派选举协议可以提供金融级的 100% 数据强一致性保证,且在不丢失大多数副本的前提下,可以实现故障的自动恢复 (auto-failover),无需人工介入。

一站式 HTAP 解决方案

TiDB 作为典型的 OLTP 行存数据库,同时兼具强大的 OLAP 性能,配合 TiSpark,可提供一站式 HTAP 解决方案,一份存储同时处理 OLTP & OLAP,无需传统繁琐的 ETL 过程。

云原生 SQL 数据库

TiDB 是为云而设计的数据库,支持公有云、私有云和混合云,使部署、配置和维护变得十分简单。

二、整体架构图

MySQL痿了,放不下这么多数据!

三、兼容性(不支持特性列表)

github.com/pingcap/doc…

四、FAQ

github.com/pingcap/doc…

五、硬件需求

MySQL痿了,放不下这么多数据!

  • TiDB:解析,处理sql逻辑,通过PD获取数据地址,访问TiKV捞数据,返回结果(需负载均衡,高耗u,高内存,高网络)
  • PD:集群管理,存储元数据信息,tikv负载均衡,分配全局事务id
  • TiKV:分布式且提供事务的 Key-Value 存储引擎。(高耗u,高内存,高网络,高硬盘)
  1. PD节点=3794*3 = 11382 
  2. TiKV节点=30049*3 = 59547 (500G SSD) 
  3. 监控节点=7446 
  4. 合计:107873 

六、其他问题

1、 对硬盘要求高,启动会检测硬盘是否为SSD,若否无法启动

2、 不支持分区,删除数据是个大坑。(3.0支持)

解决方案:

  1. set @@session.tidb_batch_delete=1; 

3、 批量插数据问题

解决方案:

  1. set @@session.tidb_batch_insert=1; 

4、 删除表数据时不支持别名

  1. delete from 表名 表别名 where 表别名.col = '1' 会报错 

5、 内存使用问题,GO语言导致不知道回收机制什么时候运作。内存使用过多会导致TIDB当机(这点完全不像MYSQL)测试情况是,32G内存,在10分钟后才回收一半。

6、 数据写入的时候,tidb压力很大, tikv的CPU也占用很高

7、 不支持GBK

8、 不支持存储过程

9、 列数支持太少,只支持100列

polardb

一、简介、成本

POLARDB是阿里巴巴自主研发的下一代关系型分布式云原生数据库,目前兼容三种数据库引擎:MySQL、Oracle、PostgreSQL。计算能力最高可扩展至1000核以上,存储容量最高可达 100T。POLARDB采用存储和计算分离的架构,所有计算节点共享一份数据,提供分钟级的配置升降级、秒级的故障恢复、全局数据一致性和免费的数据备份容灾服务。POLARDB既融合了商业数据库稳定可靠、高性能、可扩展的特征,又具有开源云数据库简单开放、自我迭代的优势,例如POLARDB for MySQL性能最高可以提升至MySQL的6倍,而成本只有商用数据库的1/10

二、集群架构,计算与存储分离

POLARDB采用多节点集群的架构,集群中有一个Writer节点(主节点)和多个Reader节点(读节点),各节点通过分布式文件系统(PolarFileSystem)共享底层的存储(PolarStore)。

三、读写分离

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读