tidb适合使用分区表吗

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】v7.5
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】我们有存储在tidb非常大的表几十亿笔吧,但是应用说只需要存储半年数据就可以了,可以使用分区表,分区表有没有什么使用限制
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

https://docs.pingcap.com/zh/tidb/stable/partitioned-table#分区表
可以参考下相关文档,看看适合自己的分区方式及限制

1 个赞

不适合

1 个赞

按照需求我理解的是建立历史表,超过半年的放到历史表就可以了。不需要用分区表来区分是半年前的还是半年后的。

数据量来说,要不分区表,要求业务端维护日期表,都可以,

历史表不太好做啊,假设一张table叫做A表,假设超1/2就rename A_xxxx,重建A表,但是这样使用者应用要查1/1的数据就要去A_xxxx查询,前端应用要改,他们不同意,有没有好的方案建议啊

分区表会查询慢吗?有没有实际生产的经验可以分享

是查询慢吗

分布式做分区表的一个好处是方便按分区删除等管理吧。

对啊,但是我担心查询会慢吗

个人认为除了那种需要定期清理过期数据的表,其他的不需要使用分区表。 因为tidb使用的是LSM结构存储数据和索引,所以数据量大对查询效率不会有太大影响。
分区表除非你每次使用能够在条件中携带分区字段,否则对性能的影响有限,可能还会降低。

分区表的问题是bug多,比如7.5.0分区统计收集就有问题,merge统计总出错

有可能会变慢,分区表统计容易出问题
参看我以前测试

想要分区的主要目的还是归档清理数据,应用说半年前的数据就是不要的,老板要求清理

使用分区表可以提高查询性能,但前提是所有的查询要使用分区字段进行过滤才成,否则性能不升反降

清理数据量很大那还是用分区表方便,要不delete数据就很慢,空间回收更别说要多久了

楼上说得对,分区表优势在于删除过期数据时,可以直接drop partition,比delete快

从多个场景分析看,如果业务表是按照某个时间字段可以拆分的话,建议按照年月日的格式建立单表,优势:删除单表对其他的表无影响,业务逻辑也简单

1 个赞

我的意思是有两张相同结构的表,表A和表B,表A只保留半年的数据,业务数据实时写入表A,每日日终将表A半年以外的数据迁移到表B。这样表B半年以前的所有数据。这样数据得以保留,也不影响表A的使用。

统计过最近半年的数据量有多大吗