• mysql分库分表


    一、为什么要分库分表

    1.网站架构:

    IE ---> tomcat(登录、注册、下单商品) ---> mysql

    2.高并发下,数据库优化

    1.换数据库,Oracle、mongodb
    2.分库分表
    3.读写分离

    二、什么是分库分表

    500w到1000w的数据,会引发问题

    1.分库分表的思路

    2.分库

    垂直

    水平

    3.分表

    垂直

    水平

    4.垂直分特点、优缺点

    垂直分特点:
    1)每个库(表)的结构不一样
    2)每个库(表)的数据至少一列一样
    3)每个库(表)的并集是全量数据
    总结:按照字段拆分(多表字段拆成少表字段)

    优点:
    1)拆分后业务清晰,专库专用
    2)实现动静分离、冷热数据分离设计体现
    3)数据维护简单、按业务不同放在不同的机器上

    缺点:
    1)如果单表数据量大,读写压力大
    2)部分业务无法join

    5.水平分优缺点

    水平分特点:
    1)每个库(表)的结构都一样
    2)每个库(表)的数据都不一样
    3)每个库(表)的并集是全量数据
    总结:按照内容拆分
    优点:
    1)单个库(表)的数据一定量减少,有助于性能提高
    2)提高了系统的稳定性和负载能力
    缺点:
    1)数据的扩容很有难度(取模扩容rehash)
    2)拆分规则很难抽象出来
    3)部分业务无法join

    三、分库分表的一些方式

    算法:
    范围区分(range):
    预定义list
    取模hash

    四、分库分表带来的问题,解决方案???

    出现问题

    1.维护成本
    2.跨库join
    3.分布式事务
    4.分布式全局唯一id

    方案:shardingsphere、mycat、tddl、atals

    jdbc:
    shardingshepre(sharding-jdbc)、tddl

    逻辑表,根据id改成物理表

    proxy代理层:
    mycat、tddl

    对比:
    jdbc应用层性能好一些,直接在内存;proxy多了四次请求
    proxy代理层跨语言和无感知
    jdbc跨数据库,proxy不可以跨数据库

  • 相关阅读:
    如何实现Echart不刷新页面,多语言切换下的地图数据重新加载,api请求数据加载,soketed数据实时加载
    web开发中各种宽高
    http请求方式和传递数据类型
    Hexo之傻瓜攻略
    SQL2008 R2安装功能选择
    Windows Server2012 R2中安装SQL Server2008
    用户权限管理数据库设计
    C#生成缩略图 (通用模式)
    CAD习题集
    菜鸟学习MVC实录:弄清项目各类库的作用和用法
  • 原文地址:https://www.cnblogs.com/yejiang/p/13620309.html
Copyright © 2020-2023  润新知