mysql分区
MySQL 分区
分区的好处:
- 分布式存储
- 提高查询性能
- 解耦合, 易于后续删除
- 并行处理
因而即使一台机器放的下, 也可能需要partition
支持: 仅支持水平分区, 不支持垂直分区
几种分区模式:
-
range分区 LESS THEN, 指定某几列, 不允许浮点数
-
适合RANGE分区的场景
- 范围查询频繁:如果经常需要查询特定范围内的订单,RANGE分区可以显著提高查询性能。
- 数据生命周期管理:如果订单数据有明确的生命周期,可以按时间范围分区,方便删除旧数据。
- 写入负载均衡:如果订单数据写入量很大,分区可以将写入操作分散到多个分区,提高整体的写入性能。
-
-
不适合RANGE分区的场景
- 数据分布不均:如果
orderid
的生成方式不均匀,导致某些分区数据量远大于其他分区,影响分区的平衡性。 - 频繁的跨分区查询:如果查询经常涉及多个分区,可能会导致性能下降。
- 分区数量频繁调整:如果订单数据量非常大,需要频繁调整分区策略,增加了维护成本
- 例如order就不适合以orderid range分区, 冷热数据分明, 且查询基本以用户为单位, 且数量不均匀, 更适合按照用户数量负载均衡hash或者按照时间范围分区进行更好的冷热分离, 又或者按特定的tag LIST分区
- 数据分布不均:如果
-
LIST分区 离散数据指定某个list之中的被分到哪里
-
hash分区
-
key hash 自动根据主键hash分区
[问题处理](https://web-arch.ayaka.space/docs/review/数据库部分/第18章 MySQL分区#六问题处理)