mysql 平行扩展_MySQL数据库水平扩展解决方案

云技术的不断发展成熟的存储资源和计算资源以及逐渐降低的成本使企业更容易开发部署和提供服务,这有利于快速发展的中小型企业,通过选择不断添加新机器来增加应用集群从而响应不断增长的流量。

abfb092c252a2d9590d191e495cfd1be.pngMySQL数据库水平扩展解决方案

然而随着企业的发展仍然存在一个瓶颈,我们无法通过简单的堆积机器来消除这些瓶颈,这是数据库不断增长所带来的性能上限,解决此性能上限的有效措施之一是对数据库进行分片并确保单个表的数据量小于500万个数据条目。

今天我们将进一步讨论这个问题,当企业开始加速其增长时即使在数据库分片之后,在数据库容量和单个表的数据量方面也可能达到性能上限,在这种情况下我们如何扩展数据库性能?

c5f2c6d58d6a9115f13b8b7a13c55dc3.png请点击输MySQL数据库水平扩展解决方案

分片的基本概念

分片是一个易于理解的概念它指的是一组规则用于控制如何将数据从原始数据表均匀分布到多个新数据表中,这些数据表具有与原始表相同的结构,通过在数据表的一个或多个字段上使用平均算法为每次计算返回相同的结果我们可以均匀地分布和单独存储我们的数据。

3b3798eb9fce560ae6247f2241e0ddb0.pngMySQL数据库水平扩展解决方案

水平缩放

执行水平扩展时数据库管理员(DBA)面临哪些技术难题?最明显的问题是规则更改和数据迁移,如果我们在应用程序中完成分片规则,则规则更改意味着我们必须重新释放使用新规则的应用程序集群,数据迁移带来的麻烦可能更严重,此外在完成数据迁移之前我们需要编写一个特殊的脚本来导出和导入数据,不同的表关系和不同的服务将使此脚本非常复杂,我们还必须考虑增量数据同步时间点数据一致性和其他问题,轻微错误可能会对用户数据产生严重影响。

4456874a9cef3e975e706a3aff272ebb.pngMySQL数据库水平扩展解决方案

分片的缺点

想一想分片的目的是什么?单个数据库的性能无法满足我们的日常服务要求,我们需要将单个数据库的性能压力分配到多个数据库中,但是我们上面描述的分片方法最终会将所有插入更新压力集中在一个数据库实例上并且无法有效地分配性能压力。

eeca59498add813d5892ba677a660043.pngMySQL数据库水平扩展解决方案

结论

良好的设计通常有利于未来的维护,数据库的水平扩展是一个技术难点,但是我们可以通过优化分片策略来在一定程度上减少工作量,该原则适用于代码编写产品设计或我们日常生活的任何其他方面,当我们有一个难以实现的设计时我们必须三思而行,这个设计是否合理以及是否有更好的解决方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值