数据库水平切分(MyCat分片Join)
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注解规范
- 注解SQL使用select语句,不允许使用delete/update/insert等语句;虽然delete/update/insert等语句也能用在注解中,但这些语句在Sql处理中有额外的逻辑判断,从性能考虑,请使用select语句。
- 注解SQL禁用表关联语句。
- 注解SQL尽量用最简单的SQL语句,如select id from tab_a where id=’10000’(如果必要,最好能在注解中指定分片)
- 无论是原始SQL 还是注解SQL,禁止DDL语句
- 能不用注解的尽量不用
创建存储过程:
/*!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)相关推荐
- 不同业务场景下如何进行数据库水平切分?
很多互联网业务,有着数据量大的特点,随着数据量的逐步增加,数据库逐渐成为系统的瓶颈. 主从同步读写分离的架构方案只能提升数据库的读性能,对单库数据量的膨胀,以及写性能的瓶颈并不能够很好解决.此时数据库 ...
- 数据量太大?用数据库水平切分搞定!
本文将介绍数据库架构设计中的一些基本概念,常见问题以及对应解决方案,为了便于读者理解,将以"用户中心"为例,讲解数据库架构设计的常见玩法. 用户中心 用户中心是一个非常常见的业务, ...
- 挨踢部落直播课堂第十期:亿级数据量高并发下数据库水平切分的结构设计
转自:http://tn.51cto.com/article/373 内容介绍 1.大数据量时,数据库架构设计原则 2.数据库水平切分架构设计方向 3.用户中心,帖子中心,好友中心,订单中心水平切分架 ...
- 单KEY业务,数据库水平切分架构实践
本文将以"用户中心"为例,介绍"单KEY"类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践: 如何来实施水平切分 水平切分后常见的 ...
- 多对多业务,数据库水平切分架构一次搞定(58沈剑)
本文将以"好友中心"为例,介绍"多对多"类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践. 一.什么是多对多关系 所谓的" ...
- 1对多业务,数据库水平切分架构一次搞定 | 架构师之路
1对多业务,数据库水平切分架构一次搞定 | 架构师之路 原创 2017-07-10 58沈剑 架构师之路 架构师之路 架构师之路 微信号 road5858 功能介绍 架构师之路,坚持撰写接地气的架构文 ...
- 数据库:数据库水平切分?垂直切分?整合方案?可能存在的问题?
前言 通过MySQLReplication功能所实现的扩展总是会受到数据库大小的限制,一旦数据库过于庞大,尤其是当写入过于频繁,很难由一台主机支撑的时候,我们还是会面临到扩展瓶颈.这时候,我们就必须许 ...
- 数据库水平切分的实现原理解析——分库,分表,主从,集群,负载均衡器
第1章 引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载.对于系统的稳定性和扩展性造成了极大的问题 ...
- 数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
http://www.itokit.com/2012/0404/73496.html 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的互联网应用,每天几十亿的PV ...
最新文章
- [kuangbin带你飞]专题六 最小生成树 L - 还是畅通工程 (简单最小生成树)
- 这些神经网络,还可信吗?
- 使用VC++6.0创建MFC对话框程序
- 小型的ESP8266-01s WiFi串口模块是否可以下载MicroPython?
- Bootstrap模态框报错
- Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等
- php中new意思,php 在一个类中new自己代表什么意思 ?是构造函数
- mysql useing查询,MySQL数据库之多表查询using优化与案例
- CentOS下IPTABLES配置详解
- 用数据结构c语言写成绩排序,C语言数据结构 快速排序实例详解
- 引导页如何在pc端实现
- 计算机应用能力考试ppt2003,全国专业技术人员计算机应用能力考试_PPT_2003_题库版.docx...
- 【杂谈】关于个人档案的机要邮寄
- 到底应不应该【跨专业】考研计算机?希望大么?
- 红帽 Red Hat Linux相关产品iso镜像下载【百度云】【更新7.2】
- 获得ios屏幕上的像素
- 调用腾讯优图OCR手写体文字识别接口
- 让NETMD显示汉字
- 【区块链论文阅读】计算机网络顶会INFOCOM(一)
- python爬虫、第一个爬虫(基本知识,requests库,BeautifulSoup库,正则表达式re库)
热门文章
- 第五章 业务架构,5.3 千亿访问量下的开放平台技术揭秘(作者:风胜)
- URL和URI的区别 【转】
- Java性能调优、LinkedIn容器部署、阿里移动性能调优——首届APMCon精彩演讲先睹为快...
- Android: 启动init.rc 中service的权限问题【转】
- LotusScript类的继承
- 华中科技大学计算机通信与网络实验,华中科技大学计算机通信与网络实验报告Socket编程实验.docx...
- python求无序列表中位数_python 实现在无序数组中找到中位数方法
- 记录零基础GO编程入门笔记之一
- python3.6爬虫环境安装要多少内存_Python3爬虫环境配置——解析库安装(附tesserocr安装方法)...
- python迭代器面试题_Python面试题之生成器/迭代器