数据库的垂直切分和水平切分
2014-12-25 13:39
295 查看
数据切分可以是物理上的,对数据通过一系列的切分规则将数据分布到不同的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操作的效率。
数据切分也可以是数据库内的,对数据通过一系列的切分规则,将数据分布到一个数据库的不同表中,比如将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操作的效率。
相关文章推荐
- 数据库垂直和水平切分
- 数据库的垂直切分和水平切分
- 关于数据库的水平切分和垂直切分的一些概念(转)
- 数据库的垂直切分和水平切分
- 基于MyBatis的数据库切分框架,可实现数据的水平切分和垂直切分。 http://www.makersoft.org
- 关于数据库的水平切分和垂直切分的一些概念(转)
- 数据库的水平/垂直切分的一些概念
- 数据库的分区分库分表,水平切分与垂直切分
- 数据库水平分割垂直分割 使用 Hibernate Shards 进行切分
- 深入理解关系型数据库的数据水平切分和垂直切分
- [转载] 数据库的垂直切分和水平切分
- 数据库的垂直切分和水平切分
- 关于数据库的水平切分和垂直切分的一些概念
- 数据库的垂直切分和水平切分
- 关于数据库的水平切分和垂直切分的一些概念(转)
- 关于数据库的水平切分和垂直切分的一些概念(转)
- 数据库的垂直切分和水平切分
- 数据库的垂直切分和水平切分
- 数据库读写分离和垂直分库、水平分表
- 重构--先垂直水平切分后的落地之泛化思维