我要是在oltp那边做了分区,tiflash这边也会跟着一起做分区吗。我drop掉一个分区,tiflash那边会跟吗?
tiflash的分区,会不会在统计全量数据的时候导致性能下降?
你当前遇到的问题是什么?
tiflash应该是没有分区的概念,你在tikv中drop一个分区,tiflash这边数据也会被删除的
分区逻辑 TiFlash 和 TiKV 是保持一致的,所以设置了 TiDB 分区表,两边都会分区;drop 的动作也是一致的,都会 drop 掉
TiFlash 和 TiKV 是保持一致的。
那这样的话,就是按分区列存,而不是按整表列存的?这么看的话,分区表会降低TiFlash使用性能,对么?
我赞同 数据小黑 的意见
我们打算将一张表进行range分区。为的就是可以方便的将历史的分区数据drop掉,来释放空间,降低存储成本。但是这张表上的分析需求会很大。所以计划对这张表建tiflash副本。但我担心的问题是,tiflash会不会跟 tikv那边一样是分区的,从而导致我在做分析业务的时候,tiflash这边有跨多分区检索数据的情况,从而导致性能下降。所以想知道tiflash这边是不是也是跟着tikv分区的,还是不分区呢。
如果tiflash不是跟着分区的,那tiflash怎么能也这么快的把数据一起drop掉呢。
这样的话,tiflash分区和不分区相比,会不会有性能损失的问题,在做分析业务的,需要跨分区的时候?
从实践角度来讲,6.1版本之前,分区表不能使用mpp引擎,其他的也只能视场景和sql来分析,你一直强调分不分区,我猜你是不是单位底层物理文件分割造成的IO能力下降?如果是这样,有没有考虑过TiFlash本身就是分布式的?底层存储已经按照region分了很多文件。。。
我对比了两张相同的表,一张分区,一张不分区。发现即使SQL相同,执行计划也是不一样的。所以我判断分区和不分区的执行方式不是完全一致的。但不管怎样,底层物理存储,都是分布式的region。感觉,好像也没啥问题~~,不好说。
对于分区表和非分区表,我遇到过得问题,例如hash join场景下执行计划不准,造成的oom问题,实际上这个问题是因为对分区表来讲,hash jion时扫描数据是按照分区并发扫描的,因为并发度太高,造成内存回收不及时,导致的溢写磁盘等机制没有发挥作用,这实际上是分区表在异常情况下的一些不好表现,这也不是分区表的性能问题。
应该是不是类似分区表那种分区,TiFlash是列式存储,和TiKV的存储方式不一样