问题分析:
随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存储,存在以下性能瓶颈:
1、IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率较低。请求数据太多,带宽不够,网络IO瓶颈。
2、CPU瓶颈:排序、分组、连接查询、聚合统计等SQL会耗费大量的CPU资源,请求数太多,CPU出现瓶颈。
分库分表的中心思想就是将数据分散存储,使得单一数据库/表的数据量变小来缓解数据库的性能问题,从而达到提升数据库性能的目的。
拆分策略:垂直拆分、水平拆分
MyCat概述
mycat是开源的基于java编写的MySQL数据库中间件。可以像使用mysql一样来使用mycat,对于开发人员来说是无感知的。
1.Schema:逻辑库,与MySQL中的Database(数据库)对应,一个逻辑库中定义了所包括的Table。
2.Table:逻辑表,即物理数据库中存储的某一张表,与传统数据库不同,这里的表需要声明其所存储的逻辑数据节点DataNode。在此可以指定表的分片规则。
3.DataNode:MyCAT的逻辑数据节点,是存放table的具体物理节点,也称之为分片节点,通过DataSource来关联到后端某个具体数据库上
4.Database:定义某个物理库的访问地址,用于捆绑到Datanode上
5.分片规则:前面讲了数据切分,一个大表被分成若干个分片表,就需要一定的规则,这样按照某种业务规则把数据分到某个分片的规则就是分片规则,数据切分选择合适的分片规则非常重要,将极大的避免后续数据处理的难度
主要需要包含3个内容来配置MyCat
1、schema.xml
2、server.xml
3、分配规则(rule.xml)
(85条消息) Mycat 三大配置文件详解server.xml / schema.xml / rule.xml_小洪帽i的博客-CSDN博客_mycat1.6 server.xml
Mycat+分库分表_Fairy要carry的博客-CSDN博客_mycat分库分表
Mycat分库分表拆分策略——垂直分库、水平分表(水平分表分片规则) - 知乎 (zhihu.com)