[转载] 数据库的垂直切分和水平切分

转载自http://blog.csdn.net/kobejayandy/article/details/8775138

数据切分可以是物理上的,对数据通过一系列的切分规则将数据分布到不同的DB服务器上,通过路由规则路由访问特定的数据库,这样一来每次访问面对的就不是单台服务器了,而是N台服务器,这样就可以降低单台机器的负载压力。

据切分也可以是数据库内的,对数据通过一系列的切分规则,将数据分布到一个数据库的不同表中,比如将article分为article_001,article_002等子表,若干个子表水平拼合有组成了逻辑上一个完整的article表,这样做的目的其实也是很简单的。 举个例子说明,比如article表中现在有5000w条数据,此时我们需要在这个表中增加(insert)一条新的数据,insert完毕后,数据库会针对这张表重新建立索引,5000w行数据建立索引的系统开销还是不容忽视的。但是反过来,假如我们将这个表分成100 个table呢,从article_001一直到article_100,5000w行数据平均下来,每个子表里边就只有50万行数据,这时候我们向一张只有50w行数据的table中insert数据后建立索引的时间就会呈数量级的下降,极大了提高了DB的运行时效率,提高了DB的并发量。当然分表的好处还不知这些,还有诸如写操作的锁操作等,都会带来很多显然的好处。

综上,分库降低了单点机器的负载;分表,提高了数据操作的效率,尤其是Write操作的效率。

时间: 2024-10-12 16:04:37

[转载] 数据库的垂直切分和水平切分的相关文章

(转载)数据库表分割技术浅析(水平分割/垂直分割/库表散列)

一.数据库表分割技术 数据库表分割技术包含以下内容: 水平分割 垂直分割 库表散列 1.1.水平分割 什么是水平分割?打个比较形象的比喻,在食堂吃饭的时候,只有一个窗口,排队打饭的队伍太长了,都排成S型了,这时容易让排队的人产生焦虑情绪,容易产生混 乱,这时一个管理者站出来,增加多个打饭窗口,把那条长长的队伍拦腰截断成几队.更形象一点的理解,你拿一把“手术刀”,把一个大表猛的切了几刀,结果这个大表,变成了几个小表. 水平分割根据某些条件将数据放到两个或多个独立的表中.即按记录进分分割,不同的记录

数据库的垂直划分和水平划分

读写分离,基本的原理是让主数据库处理事务性增.改.删操作(INSERT.UPDATE.DELETE),而从数据库处理SELECT查询操作.数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库. 为什么要分库.分表.读写分? 单表的数据量限制,当单表数据量到一定条数之后数据库性能会显著下降.数据多了之后,对数据库的读.写就会很多.分库减少单台数据库的压力.接触过几个分库分表的系统,都是通过主键进行散列分裤分表的.这类数据比较特殊,主键就是唯一的获取该条信息的主要途径.比如:京东的订单.财付

数据库优化-水平切分-以及在实际项目中的应用

数据库水平分区,相对垂直分区,需要做的工作和事情要多一些,但是对一些行数据特别多的表,非常有必要. 在我在BDC项目中的不断优化中,总结了下面几种常用的数据库水平切分方法: 1.  表分区: 2.  表拆分: 3.  表分库: 表分区 表分区是ORACLE和新版本的MYSQL数据库中,一个非常强大的功能.非常值得学习. 但是表分区如果用不好,性能反倒会下降.我记得我们的另外一个项目组,他们就尝试使用表分区,于是安排了一个没有相关经验的开发人员去研究,研究了几天,然后发现速度更加慢了,于是,表分区

数据库水平切分及问题

简介 前面一篇文章说到,当遇到数据存储层的高并发的时候,会首先想到读写分离,同时高并发有可能意味着数据量大,大量的查询或更新操作集中在一张大表中,锁的频繁使用,会导致访问速度的下降,而且数据量可能超过了单机的容量,所以我们想到了分库分表. 但是在分库分表之前,我还是想多说几句,除非使用那些透明的分库分表方案,否则分库分表是一个大工程. 所以在分库分表前,我建议尽可能先升级数据库的硬件,SSD/NVMe硬盘 + 大容量内存基本可以满足一个小型互联网公司大部分的应用, 对于中型互联网公司需要使用到分

数据库分库分表(sharding)系列(一)数据库Sharding的基本思想和切分策略

本文原文连接: http://blog.csdn.net/bluishglc/article/details/7696085 ,转载请注明出处!本文着重介绍sharding切分策略,如果你对数据库sharding缺少基本的了解,请参考我另一篇从基础理论全面介绍sharding的文章:数据库Sharding的基本思想和切分策略 第一部分:实施策略 图1.数据库分库分表(sharding)实施策略图解(点击查看大图) 1.准备阶段 对数据库进行分库分表(Sharding化)前,需要开发人员充分了解系

转数据库Sharding的基本思想和切分策略

本文着重介绍sharding的基本思想和理论上的切分策略,关于更加细致的实施策略和参考事例请参考我的另一篇博文:数据库分库分表(sharding)系列(一) 拆分实施策略和示例演示 一.基本思想 Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题.不太严格的讲,对于海量数据的数据库,如果是因为表多而数据多,这时候适合使用垂直切分,即把关系紧密(比如同一模块)的表切分出来放在一个server上.如果表并不多,但每张表的数据非常多

数据库Sharding的基本思想和切分策略

转自:http://blog.csdn.net/bluishglc/article/details/6161475 本文着重介绍sharding的基本思想和理论上的切分策略.关于更加仔细的实施策略和參考事例请參考我的还有一篇博文:数据库分库分表(sharding)系列(一) 拆分实施策略和演示样例演示 一.基本思想 Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题. 不太严格的讲.对于海量数据的数据库,假设是由于表多而数据多

数据库Sharding的基本思想和切分策略(转)

一.基本思想 Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题.不太严格的讲,对于海量数据的数据库,如果是因为表多而数据多,这时候适合使用垂直切分,即把关系紧密(比如同一模块)的表切分出来放在一个server上.如果表并不多,但每张表的数据非常多,这时候适合水平切分,即把表的数据按某种规则(比如按ID散列)切分到多个数据库(server)上.当然,现实中更多是这两种情况混杂在一起,这时候需要根据实际情况做出选择,也可能会综合

关于数据库的水平切分和垂直切分的一些概念(转)

垂直拆分 垂直拆分就是要把表按模块划分到不同数据库表中(当然原则还是不破坏第三范式),这种拆分在大型网站的演变过程中是很常见的.当一个网站还在很小的时候,只有小量的人来开发和维护,各模块和表都在一起,当网站不断丰富和壮大的时候,也会变成多个子系统来支撑,这时就有按模块和功能把表划分出来的需求.其实,相对于垂直切分更进一步的是服务化改造,说得简单就是要把原来强耦合的系统拆分成多个弱耦合的服务,通过服务间的调用来满足业务需求看,因此表拆出来后要通过服务的形式暴露出去,而不是直接调用不同模块的表,淘宝