美文网首页
mysql分库分表

mysql分库分表

作者: 史小猿 | 来源:发表于2019-01-23 10:10 被阅读166次

业务分库

按照业务分库,比如用户、商品、订单分库
带来的问题

  1. join 问题
    不在同一数据库无法join,只能先查一个数据库拿到id列表,在去另外一个库查询
  2. 事务问题
    原本在同一个数据库的不同表的操作可以在同一个事务里边,分散到不同数据库后无法通过事务统一修改。
  3. 成本问题

分表

  1. 垂直分表
    把不常用且占用了大量空间的列拆分出去。带了的问题是原来只要查询一次就能获取所有所有列,现在需要查询多次
  2. 水平分表
  • 路由

    • 范围路由
      按照userId的范围分表,特点可能分配不均(例如按照1000万分表,可能一个表有1000万另一个表只有1000),随着数据的增加平滑的扩充新表,原数据不动
    • hash路由
      按照hash取模分表,特点分配均匀,但是新增表所有数据需要重新分布,但是使用一致性hash算法可以优化
    • 配置路由
      增加一个配置表比如 user_router表 包含 user_id,table_id两列,优点灵活,缺点多查询一次表太大了性能也会不好
  • join
    需要多次join然后合并

  • count()
    多个表count()相加,实现简单去诶单性能较低。增加一个记录数表,性能优化了,但是复杂度增加了,必须要同步记录,但是又不能放在同一事务里处理,因为记录表插入失败不应该回滚业务逻辑

  • order by
    数据分散多个字表中,排序无法在数据库中完成,只能由业务或者中间件去分表查询每个子表中的数据然后汇总。

相关文章

  • Mysql的分库分表,水平拆分-垂直拆分

    参考文章MySQL分库分表总结参考数据库分库分表策略,如何分库,如何分表?MySQL分库分表原理 MySQL单库数...

  • 分库分表

    【分库、分表】MySQL分库分表方案 - MrSunny - 博客园 总结下Mysql分表分库的策略及应用 - 周...

  • mysql优化

    Mysql分库分表方案 Mysql分库分表方案 1.为什么要分表: 当一张表的数据达到几千万时,你查询一次所花的时...

  • MYSQL分库分表

    大众点评订单系统分库分表实践 利用Mycat中间件实现RDS MySQL的分库分表及读写分离功能 MYSQL数...

  • (转载)MySQL数据库之互联网常用分库分表方案

    MySQL数据库之互联网常用分库分表方案 一、数据库瓶颈 1、IO瓶颈 2、CPU瓶颈 二、分库分表 1、水平分库...

  • 面试必备:我们为什么要分库分表?

    目录 什么是分库分表 为什么需要分库分表呢 如何分库分表 什么时候开始考虑分库分表 分库分表会导致哪些问题 分库分...

  • 浅谈mysql数据库分库分表那些事-亿级数据存储方案

    一、概述 mysql分库分表一般有如下场景 垂直分表(将表分为主表和扩展表) 垂直分库(将表按业务归属到不同的库,...

  • mysql分库分表

    1、shard表查询必须带shardingkey 2、explain select * from table wh...

  • MySQL分库分表

    一、什么是数据切分"Shard" 这个词英文的意思是"碎片",而作为数据库相关的技术用语,似乎最早见于大型多人在线...

  • MySQL分库分表

    1 分库分表之MyCat实现 1.1 分库分表介绍 前提:当你们的数据库表数据特别大时,比如说上亿的记录,数据库本...

网友评论

      本文标题:mysql分库分表

      本文链接:https://www.haomeiwen.com/subject/zzxrlqtx.html