Mycat(proxy中间件层)mysql
Sharding-jdbc(TDDL为表明的应用层)sql
1.全局表 工具
2.Share Join性能
mysql> /*!mycat:catlet=io.mycat.catlets.ShareJoin*/select * from employee a, employee_detail b where a.id = b.id;spa
目前只支持两张分片表的Join。3d
3.ER表code
<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标签用来声明子表:xml
joinKey:声明子表的那个字段和主表关联中间件
parentKey:声明主表的关联主键blog
primaryKey:主表自身的主键
分页的大坑必定要注意:
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>
MyCat注解规范
建立存储过程:
/*!mycat:sql=select 1 from customer*/create producer ‘test_proc()’ BEGIN END;
调用存储过程:
/*!mycat:sql=select 1 from customer*/call ‘test_proc()’;
Mycat管理端使用
Zookeeper工具:ZooInspector