一、前言

学习读写分离,这里记录下自己学习的路程,你读过之后对技术的认知可能不会有太多的提高,但是能看到我成长的轨迹。(只记录难点、重点知识点,以及方向的选择、自己的心境)

读写分离指的是将数据库分为主从库,一个主库用于写数据,多个从库用来读数据,主从库之间通过某种机制进行数据间的同步。目前多数互联网业务的数据,读多写少,为了线性提升数据库读性能,减少读写锁的冲突而提高写性能,便有了读写分离的做法。但是不是任何情况都需要数据的读写分离,比如,一个订单系统,订单表里的数据量非常庞大,那么这种情况,该做的是对表进行水平切分,原来表里的2000w数据,拆分成4个表,每个表里500w,这样单表操作的压力就少了很多。因此,我们为了解决数据库架构问题时,一定要先分析数据库性能瓶颈是什么,再去想解决方法。

二、技术选型

选型这里,首先要前期调查。查询多方资料,分析优缺点,弄个小demo出来,然后选定。

我呢,选择了Mycat和jdbc-sharding,两者进行调查,先去了官网,Mycat的官网有些随意,而jdbc-sharding官网更加正规(起码看起来是这样的),而且还加入了Apache 孵化器。此外,我还比对了git上两者的情况,查看了jdbc-sharding更新的频率和issue解决的数量、及时解决的程度等,认为jdbc-sharding更适合入手。

因为我没实际做过分库分表,这回想学习一下,了解里面的原理。这样的话,需要开源框架的及时反馈。而且更新的频率快,也说明有人一直在维护。

1.Mycat

Mycat是数据库分库分表中间件。面对分库分表,可能比较蒙,查了很多资料,下面链接介绍了各个组件的概况:

https://dbaplus.cn/news-11-1854-1.html

官网地址:http://www.mycat.io/

2.jdbc-sharding

官网地址:https://shardingsphere.apache.org/document/current/cn/overview/

2.1 HelloWorld

开源框架的学习,hello-world当然是从它提供的demo开始。在这里,我不建议你去搜索别人的搭建文章,而是先去看官网的例子,它是最权威最规范的。

地址:

https://github.com/apache/incubator-shardingsphere-example

请选择dev以外的版本下载(我用的是tag 3.1.0版本)

然后按照他的要求一步步做就可以了。在这里要注意的是,你的mysql数据库最好是5.X版本的,如果是8版本的话,会报错。

(P.S. 我用的mysql 8 进行验证的,结果跑错,弄了好久也没弄出,最后下载mysql5.6,重新尝试,OK)

未完待续。。。

(2019.06.02)

参考资料:

https://baijiahao.baidu.com/s?id=1614304400276051465&wfr=spider&for=pc

