对于分区表,底层的数据存储和组织方式,你可以理解为是“一个分区就是一个表”,所以 analyze 一个分区表其实相当于 analyze “多个表” ,所以耗时会比较久。
所以最佳实践是这样的:
-
使用抽样方式进行采样,可以指定采样的行数或者比例
-
只对业务需要访问的分区进行 analyze,不用对整个表进行 analyze。如 analyze table t partition p1;
-
如果业务有需要,那就老老实实 analyze 整个表吧
官方文档参考:
对于分区表,底层的数据存储和组织方式,你可以理解为是“一个分区就是一个表”,所以 analyze 一个分区表其实相当于 analyze “多个表” ,所以耗时会比较久。
所以最佳实践是这样的:
使用抽样方式进行采样,可以指定采样的行数或者比例
只对业务需要访问的分区进行 analyze,不用对整个表进行 analyze。如 analyze table t partition p1;
如果业务有需要,那就老老实实 analyze 整个表吧
官方文档参考:
嗯,目前这对分区选择性地进行analyze了,不然粒度细,数据变动大analyze频繁
好,那种历史流水数据,如果后面历史数据需要清除,是可以通过分区快速指定清除某一部分是吧
建议使用分区表。方便清理数据,提高查询性能
对于历史数据清理,可以直接对历史的分区执行 drop partition 或者 truncate partition操作。
这个命令对于用户来说执行是很快的,不管这个分区有多少数据,可以在几秒钟内就完成删除(是一个 DDL 操作),而且后台GC回收数据时可以直接释放空间,总体来说对用户、对TiDB集群都是非常友好的。
最新版本的 行级数据 TTL 功能出现后,这类问题就可以根本解决了,不用后续过多的运维操作介入,有兴趣也可以去了解下。
为何要用join,不能程序里面去关联吗
支持这样操作,但是不建议这么搞,结合你的业务场景,通过分区表方式来实现,提高检索下来和对数据的管理
要做实时计算分析
嗯,现在分开搞了
好的, 谢谢
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。