zoukankan      html  css  js  c++  java
  • mysql的分库分表

    1 什么是分库分表

    这里讨论的情况是一台机器上对应一个数据库。

    分库的对象是表,分表的对象是行。分库是说把属于同一个模块的相关性很高的表放在同一个数据库中。分表是说把同一个表的的行分成多个子表,把各个子表放在各自的数据库中。

    2 分库分表的例子

    2.1 垂直划分

    现在订单数据库里面有订单表和订单售后表,前者是事实性的,后者不需要实时性,因此将它们放在两个数据库中,一个数据库中放订单表,另外一个数据库中放订单售后表。

    2.2 水平划分

    例如用户订单数据库,每个用户有一个唯一的user id。

    假如我们现在把用户订单数据库水平划分为10个数据库,那么就是把user id%10,这样,模为0的行放在第一数据库中,模为1的行放在第二个数据库中,依次类推。

    3 如何实现分库分表的事务

    4 如何实现跨分片排序分页

    在分片前,按照id进行排序,分片之后,也想要按照id排序返回,如何实现?

    5 跨节点join

    6 mysql的分裤分片中间件

    mycat

    在mycat上,用户使用sql时可以像对待单个数据库来使用。

    比如mycat支持跨节点join等,mycat支持事务,实现了acid。

    mycat不适用的场景:

    分页排序等

    https://blog.csdn.net/u013235478/article/details/53178657

  • 相关阅读:
    一个完整的Http请求
    struts2回显指定的错误信息
    Struts2中的OGNL通配符
    hibernate日常BUG总结
    Hibernate中的GetCurrentSession()方法
    hibernate query.list() 返回的数据类型
    xp远程桌面登陆需要身份验证问题解决
    spring和hibernate整合时无法自动建表
    Spring的scope="prototype"属性
    给程序员的九点建议
  • 原文地址:https://www.cnblogs.com/hustdc/p/8946474.html
Copyright © 2011-2022 走看看