mysql分库分表中间件6_数据性能改善——分库分表中间件相关推荐

  1. oracle将表导入到表空间,关于ORALCE一个表空间的数据导入到另一个表空间的方法(原创)...

    用户:   whnaproject     所属表空间: whnaproject 新用户   : wniec            所属新表空间: wniec 要求:将用户whnaproject中的数 ...

  2. SQL数据库中如何把一个表中的数据复制到另一个表中?

    SQL数据库中如何把一个表中的数据复制到另一个表中?** 1整个表复制:** insert into table1 select * from table2 2部分列复制:** insert into ...

  3. 表间数据复制--SELECT表中的数据插入到新的表中(ORACLE,MSSQL)

    表间数据复制--SELECT表中的数据插入到新的表中 --在Oracle 9i中 CREATE TABLE scott.test AS (SELECT DISTINCT empno,ename,hir ...

  4. 《项目经验》--简单三层使用DataTable向数据库表批量导入数据---向SqlServer多张张表中导入数据

    前面已经介绍过如何向数据库的一张表中批量导入数据,详情见博客<项目经验---简单三层使用DataTable向数据库表批量导入数据---向SqlServer一张表中导入数据>:本文主要介绍如 ...

  5. mysql单表索引个数_MySQL性能:多个表与单个表和分区上的索引

    小编典典 创建20,000个表是一个坏主意.您很快将需要40,000个表,然后更多. 我在<SQL反模式>一书中将此综合症称为 Metadata Tribbles .您每次计划创建&quo ...

  6. mysql从某表中查询数据插入到另一表的处理

    2019独角兽企业重金招聘Python工程师标准>>> MySQL数据库为例,介绍如何通过SQL命令行将某个表的所有数据或指定字段的数据,导入到目标表 中.此方法对于SQLServe ...

  7. MySQL和InnoDB体系结构,内存数据对象,基本建表操作

    本节内容主要关于mysql体系结构和InnoDB存储引擎的体系架构(包括后台线程和内存结构).InnoDB关键特性.checkpoint机制,以及刷脏磁盘的不同时机和方式.最后是在mysql客户端通过 ...

  8. mysql删除表中所有数据_MySQL删除或清空表中数据的方法

    原标题:MySQL删除或清空表中数据的方法 要想把MySQL中的数据删除或清空,可以通过两种方法来实现:DELETE语句和TRUNCATE TABLE语句. DELETE语句可以将表中所有记录都删除, ...

  9. c datatable导入mysql_《项目经验》–简单三层使用DataTable向数据库表批量导入数据—向SqlServer一张表中导入数据 | 学步园...

    向数据库的一张表中添加数据,可以采用单个添加,即一条数据.一条数据的添加:也可以采用批量导入,依次将好些条数据写入数据库的一张表中.文本借助实例<添加系列信息>讲解一种向数据库批量导入数据 ...

  10. oracle有几种类型表空间,oracle 数据创建时如何指定表空间类型

    oracle建表时指定了表空间为何没起作用? oracle 12c /windows ,实验过程如下: 1.建第一个表空间data_tbs_01,数可以直接在创建语句后面追加"tablesp ...

最新文章

  1. 我的机器学习入门之路(上)——传统机器学习
  2. LeetCode-剑指 Offer 32 - I. 从上到下打印二叉树
  3. 大话设计模式(一 面试受挫——代码无错就是好?)
  4. 当redis执行flush操作后的补救措施
  5. python主题壁纸_Python教你如何下载你喜欢的桌面壁纸
  6. JSP中一个页面怎么分清是链接过来还是提交过来的?
  7. linux技巧----查找某个正在执行的脚本
  8. asp.net链接mysql数据库------------【个人收集】
  9. Diango博客--13.将“视图函数”类转化为“类视图”
  10. full gc JAVA_java触发full gc的几种情况概述
  11. CProgressCtrl进度条控件实现进度滚动效果
  12. 阿里云因 bug 禁用内部 IP 导致链路不通,造成大规模故障
  13. 互联网平台黑产解密(下)
  14. oracle自增序列
  15. 不同时区时间换算_时区换算
  16. 学计算机的管理层,毕业很吃香、高薪岗位多的4个专业,计算机科学上榜,你的专业呢...
  17. CF 581A Vasya the Hipster
  18. Blender插件开发:用fake-bpy-module提供代码补全
  19. 万豪酒店Marriott 积分兑换标准房晚必备:全球 Marriott Cat9 等级酒店列表 汇总
  20. sql 练习查询和“01“号的同学学习的课程完全相同的其他同学的信息

热门文章

  1. SSH框架(spring+struts2+hibernate)+Mysql实现的会议管理系统(功能包含会议室管理、会议管理、用户管理、部门管理、设备管理、个人资料编辑等)
  2. 【附源码】计算机毕业设计JAVA家庭记账系统
  3. Tampermonkey油猴脚本安装及入门
  4. 基于时序哨兵数据的汛期监测(好文分享)
  5. c语言房屋中介管理系统代码,房屋中介管理系统简易源代码
  6. WebWork深入浅出(http://www.blogjava.net/moxie/archive/2006/10/20/76375.html)
  7. C++ Primer 第五版 课后章节练习答案 第九章
  8. 天猫精灵通过私有云控制WiFi设备
  9. linux 远程安装teamviewer,如何在CentOS 7上安装TeamViewer
  10. 国家地区代号与英文名对应表