- 水平分库
以数据库表中的每一行数据进行拆分,分解为多行数据,减轻数据库的单表查询存储压力。
- 水平分库拆分的优点:
表关联基本能够在数据库端全部完成;
不会存在某些超大型数据量和高负载的表遇到瓶颈的问题;
应用程序端整体架构改动相对较少;
事物处理相对简单,只要切分规则能定义好,基本上较难遇到扩展性限制;
- 水平切分的缺点:
切分规则相对更为复杂,很难抽象出一个能满足整个数据库的切分规则;
后期数据的维护难度有所增加,人为手工定位数据更为困难;
应用系统各模块耦合度较高,可能会对后面数据的迁移拆分造成一定的困难。
- 垂直拆分
垂直拆分是指表数据列的拆分,关键列之间直接联系,不常用列之间直接联系,把一张列比较多的表拆分成多张表。表的记录并不多,但是字段却很长,表占用空间很大,检索表的时候需要执行大量的IO,严重降低了性能。这时候需要把大的字段拆分到另外一个表,并且该表与原表是一对一的关系。
- 垂直切分的优点
数据库的拆分简单明了,拆分规则明确
应用程序模块清晰明确,整合容易
数据维护方便易行,容易定位
- 垂直切分的缺点
部分表关联无法再数据库级别完成,需要在程序中完成
对于访问极其频繁且数据量超大的表仍然存在性能瓶颈,不一定满足需求;
事务处理相对更为复杂;
切分达到一定程度后。扩展性会遇到限制
过度切分可能会带来系统过度复杂而难以维护;
文章探讨了数据库拆分中的水平分库和垂直拆分两种策略。水平分库通过数据行拆分减轻单表查询压力,优点在于表关联简单,但切分规则复杂。垂直拆分则依据列进行,简化表结构,利于数据维护,但可能增加程序中表关联的复杂性。两种方法各有优劣,需根据具体场景选择。
2399

被折叠的 条评论
为什么被折叠?



