数据库分库分表
2016-04-11 00:31
218 查看
单表记录条数达到百万到千万级别时就要使用分表了。
数据切分可以是物理上的,对数据通过一系列的切分规则将数据分布到不同的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操作的效率。
水平分割主要解决单表数据量太大的问题。
数据切分可以是物理上的,对数据通过一系列的切分规则将数据分布到不同的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操作的效率。
水平分割主要解决单表数据量太大的问题。
相关文章推荐
- 经典的单例模式c3p0来控制数据库连接池
- 在centos7环境下建立MariaDB多实例
- 几种开源的数据库连接池
- zabbix监控数据库表空间大小
- 第70课:SparkSQL内置函数解密与实战学习笔记
- 数据库事务
- 详解MySQL数据库insert和update语句
- oracle最大连接数
- 为什么需要ALSQL?
- Navicat各服务器怎么设置文件扩展名
- Navicat for PostgreSQL 怎么维护数据库和表
- Navicat 怎样维护 SQL Server
- Navicat for SQL Server 链接服务器安全吗
- 编译安装memcached
- django数据库事务使用记录
- redis主从和HA配置
- golang 里面 mongodb 游标用法
- MYSQL 计算COUNT的同时查询显示其他字段
- MYSQL 查询不同条件,但是同一个字段的结果
- mysql数据类型