数据库水平分库,垂直分库的新理解

水平分库:当数据量巨大时,将数据放到不同的表中,比如表1,表2,表3,...;

垂直分库:当一张表的字段太多,可拆分出一张或多张分表,根据主键唯一标示;

新理解:

垂直分库:当一张表中字段不多,当某些字段长度过长,表占用空间很大,检索表的时候需要执行大量的IO(数据库检索的本质是对硬盘中的文件进行io访问),

此时可以考虑对长度较长的字段进行拆分,单独成表,用原表主键进行唯一标示。

相反:

当数据库记录数不多,但字段较多,可对部分字段进行整合,比如用户的信息(电话,手机号...),以json字符串的形式保存到数据库,这样一目了然,代价就是service层中要对json进行但多解析。

如何取舍,看项目需求。

时间: 2024-10-22 04:48:05

数据库水平分库,垂直分库的新理解的相关文章

数据库水平切分的原理探讨、设计思路--数据库分库,分表,集群,负载均衡器

本文转载:http://www.cnblogs.com/olartan/archive/2009/12/02/1615131.html 第1章  引言 数据量巨大时,首先把多表分算到不同的DB中,然后把数据根据关键列,分布到不同的数据库中.库分布以后,系统的查询,io等操作都可以有多个机器组成的群组共同完成了.本文主要就是针对,海量数据库,进行分库.分表.负载均衡原理,进行探讨,并提出解决方案. 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的互联网应用,每

MyCAT+MySQL 搭建高可用企业级数据库集群——第4章 MyCat进阶实战至垂直分库

4-1 为什么要进行垂直分库和相关操作 4-2 收集分析业务模块 4-3 MySQL复制的步骤 4-4 MySQL复制环境说明 4-5 MySQL复制实战 4-6 MySQL复制总结 4-7 垂直切分 4-8 垂直切分相关配置 4-9 垂直切分schema文件配置 4-10 垂直切分server文件配置 4-11 后续工作 4-12 Mycat启动调试 4-13 Mycat验证配置 4-14 清理多余数据 4-15 跨分片查询 4-16 配置和验证全局表 4-17 垂直切分的优缺点 4-1 为什

数据库架构演变及分库分表

当生产环境中业务量激增,数据库数据量也会极具增加.当数据库的数据量达到一定程度时(数据库瓶颈),数据库宿主机负载超高,会严重影响业务,严重时会导致数据库宕机.为了避免这种极端情况的发生,我们应当在发生前做好预案,用于解决数据库数据量过载的问题.以下是我个人工作中使用的解决方案:1)数据库主从或多主多从方案2)数据库冷热数据拆分3)数据库分库分表操作4)在数据库前端增加缓存redis或memcached 一开始时,公司部分业务的架构如下(全都是单节点情况)经过自己强调该架构严重的缺点:节点单一,服

一文让你精通数据库优化方案之分库分表

分库分表概述 读写分离分散数据库读写操作压力,分库分表分散存储压力 适用场景 类似读写分离,分库分表也是确定没有其他优化空间之后才采取的优化方案.那如果业务真的发展很快岂不是很快要进行分库分表了?那为何不一开始就设计好呢? 按照架构设计的"三原则"(简单原则,合适原则,演化原则),简单分析一下: 首先,这里的"如果"事实上发生的概率比较低,做10个业务有一个业务能活下去就很不错了,更何况快速发展,和中彩票的概率差不多.如果我们每个业务上来就按照淘宝.微信的规模去做架

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

数据库表分割技术包含以下内容:水平分割/垂直分割/库表散列.接下来将对以上分割进行详细介绍,感兴趣的朋友可以了解下,对你日后维护数据库是很有帮助的 一.水平分割 什么是水平分割?打个比较形象的比喻,在食堂吃饭的时候,只有一个窗口,排队打饭的队伍太长了,都排成S型了,这时容易让排队的人产生焦虑情绪,容易产生混乱,这时一个管理者站出来,增加多个打饭窗口,把那条长长的队伍拦腰截断成几队.更形象一点的理解,你拿一把“手术刀”,把一个大表猛的切了几刀,结果这个大表,变成了几个小表. 水平分割根据某些条件将

数据库分表和分库的原理及基于thinkPHP的实现方法

为什么要分表,分库: 当我们的数据表数据量,访问量很大,或者是使用频繁的时候,一个数据表已经不能承受如此大的数据访问和存储,所以,为了减轻数据库的负担,加快数据的存储,就需要将一张表分成多张,及将一类数据存入不同的几张表,当分表已经不能满足需求是,我们还可以分库,及用几个数据库存储. 分表会随着需求和功能的不同有不同的实现方法,下面是我做项目中的一个例子: 需求:product,product_price两张表是一对多的关系,及产品和产品每日的价格,一个产品对应几种价格,现在由于产品表数据量很大

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

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

ShardingJdbc垂直分库及公共表

前面已经介绍过,垂直分库是指按照业务将表进行分类,分布到不同的数据库上面,每个库可以放在不同的服务器上,它的核心理念是专库专用.接下来看一下如何使用Sharding-JDBC实现垂直分库.(1)创建数据库创建数据库user_db 的t_user表中 CREATE TABLE`t_user`( `user_id` bigint(20)NOT NULL COMMENT '用户id', `fullname` varchar(255)CHARACTER SET utf8 COLLATE utf8_gen

数据库水平拆分和垂直拆分区别(以mysql为例)

数据库水平拆分和垂直拆分区别(以mysql为例) 案例: 简单购物系统暂设涉及如下表: 1.产品表(数据量10w,稳定) 2.订单表(数据量200w,且有增长趋势) 3.用户表 (数据量100w,且有增长趋势) 以mysql为例讲述下水平拆分和垂直拆分,mysql能容忍的数量级在百万静态数据可以到千万 垂直拆分: 解决问题: 表与表之间的io竞争 不解决问题: 单表中数据量增长出现的压力 方案: 把产品表和用户表放到一个server上 订单表单独放到一个server上 水平拆分: 解决问题: 单