网上有很多介绍分库分表的文章,方法很多:

```

分区表切分

垂直切分

水平切分

区间切分

取模切分

```

这里不细说

分库分表简单,但后期会带来一系列的难题:

```

事务

Join

分页

```

**数据库:**

```

master和slave是一个主从架构

imagespider_db:[ImageSpider](https://github.com/bccber/imagespider)项目采集回来的数据,不需要部署主从分离。

imageshow_db_1、imageshow_db_2、imageshow_db_3、imageshow_db_4:

四个分库的结构一模一样。(注意,分库的个数最好是2的N次方,不然基因取模算法可能会失效)

```

**t_users用户表:**

```

用户登录和注册时,需要用name来定位分库;查看用户资料时,需要用uid定位分库,

所以,把name的基因加入到uid中,uid的最后2bit为name的crc32的最后2bit,这样通过uid和name都能定位到分库。

```

**t_images图片表:**

```

按 id % 4分库,分页时采用“禁止跳页法”。

```

**t_comments评论表:**

```

id的最后2bit为imgid的2bit,保证一张图片的所有评论和图片切分到同一个数据库中。

用户评论时,t_images表的comment_count字段加1,因为是同一个数据库,仍然可以使用事务处理;

所有评论都切分到同一个数据库,分页时可以使用传统方法。

```

**t_likes点赞表:**

```

和t_comments表一样,也使用imgid最后2bit作为分库基因。

```

```

在某些场景下,使用基因切分法,把相关表都切分到同一个数据库中,在后期的操作中仍然可以使用事务,Join等操作,

但可能会导致分库数据不均衡。

ImageShow只是一个水平切分的例子,功能,代码都很简单,肯定不能涵盖分库分表的所有应用场景。

```

[github](https://github.com/bccber/imageshow)

有疑问加站长微信联系(非本文作者))

golang mysql分表_go分库分表 主从分离例子相关推荐

  1. Mysql系列七:分库分表技术难题之分布式全局唯一id解决方案

    Mysql系列七:分库分表技术难题之分布式全局唯一id解决方案 参考文章: (1)Mysql系列七:分库分表技术难题之分布式全局唯一id解决方案 (2)https://www.cnblogs.com/ ...

  2. MySQL使用Mycat实现分库分表-读写分离

    MySQL使用Mycat实现分库分表-读写分离 Mycat Mycat介绍 什么是Mycat? Mycat架构 Mycat核心概念 MyCat主要解决的问题 MyCat对多数据库的支持 Mycat分片 ...

  3. MySQL数据库怎么进行分库分表?

    ▲ 点击上方"分布式实验室"关注公众号 回复"1"抽取纸质技术书 提起分库分表,对于大部分服务器开发来说,其实并不是一个新鲜的名词.随着业务的发展,我们表中的数 ...

  4. MySQL:互联网公司常用分库分表方案汇总!

    本文来源: cnblogs.com/littlecharacter/p/9342129.html 一.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数 ...

  5. 老大批评我不要为了“分库分表”而“分库分表”

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来自:rrd.me/gEJnq 当数据库的数据量过大,大到一定的程 ...

  6. 不要为了“分库分表”而“分库分表”

    不要为了"分库分表"而"分库分表" https://www.toutiao.com/i6950110063927394830/?tt_from=weixin&a ...

  7. java hash 分库分表_分库分表方案

    摘自:Java技术栈 一.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值. 在业务Service来看就是,可用数据库连接少 ...

  8. 再见,数据库!MySQL千亿数据分库分表架构,堪称惊艳!

    孙玄,江湖人称"玄姐",前58集团技术委员会主席,前转转二手交易平台首席架构师.今天想跟你聊点儿企业里那些年薪百万的架构师,他们的架构设计思维是如何升级的. 话不多说,咱们直接来聊 ...

  9. mysql+join+分库分表_MySQL分库分表篇

    传统项⽬结构 数据库性能瓶颈: 1.数据库连接数有限 MySQL数据库默认100个连接.单机最⼤1500连接. 2.表数据量 1)表数量多,成百上千 2)单表数据,千万级别 3)索引,命中率问题,索引 ...

最新文章

  1. java二次开发浏览器内核_常见的五大浏览器的内核
  2. Python机器学习入门资料整理
  3. nginx 卸载后重新安装/etc/nginx配置文件没了,cannot open /etc/nginx/nginx.conf (No such file or directory)...
  4. ps怎么制作流体_PS教程:制作渐变流体效果海报
  5. 【基带传输】基于matlab的简易无线基带传输系统的仿真
  6. windows 系统nginx做反向代理实例
  7. CMake 使用方法
  8. [Leedcode][JAVA][第125题][验证回文串][双指针][String]
  9. LeetCode 1243. 数组变换
  10. vue是什么软件_Angular vs React vs Vue:2020年的最佳选择是什么?
  11. Python 字符串(三)-字符串操作实例(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
  12. 图灵机(Turing Machine)
  13. 经典参考书:《编程之美——微软技术面试心得》
  14. Merkle Tree与区块链
  15. 两台200smart以太网通讯_S7-200 SMART PLC之间如何实现以太网通信?(附接线图)
  16. 简单解决jsp中文乱码问题
  17. 如何使用 QEMU 中的虚拟串口
  18. 英国沦陷了!2014年英国婴儿名top10,穆罕默德意外夺魁
  19. swing-组件Collapse折叠面板2
  20. java邮件中添加excel_基于javaMail的邮件发送--excel作为附件

热门文章

  1. Java Swing/AWT和GTK混合GUI编程
  2. C语言线性表之顺序表
  3. Python IDLE换行写,一行写不下,如何换行继续写
  4. rust怎么调整夜晚亮度_买手机时LCD屏和OLED屏怎么选?终于明白了!
  5. nodejs调用函数和模块
  6. 懂得智能配色的ImageView,还能给自己设置多彩的阴影(PaletteImageView)
  7. mac java 读取到服务器上的文件夹_如何在Mac和Win之间高效共享文件?mac和win文件高效共享教程
  8. 在unity用shaderGraph做出类似动物之森的柱面场景,甚至球面场景。
  9. OpenShift 4 之在不同的项目之间推送Image
  10. OpenJS 基金会推出 Node.js 证书,JS 开发者可以“考证”了