• Mycat垂直拆分与水平拆分


    垂直拆分:
           垂直拆分是根据数据库里面的数据表的业务进行拆分,比如:一个数据库里面既存在用户数据,又存在订单数据,那么垂直拆分可以把用户数据放入到用户库,把订单数据放到订单库。垂直分表是对数据表进行垂直拆分的一种方式,常见是把一个多字段的大表按常用字段和非常用字段进行拆分,每个表里面的数据记录数一般情况下是相同的,只是字段不一样,使用主键关联。

    比如原始用户表是:

    垂直拆分后的表是:

     

    垂直拆分的优点是:

      1. 可以使得数据变小,一个数据块(block)就能存放更多的数据,在查询时就会减少I/O次数(每次查询时读取的Block就少)

      2. 可以达到最大化利用Cache的目的,具体在垂直拆分的时候可以将不常变的字段放一起,将经常改变的放一起

      3. 数据维护简单

     缺点是:

      1. 主键出现冗余,需要管理冗余例

      2.  会引起表连接JOIN操作(增加CPU开销)可以通过在业务服务器上进行join来减少数据库压力

      3.  依然存在单表数据量过大的问题(需要水平拆分)

      4. 事务处理复杂

    水平拆分
    概述

    水平拆分是通过某种策略将数据分片来存储,分库内分表和分库两部分,每片数据会分散到不同的MySQL表或库,达到分布式的效果,能够支持非常大的数据量。前面的表分区本质上也是一种特殊的库内分表

    库内分表,仅仅是单纯的解决了单一表数据过大的问题,由于没有把表的数据分布到不同的机器上,因此对于减轻MySQL服务器的压力来说,并没有太大的作用,大家还是竞争同一个物理机上的IO、CPU、网络,这个就要通过分库来解决

    水平拆分表如下:

     

    实际情况中往往会是垂直拆分和水平拆分的结合,即将Users_A_M和Users_N_Z再拆成Users和UserExtras,这样一共四张表

    水平拆分的优点是:

    不存在单库大数据和高并发的性能瓶颈
    应用端改造较少
    提高了系统的稳定性和负载能力
    缺点是:

    分片事务一致性难以解决
    跨节点Join性能差,逻辑复杂
    数据多次扩展难度跟维护量极大

    Mycat垂直切分与水平切分详细配置请参考博文:

    https://www.jianshu.com/p/e97cee4611f4

  • 相关阅读:
    微信小程序加密解密 C# 以及 填充无效,无法被移除错误的解决方案 Padding is invalid and cannot be removed
    腾讯云 docker 镜像 dotnet/core sdk aspnet
    ImageMagick PDF到JPG有时会导致黑色背景
    VS2019 发布单文件
    MySQL 更新语句执行过程 WAL redolog binlog
    MySQL 查询语句执行过程
    让MySQL为我们记录执行流程
    SQL基础随记1 SQL分类 常用函数 ALL ANY EXISTS IN 约束
    初用MySQL Mysql示例库 Navicat15
    OldTrafford after 102 days
  • 原文地址:https://www.cnblogs.com/wzb0228/p/11677960.html
Copyright © 2020-2023  润新知