可以讲解,分区表在工作中的真实使用案例吗?有没有什么坑
我们业务上有数据超过1000万/天,一天大小4G左右,用的日分区,查询会快很多,但要注意的是分区键必须要在查询条件中使用,否则分区没有意义。
还遇到过,有开发乱用分区表,使用间隔分区,一天一个,结果上线后,表数据量很小,实际才几百兆,但分区表默认占用很大的存储空间,而且表小的情况下,效率也不高
早期分区表里不会命中索引,分区表太大时,效率达不到预期
有的日志表使用日期进行分区的,在归档之后可以用truncate处理分区,比delete效率要搞很多
分区表我能定义到不同主机节点上吗?
因为我使用分区的一个目的是想做热点打散,因此可能使用hash分区方式,但如果分区都还在一个节点上,没有起到分散热点的作用。
日志、流水、监控表,只保留最近 3 个月,旧数据需定期删除。
基本处理方法:按时间分区后,删历史 = DROP PARTITION,秒级、几乎无 IO、不锁全表、不影响在线业务TiDB
唯一的坑就是增加了维护工作
分区表很占空间,清理的时候就很麻烦
和普通单表在空间使用上有什么差异吗
案例 :日志 / 操作记录表(最常用)
业务:系统操作日志、登录日志、接口访问日志,每天几十万~几百万条,单表半年破亿。
方案:用 RANGE 按天 / 按月分区,create_time 作为分区键。
出门左转去OB看看
OB的工作机制,默认就是分区实现,tidb用的是region
tidb分区表只有删除数据可以删除分区,非常快,其他都是缺点,能不用就不用