分库分表是什么?
分库分表就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成若干数据库组成 ,将数据大表拆分成若干
数据表组成,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。
垂直分表:
将一个表按照字段分成多表,每个表存储其中一部分字段。
例如:新闻表中 内容是占容量最大的字段,把字段单独拆分出一个表,用新闻主表id做唯一索引区检索内容或在业务层做数据处理。达到提升数据库性能。
垂直分库:是指按照业务将表进行分类,分布到不同的数据库上面,每个库可以放在不同的服务器上,它的核心理念是专库专用。
将表作为单位,一个库中存放一个表
例如:
对数据有要求时可以用myBatis的一对一或一对多进行映射;
水平分库:是把同一个表的数据按一定规则拆到不同的数据库中,每个库可以放在不同的服务器上。
例如:
在不破坏表结构的情况下把不同表拆到不同数据库中,它是对数据行的拆分。以一定规律映射数据库;稳定性体现在IO冲突减少,锁定减少,
但会出现的问题:可用性指某个库出问题,部分可用;
水平分表:是在同一个数据库内,把同一个表的数据按一定规则拆到多个表中,但不分库;
例如:
主键值为单数时该条数据为一个表,复数时为第二张表;再用myCat服务映射这两张表形成虚拟表,通过sql去映射这张虚拟表达到操作;
水平分表是对水平分库的补充,myCat是分库分表的数据库代理服务。
具体怎么水平分表可以看下这篇文章 https://blog.csdn.net/weixin_38319645/article/details/81537849