00:00
呃,那其他的像insert这种写入流程就简单了啊,咱们快速过啊啊还是区分两种表,Cow跟Mo表啊,那如果是Co它一样的,先对呃,通过这个key啊进行一个去重啊,你也可以选择不去重啊,大家注意是可选的,另外呢,我们前面讲的index啊,Insert不会创建索引,呃,接下来就是蹭的问题了啊,如果有小的基本文件,那就去合并啊,生成新的,否则呢,没有小的可以蹭,就写新的呗,啊这个就银色的,很粗暴,很简单,MY也简单一样,我们可以按照这个key去重,也是可选,也不创建索引,那接下来。无非就是那坨事,就是你这个log文件有没有索引啊,能不能索引对吧,如果可索引,并且有小的可以蹭,那你就。去追加啊,如果没有那你就写呗,写呃,追加或者写新的一个文件啊。
01:01
呃,这边是为什么是或写最新的文件,因为咱们前面讲的不是有一个什么呢,滚动吗。就是说log有大小限制啊。啊,那么如果这个log fire不能够索引,那直接就自己写个新的就完事了啊,新的文件片大家注意是新的文件片啊,啊,那insert overri呢,这个是后面才支持的一个功能啊,叫覆盖写,呃,它会在同一个分区中创建新的文件组。并且呢,现有的文件组被标记为删除,这个就是区别它创建新的,同时将旧的组,大家注意它操作对象是组啊啊,它将旧的组标记为删除啊,根据新记录的数量创建新的文件组啊。说白了就是重来啊,那这边有一个小案例大家看就行了啊呃,在插入之前呢,这个时候分区有一个文件组一文件组二对吧?啊,他们有一个版本的都有一个pack的文件啊,那如果你是插入相同数量的记录覆盖,也就是说原先有呃。
02:13
这个组有十条数据,这个组有十条数据,那这个时候你是银色的overriy还是20条写过来,这个时候它会生成新的组三根,新的组四啊,并且是呃,也各有一个PA,然后呢,老的一跟二要被覆盖的这两个就在原数据中被标记为无效,标记为删除,就这么简单,就这么粗暴啊,生成新的,再把脑袋干掉,过河拆桥。对吧,就这么简单,那插入如果是更多的记录,那其实没什么营养啊,比如说原先只有20条,你覆盖写入是100条,那无非就是生成更多的新的什么文件组。那同样的呢,你要将。呃。方一方二就老的在T1后,原数据被标记为无效,就是老的又被过河拆桥了啊。
03:05
好吧,那其实这几个只是啰嗦一下啊,啰嗦一下,那如果是二表有什么特点一样啊,一模一样,好吧,这个就不啰嗦了。你看他们执行方面非常相似啊,而且不会干扰咱们的这个compassion啊,然后可以减少pack文件的大小啊,对吧,因为你重新规划了嘛,就相当于说你旧改嘛,你家老的自建房都推都都拆了,然后通过规划去盖房子,那肯定是,呃,空间使用更合理嘛,是不是啊,不浪费空间嘛,啊行。不需要更新关键路径中的外部索引。对吧,我不用去更新索引。好吧。还可以扩展清理策略,呃,缺点呢,也有需要转发以前提交的原数据。
04:06
另外呢,呃还有一些小问题,当然这个缺点是在呃官方的一个呃啊设计当中的一个考虑啊,这个咱们现在不用去操心,也就是说有一定的小代价吧,一个是转发原数据,第二个呢是将忽略老数据。啊。但是这个事不用我们关心他,呃,会有方案来忽略他们。这个就简单介绍一下啊,那咱们在这里面最常用的还是这个什么upset,这是最重要的一个特性啊。
我来说两句