zoukankan      html  css  js  c++  java
  • 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不可以跨数据库

  • 相关阅读:
    优达学城数据分析师纳米学位——知识点总结1
    优达学城数据分析师纳米学位——第二课 jupyter notebook的使用
    优达学城数据分析师纳米学位——第一课总结
    产品经理学习笔记- 猿题库运营面试准备
    EXCEL 2010学习笔记—— 动态图表
    EXCEL 2010学习笔记 —— VLOOKUP函数 嵌套 MATCH 函数
    最长上升子序列模板
    不要62
    划分树简单介绍
    母函数基本应用
  • 原文地址:https://www.cnblogs.com/yejiang/p/13620309.html
Copyright © 2011-2022 走看看