mysql数据库分片类型_mysql - 数据库分片与分区

本文探讨了数据库分区的原理,包括水平分区(分片)和垂直分区,以及它们在可管理性、性能和可用性方面的益处。重点介绍了分区修剪如何显著提高查询效率,并给出了何时考虑对表进行分区的建议。此外,还讨论了分区策略,如范围和哈希分区,并提及了无共享架构的优势和复杂性。分区是优化大型数据库性能的关键策略之一。
摘要由CSDN通过智能技术生成

我也一直在深入研究这个问题,虽然我到目前为止已经提到了这个问题,但我收集的关键事实很少,并且我想分享这些事实:

分区是逻辑数据库或其组成元素划分为不同的独立部分。 由于负载平衡,数据库分区通常是出于可管理性,性能或可用性原因而完成的。

[https://en.wikipedia.org/wiki/Partition_(database)]

分片是一种分区,例如水平分区(HP)

还有垂直分区(VP),您可以将表拆分为较小的不同部分。 规范化还涉及在表之间拆分列,但垂直分区超出了这一范围,即使已经规范化,也会对列进行分区。

[https://en.wikipedia.org/wiki/Shard_(database_architecture)]

我非常喜欢Tony Baco对Quora的回答,他让你在模式(而不是列和行)方面思考。 他说......

“水平分区”或分片正在复制[复制]模式,然后根据分片键分割数据。

“垂直分区”涉及划分模式(并且数据随之进行)。

[https://www.quora.com/Whats-the-difference-between-sharding-DB-tables-and-partitioning-them]

Oracle的数据库分区指南有一些很好的数字。 我从文章中复制了一些摘录。

[https://docs.oracle.com/cd/B28359_01/server.111/b32024/partition.htm]

何时分区表

以下是有关何时对表进行分区的一些建议:

应始终将大于2 GB的表视为候选表用于分区。

包含历史数据的表,其中新数据被添加到最新分区中。 一个典型的例子是历史表,其中只有当前月份的数据是可更新的,而其他11个月是只读的。

当表的内容需要分布在不同类型的存储设备上时。

分区修剪

分区修剪是使用分区提高性能的最简单也是最实质的方法。 分区修剪通常可以将查询性能提高几个数量级。 例如,假设一个应用程序包含一个包含订单历史记录的Orders表,并且该表已按周分区。 请求单周订单的查询只能访问Orders表的单个分区。 如果Orders表具有2年的历史数据,则此查询将访问一个分区而不是104个分区。 由于分区修剪,此查询可能执行速度提高100倍。

分区策略

范围

哈希

名单

您可以阅读他们的文本并可视化他们的图像,这些图像可以很好地解释

最后,重要的是要了解数据库是非常耗费资源的:

中央处理器

磁盘

I / O

记忆

许多DBA将在同一台机器上进行分区,其中分区将共享所有资源,但通过拆分数据和/或索引来提供磁盘和I / O的改进。

而其他策略将采用“无共享”架构,其中分片将驻留在独立且不同的计算单元(节点)上,具有100%的CPU,磁盘,I / O和内存。 提供自己的一系列优势和复杂性。

[https://en.wikipedia.org/wiki/Shared_nothing_architecture]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值