2019独角兽企业重金招聘Python工程师标准>>>

Mycat(proxy中间件层)

Sharding-jdbc(TDDL为代表的应用层)

分片Join

1.全局表

2.Share Join

mysql> /*!mycat:catlet=io.mycat.catlets.ShareJoin*/select * from employee a, employee_detail b where a.id = b.id;

目前只支持两张分片表的Join。

3.ER表

 <table name="customer" primaryKey="ID" dataNode="dn1,dn2" rule="sharding-by-intfile"><childTable name="orders" primaryKey="ID" joinKey="customer_id" parentKey="id"><childTable name="order_items" joinKey="order_id"  parentKey="id" /></childTable><childTable name="customer_addr" primaryKey="ID" joinKey="customer_id" parentKey="id" /></table>              

childTable标签用来声明子表:

joinKey:声明子表的那个字段和主表关联

parentKey:声明主表的关联主键

primaryKey:主表自身的主键

Mycat分页

分页的大坑一定要注意:

mysql> select *  from customer order by id limit 1000000,100;

Mycat会分成:

1 -> dn1{SELECT * FROM customer ORDER BY id LIMIT 0, 1000100}

2 -> dn2{SELECT * FROM customer ORDER BY id LIMIT 0, 1000100}

开启使用非堆内存。减少内容消耗

<property name="useOffHeapForMerge">1</property>

Catlet使用

MyCat注解规范

  1. 注解SQL使用select语句,不允许使用delete/update/insert等语句;虽然delete/update/insert等语句也能用在注解中,但这些语句在Sql处理中有额外的逻辑判断,从性能考虑,请使用select语句。
  2. 注解SQL禁用表关联语句。
  3. 注解SQL尽量用最简单的SQL语句,如select id from tab_a where id=’10000’(如果必要,最好能在注解中指定分片)
  4. 无论是原始SQL 还是注解SQL,禁止DDL语句
  5. 能不用注解的尽量不用

创建存储过程:

/*!mycat:sql=select 1 from customer*/create producer ‘test_proc()’ BEGIN END;

调用存储过程:

/*!mycat:sql=select 1 from customer*/call ‘test_proc()’;

Mycat管理端使用

Zookeeper工具:ZooInspector

转载于:https://my.oschina.net/u/3728166/blog/1933140

数据库水平切分(MyCat分片Join)相关推荐

  1. 不同业务场景下如何进行数据库水平切分?

    很多互联网业务,有着数据量大的特点,随着数据量的逐步增加,数据库逐渐成为系统的瓶颈. 主从同步读写分离的架构方案只能提升数据库的读性能,对单库数据量的膨胀,以及写性能的瓶颈并不能够很好解决.此时数据库 ...

  2. 数据量太大?用数据库水平切分搞定!

    本文将介绍数据库架构设计中的一些基本概念,常见问题以及对应解决方案,为了便于读者理解,将以"用户中心"为例,讲解数据库架构设计的常见玩法. 用户中心 用户中心是一个非常常见的业务, ...

  3. 挨踢部落直播课堂第十期:亿级数据量高并发下数据库水平切分的结构设计

    转自:http://tn.51cto.com/article/373 内容介绍 1.大数据量时,数据库架构设计原则 2.数据库水平切分架构设计方向 3.用户中心,帖子中心,好友中心,订单中心水平切分架 ...

  4. 单KEY业务,数据库水平切分架构实践

    本文将以"用户中心"为例,介绍"单KEY"类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践: 如何来实施水平切分 水平切分后常见的 ...

  5. 多对多业务,数据库水平切分架构一次搞定(58沈剑)

    本文将以"好友中心"为例,介绍"多对多"类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践. 一.什么是多对多关系 所谓的" ...

  6. 1对多业务,数据库水平切分架构一次搞定 | 架构师之路

    1对多业务,数据库水平切分架构一次搞定 | 架构师之路 原创 2017-07-10 58沈剑 架构师之路 架构师之路 架构师之路 微信号 road5858 功能介绍 架构师之路,坚持撰写接地气的架构文 ...

  7. 数据库:数据库水平切分?垂直切分?整合方案?可能存在的问题?

    前言 通过MySQLReplication功能所实现的扩展总是会受到数据库大小的限制,一旦数据库过于庞大,尤其是当写入过于频繁,很难由一台主机支撑的时候,我们还是会面临到扩展瓶颈.这时候,我们就必须许 ...

  8. 数据库水平切分的实现原理解析——分库,分表,主从,集群,负载均衡器

    第1章 引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载.对于系统的稳定性和扩展性造成了极大的问题 ...

  9. 数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器

    http://www.itokit.com/2012/0404/73496.html 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的互联网应用,每天几十亿的PV ...

最新文章

  1. [kuangbin带你飞]专题六 最小生成树 L - 还是畅通工程 (简单最小生成树)
  2. 这些神经网络,还可信吗?
  3. 使用VC++6.0创建MFC对话框程序
  4. 小型的ESP8266-01s WiFi串口模块是否可以下载MicroPython?
  5. Bootstrap模态框报错
  6. Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等
  7. php中new意思,php 在一个类中new自己代表什么意思 ?是构造函数
  8. mysql useing查询,MySQL数据库之多表查询using优化与案例
  9. CentOS下IPTABLES配置详解
  10. 用数据结构c语言写成绩排序,C语言数据结构 快速排序实例详解
  11. 引导页如何在pc端实现
  12. 计算机应用能力考试ppt2003,全国专业技术人员计算机应用能力考试_PPT_2003_题库版.docx...
  13. 【杂谈】关于个人档案的机要邮寄
  14. 到底应不应该【跨专业】考研计算机?希望大么?
  15. 红帽 Red Hat Linux相关产品iso镜像下载【百度云】【更新7.2】
  16. 获得ios屏幕上的像素
  17. 调用腾讯优图OCR手写体文字识别接口
  18. 让NETMD显示汉字
  19. 【区块链论文阅读】计算机网络顶会INFOCOM(一)
  20. python爬虫、第一个爬虫(基本知识,requests库,BeautifulSoup库,正则表达式re库)

热门文章

  1. 第五章 业务架构,5.3 千亿访问量下的开放平台技术揭秘(作者:风胜)
  2. URL和URI的区别 【转】
  3. Java性能调优、LinkedIn容器部署、阿里移动性能调优——首届APMCon精彩演讲先睹为快...
  4. Android: 启动init.rc 中service的权限问题【转】
  5. LotusScript类的继承
  6. 华中科技大学计算机通信与网络实验,华中科技大学计算机通信与网络实验报告Socket编程实验.docx...
  7. python求无序列表中位数_python 实现在无序数组中找到中位数方法
  8. 记录零基础GO编程入门笔记之一
  9. python3.6爬虫环境安装要多少内存_Python3爬虫环境配置——解析库安装(附tesserocr安装方法)...
  10. python迭代器面试题_Python面试题之生成器/迭代器