https://www.freesion.com/article/6886652654/

1 mycat 安装 配置 分库信息
2 存储原理 例如mycat 的逻辑库后面对应三个物理库,那么存储的时候,就要对id分别取模存储

1%3 取模 后1,userdb_2
2 %3取模 后2,userdb_3
3 %3取模 后0,userdb_1
4 %3取模 后1,userdb_2
5 %3取模 后2,userdb_3
10 %3取模 后1,userdb_2

3 查询聚合原理

由于 数据是分布在各个物理库中,那么查询数据的时候,其实是需要从各个库中查询数据的,然后最终mycat再将结果集汇聚到一起,通过自己的算法,将得到的结果集返回给调用端,这里面举了三个例子
1 主键查询
2 排序
3 分页查询

1 主键查询其实很好实现,由于主键可以取模,然后其实就像插入一样,可以直接锁定数据所在的库,直接查询就可以了,只查询其中一个物理库;
2 排序  比如排序后取数据库中最大的两条 那么mycat 会去所有物理库进行查询,如上就是三个物理库分别查询,然后到mycat中就会返回一个集合,这个集合大小取决于三个库中具体条数,如果每个库中的数据都大于两条,那么到mycat中 就是 6条,每个物理库运行的语句都是一样的,就是 排序后 再次limt 2 ,然后mycat 会从结果中取最大的两条数据,返回给调用端;
3 分页查询 由于之前的排序, 其实已经对分页作出了解释,就是减少了排序的过程,然后依然是三个库执行limit .但是不通的是 ,由于到mycat中的数据可能是30条,那么调用端要求返回10条怎么办呢?? mycat会调用自己的算法,随机取出10条数据,返回给调用端