From e1f9a5b6bd137af4c92fc35d26343c2b9843904d Mon Sep 17 00:00:00 2001 From: SetnameWang <1944647332@qq.com> Date: Wed, 19 Mar 2025 15:45:14 +0800 Subject: [PATCH] edit query_imcstore_views() description --- ...347\263\273\347\273\237\345\207\275\346\225\260.md" | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git "a/content/zh/docs/SQLReference/HTAP\350\241\214\345\210\227\350\236\215\345\220\210\347\263\273\347\273\237\345\207\275\346\225\260.md" "b/content/zh/docs/SQLReference/HTAP\350\241\214\345\210\227\350\236\215\345\220\210\347\263\273\347\273\237\345\207\275\346\225\260.md" index c15ce3cef..a9cab25d8 100644 --- "a/content/zh/docs/SQLReference/HTAP\350\241\214\345\210\227\350\236\215\345\220\210\347\263\273\347\273\237\345\207\275\346\225\260.md" +++ "b/content/zh/docs/SQLReference/HTAP\350\241\214\345\210\227\350\236\215\345\220\210\347\263\273\347\273\237\345\207\275\346\225\260.md" @@ -74,7 +74,15 @@ - 注:数据由CU和delta组成,CU可能在内存或者硬盘中,delta仅保留在内存中。新数据修改会优先存储在delta中暂存,满足条件后迁移至CU。 + 注: + + 由于列存数据无法直接更新(列存数据作为整块内存,即时更新会造成大面积的内存拷贝和性能下降,同时HTAP功能需要针对列存rowid和行存ctid映射,即时更新会破坏映射关系),数据修改无法直接应用至列存缓存。所以修改操作会优先存储在增量表中,等到满足条件后重新构建列存缓存。 + 针对数据修改,具体实现逻辑为: + 1. 修改操作会记录至delta增量表,具体记录数据为行存的行id和修改时的事务id。此处由于记录的是操作记录,所以增删改操作都会增加内存使用。 + 2. 满足条件后触发vacuum,后台vacuum会根据frozenxid重新构建CU,并且删除增量表中小于frozenxid的记录。 + + 表现为数据更新/插入/删除时delta占用内存增加,vacuum后delta内存占用减少并且CU更新。 + 此处由于vacuum是基于Frozenxid的重新构建,只会将小于frozenxid的操作更新,该操作存在一定延迟,且延迟不可控。延迟由frozenxid的推进时间为准。 例如: -- Gitee