码迷,mamicode.com
首页 > 其他好文 > 详细

mycat 概述

时间:2016-10-25 14:19:39      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:分区   不同的   行合并   应用   操作   基础上   scheme   物理   代理   

从开始接触mycat,到现在为止也有三个多月的时间了,目前在测试环境中已经初步应用!大概可以总结一下了

mycat是一个数据库中间件,也可以理解为是数据库代理。在架构体系中是位于数据库和应用层之间的一个组件,并且对于应用层是透明的,即数据库感受不到mycat的存在,认为是直接连接的mysql数据库(实际上是连接的mycat,mycat实现了mysql的原生协议)

mycat的三大功能:分表、读写分离、主从切换;mycat的主要功能也就是这三个了吧!??

1、分表

  对于数据量很大的表(千万级以上),mysql性能会有很大下降,因此尽量控制在每张表的大小在百万级别。对于数据量很大的一张表,可以考虑将这些记录按照一定的规则放到不同的数据库里面。这样每个数据库的数据量不是太大,性能也不会有太大损失。

  mycat自动会帮助我们实现分表功能,而对于应用层来说是透明的,即跟一张表没有什么区别!

  mycat分表的实现:首先在mycat的scheme.xml中配置逻辑表,并且在配置中说明此表在哪几个物理库上。此逻辑表的名字与真实数据库中的名字一致!然后需要配置分片规则,即按照什么逻辑分库!分片规则有很多,选取以下几个简单说明:

  1、根据数据库某字段的hash值片

  2、截取某字段的几位数字,匹配分区号

  3、按照时间(年份分表)

  4、……

  分表的原则是尽量避免跨库操作操作,跨库操作会损失很多性能,mycat会对各个库的结果集进行合并,另外就是要考虑扩展之后,尽量使最少量的数据迁移。

  分表规则很多,很灵活,并且在源码基础上修改分片规则也很容易!

  分表之后有什么弊端呢?

  使用存储过程/函数就不太方便了,mycat本身不支持存储过程,是通过注解的方式实现存储过程的调用。并且在所有库上都执行,将执行结果合并,并返回(mysql存储过程返回结果最好使用select方式返回)。

  

mycat 概述

标签:分区   不同的   行合并   应用   操作   基础上   scheme   物理   代理   

原文地址:http://www.cnblogs.com/tengpan-cn/p/5996020.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!