MyCat
MyCat 使用笔记
MyCat 权威指南
http://www.mycat.org.cn/document/mycat-definitive-guide.pdf
MyCATApache / Mycat-Server
https://github.com/MyCATApache/Mycat-Server
MyCat分库分表
MyCat分库分表原理
mycat里面通过定义路由规则来实现分片表(路由规则里面会定义分片字段,以及分片算法)。分片算法有多种,你所说的hash是其中一种,还有取模、按范围分片等等。在mycat里面,会对所有传递的sql语句做路由处理(路由处理的依据就是表是否分片,如果分片,那么需要依据分片字段和对应的分片算法来判断sql应该传递到哪一个、或者哪几个、又或者全部节点去执行)
分页查询
无排序分页
例如
select * from user limit 2;
mycat 无法保证每次返回的结果相同,哪个 DB node 先返回,就返回哪个。
所以,在Mycat中进行分页操作时必须显示加上排序条件才能保证结果的正确性。
无offset的排序分页
select * from user order by id limit 2;
mycat 内部使用一个 最小堆(选最小值不应该是用最大堆吗?) 对各个 db node 返回的结果进行合并后返回 limit 2 。
有offset的排序分页
mycat 会改写sql,比如
select * from user order by id limit 10,2;
改写为
select * from user order by id limit 12;
即 limit m,n
改写为 limit 0, m+n
之后发送到各个 db node,再在内存中对所有结果进行内存分页。
Mycat从入门到放弃
https://blog.csdn.net/u013235478/article/details/53178657
MyCat分库分表策略详解
https://my.oschina.net/zhangxufeng//3097533
MyCat配置示例
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="blog" checkSQLschema="false" sqlMaxLimit="100">
<table name="blog_alert" dataNode="dn0,dn1,dn2,dn3" rule="sharding-by-hashMod" primaryKey="id" autoIncrement="true" />
<table name="blog_api_log" dataNode="dn0,dn1,dn2,dn3" rule="sharding-by-hashMod" primaryKey="id" autoIncrement="true"/>
<table name="blog_role" dataNode="dn0" />
<table name="blog_user" dataNode="dn0" />
<table name="blog_user_role" dataNode="dn0" />
<table name="blog_dict" dataNode="dn0" />
<table name="mycat_sequence" primaryKey="name" dataNode="dn0"></table>
</schema>
<dataNode name="dn0" dataHost="hostWeb02" database="blog1" />
<dataNode name="dn1" dataHost="hostWeb02" database="blog2" />
<dataNode name="dn2" dataHost="hostWeb02" database="blog3" />
<dataNode name="dn3" dataHost="hostWeb02" database="blog4" />
<dataHost name="hostWeb02" maxCon="2000" minCon="100" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select 1</heartbeat>
<writeHost host="hostM1" url="localhost:3306" user="root" password="passwd"></writeHost>
</dataHost>
</mycat:schema>
上一篇 Java-Net
页面信息
location:
protocol
: host
: hostname
: origin
: pathname
: href
: document:
referrer
: navigator:
platform
: userAgent
: