Mysql 数据库分片与分区
最近我一直在阅读有关可伸缩架构的文章。在这种情况下,关于数据库不断出现的两个词是切分和分区。我查了一下描述,但还是弄糊涂了 stackoverflow的专家能帮我弄清楚基本知识吗Mysql 数据库分片与分区,mysql,sharding,database-partitioning,Mysql,Sharding,Database Partitioning,最近我一直在阅读有关可伸缩架构的文章。在这种情况下,关于数据库不断出现的两个词是切分和分区。我查了一下描述,但还是弄糊涂了 stackoverflow的专家能帮我弄清楚基本知识吗 分片和分区之间的区别是什么 “所有分片数据库本质上都是分区的(在不同的节点上),但所有分区的数据库不一定都是分片的”,这是真的吗 分区更像是在表或数据库之间划分数据的通用术语。分片是一种特定类型的分区,是所谓水平分区的一部分 在这里,您可以跨(通常)多个实例或服务器复制模式,使用某种逻辑或标识符来知道要查找数据的实例
- 分片和分区之间的区别是什么李>
- “所有分片数据库本质上都是分区的(在不同的节点上),但所有分区的数据库不一定都是分片的”,这是真的吗
请参见此处:这似乎回答了您的两个问题: 水平分区通常按行分割一个或多个表 在架构和数据库服务器的单个实例中。可能 通过减少索引大小(从而减少搜索工作量)提供优势 前提是有一些明显的、可靠的、隐含的方法来识别 在哪个表中可以找到特定的行,而不需要首先 搜索索引,例如“CustomerEast”的经典示例 和“CustomerWest”表,它们的邮政编码已经表明 在那里可以找到它们 切分超出了这个范围:它将有问题的表划分为 同样的方法,但它可能跨多个实例执行此操作 模式的一部分。明显的优势是,搜索负载为 大型分区表现在可以跨多个服务器拆分 (逻辑或物理),而不仅仅是同一逻辑上的多个索引 服务器 来源: 分片是跨多个数据库存储数据记录的过程 机器,是MongoDB满足数据需求的方法 成长。随着数据大小的增加,单个机器可能无法访问 足以存储数据,也不能提供可接受的读写 吞吐量切分解决了水平缩放的问题。具有 切分,您可以添加更多的计算机来支持数据增长和需求 读取和写入操作的类型
资料来源:。我也一直在深入研究这个问题,尽管我是这个问题的参考人,但我收集的关键事实和我想分享的观点很少: 分区是将逻辑数据库或其组成元素划分为不同的独立部分。数据库分区通常是出于可管理性、性能或可用性的原因而进行的,比如负载平衡
分片是一种分区类型,例如水平分区(HP) 还有垂直分区(VP),您可以通过它将表拆分为更小的不同部分。规范化还涉及跨表拆分列,但垂直分区超出了这一范围,甚至在已经规范化的情况下也会对列进行分区 我真的很喜欢Tony Baco在Quora上的回答,他让你从模式(而不是列和行)的角度来思考。他说 “水平分区”或分片是复制[复制]模式,然后根据分片键分割数据 “垂直分区”涉及到对模式进行分割(并且数据会一直进行下去) Oracle的数据库分区指南中有一些不错的数据。我从这篇文章中抄了一些摘录 何时对表进行分区 以下是关于何时分区表的一些建议:
- 应始终将大于2 GB的表视为候选表 用于分区李>
- 包含历史数据的表,其中新数据添加到最新分区中。一个典型的例子是历史表,其中只有当前月份的数据是可更新的,而其他11个月是只读的
- 当表的内容需要分布在不同类型的存储设备上时
- 射程
- 散列