7.mysql分库分区分表
mysql数据库分库分区分表
-
为什么需要分库分表
- 数据量过大,最佳(500w-1000w)
- 数据库连接(海量的用户操作)
-
分区分库分表的原理
- 分区
- 就是把一张表的数据分成N个区块,在逻辑上看最终只是一张表,但底层是由N个物理区块组成的
- 分表
- 将一张表按照一定的规则分解成N个具有独立存储空间的实体表,系统读写时需要根据定好的规则得到对应的字表名,然后进行操作
- 分库
- 一旦分表,一个库的表会越来越多,将整个数据库比作图书馆,一张表就是一本书,当要在一本书中查询某项内容时,如果不分章节(数据库中的分区),查找的效率将会下降
- 分区
-
分区
- 什么时候使用分区
- 数据量大
- 表中的数据是分段的
- 对数据的操作往往只涉及一部分数据,而不是所有数据
- 最常见的分区方法(按时间分区),分区最大的优点是可以非常高效的进行历史数据的清理
- 分区类型
- 范围分区(RANGE)
- 根据分区键的范围进行划分,每个分区包含一个范围内的值(可以将时间列作为range分区键,按年日月等时间段划分)
- 根据分区键的范围进行划分,每个分区包含一个范围内的值(可以将时间列作为range分区键,按年日月等时间段划分)
- LIST分区
- 根据分区键的列表进行划分,每个分区包含一个列表内的值,例如,可以将国家列为LIST分区键,将数据按照不同的国家进行划分
- 根据分区键的列表进行划分,每个分区包含一个列表内的值,例如,可以将国家列为LIST分区键,将数据按照不同的国家进行划分
- HASH分区
- 根据分区键的哈希值进行划分,每个分区包含哈希值相同的记录,例如用户ID作为hash分区键,将数据按照用户id进行划分
- 根据分区键的哈希值进行划分,每个分区包含哈希值相同的记录,例如用户ID作为hash分区键,将数据按照用户id进行划分
- KEY分区
- 将分区键的值的哈希值进行划分,与hash分区类似,但只针对非唯一索引,可以将用户姓名作为Key分区键,将数据按照姓名的哈希值进行划分
- 将分区键的值的哈希值进行划分,与hash分区类似,但只针对非唯一索引,可以将用户姓名作为Key分区键,将数据按照姓名的哈希值进行划分
- 范围分区(RANGE)
- 什么时候使用分区
-
分库分表
- 分表分为单库分表(表名不同)和多库分表(表名相同)
- 分库分表中间件类型
- CLIENT模式
- PROXY模式
- CLIENT模式
本文作者:乐天--
本文链接:https://www.cnblogs.com/blackamon/p/17944908
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步