您的位置:首页 > 数据库

数据库的分区分库分表,水平切分与垂直切分

2018-03-12 15:53 369 查看
在整理项目的时候,突然发现对数据库的水平切分与垂直切分比较模糊,特此学习!
参考:https://www.cnblogs.com/bluebluesky/articles/6413831.html
1、数据库分区
  就是把同一个数据库里的表放到不同的服务器上,负载均衡,但是在用户上来看,只有一个服务器
2、数据库分表
    把一张表按照一定的规则分解成不同的实体表。比如垂直划分和水平划分

  2.1、垂直切分
    把不同功能,不同模块的数据分别放到不同的表中,但是如果同一个模块的数据量太大就会存在性能瓶颈
   2.2、水平切分
  垂直切分解决不了大表的瓶颈,如果同一个功能中表的数据量过大,就要对该表进行切分,为水平切分
通俗理解:垂直切分---分不同的模块表;水平切分---分同一个模块下的多个表
   2.3、二者的结合
  垂直切分可以使模块的划分更清晰,分成功能不同的表;水平切分可以解决大数据下大表性能的瓶颈问题。
   2.4、案例
以mysql为例,简单购物系统暂设涉及如下表:
  1.产品表(数据量10w,稳定)  2.订单表(数据量200w,且有增长趋势)  3.用户表 (数据量100w,且有增长趋势)  以mysql为例讲述下水平拆分和垂直拆分,mysql能容忍的数量级在百万静态数据可以到千万  垂直拆分:  解决问题:  表与表之间的io竞争  不解决问题:  单表中数据量增长出现的压力  方案:  把产品表和用户表放到一个server上  订单表单独放到一个server上  水平拆分:  解决问题:  单表中数据量增长出现的压力  不解决问题:  表与表之间的io争夺  方案:  用户表通过性别拆分为男用户表和女用户表  订单表通过已完成和完成中拆分为已完成订单和未完成订单  产品表 未完成订单放一个server上  已完成订单表盒男用户表放一个server上  女用户表放一个server上(女的爱购物)3、分库
    将一堆数据放到不同的数据库中保存,上面说的都是在同一个数据库上,分库是分到不同的数据库上

4、分区和分表的区别与联系
   1)分区和分表的目的都是减少数据库的负担,提高表的增删改查效率
   2)分区知识一张表中的数据的存储位置发生变化,还是在一张表中,分表是将一张表分成多张表
  3)当访问量大,且表数据比较火时,两种方式可以相互配合使用
  4)当访问量不大,但表数据比较多时,可以只进行分区
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: