00:00
那接下来我们聊聊一个删除数据的方式啊,删除数据啊,不是删除表啊,是删除数据有两种方式,第一种叫delete from,第二种是drop partition啊drop partition前面也聊过,对吧,在。修改表里面啊,有一个删除分区的操作,那第一种叫条件删除delete from,就指定条件的数,满足条件的数据我将它删掉啊,而不是把所有数据都删了,那我们看一下这个语法啊,Delete from表明,然后可选的跟上一个什么分区名称,再之后可以写一个什么,写一个where过滤条件,就比如说这个啊。那这个我是不是没有写分区名啊,对吧,我就是不是将ID唯一的都删掉。那之所以没写是为什么?因为我可能是单分区啊,这张表那么有几个注意事项啊,语法很简单啊,这个语法只能针对什么帕梯级别进行删除分区啊,如果我这张表有多个分区需要删,需要怎么样执行多次啊,针对不同partition的delete语句。
01:12
啊,也就是说每个分区你删一次删一次,每个分区删一次啊,不能多个分区同时删除。啊,同时删除指定的数据,这是不行的啊,另外我们的过滤条件只能针对什么P列。也就是说value列是不行的,因为value列一般是聚合列啊,并且我们多个条件,也就谓词之间只能是铁的关系,不能是或啊,或不允许啊,不能或只能,且如果你想实现或的效果,你就是手动执行多次就行了啊,分开执行。另外呢,它是一个同步命令啊,返回机表示执行成功,但是呢啊,它的底层你要明白,它其实跟那种h base也好,Li house一样,它并不是真正立马就将数据给干掉了,它是也是一种特殊的导入操作,也就是说又导入了一次,但是打上了一个标记。
02:15
标记为删除啊,只是打上标记,这也是一个新的数据版本。那有了这些新导入的标记,我们在查询的时候,它会将标记为删除的数据就过滤掉啊,不会显示出来,这样对用户而言呢,好像就是数据就不在了是吧?所以这个delete命令你不要频繁去使用啊,不要频繁使用,另外什么时候真正删除数据啊,哎,看下一点是在be进行数据合并的时候,哎,这个是不是跟h base一样,跟click house一样啊,都是这种特点。所以他。不到合并的时候,他不会真正释放那些标记为删除的数据啊。
03:00
另外呢,有一些限制,我们在delete删除的时候,不能正在进行导入啊,不允许。那如果是已完成状态的导入任务,那是OK的。另外一点就是我们不是有多副本吗?那他并不要求说所有的副本都将这条数据给那个标记为清除了。他只要大多数完成就行,就会返回成功。那后台是怎么处理呢?它会有一个异步的作业啊,来完成对剩余副本的删除操作啊,那你想查看也可以,可以查看这个受delete。可以看到他一个状态,他会。如果显示为cor finished表示,那就全部都完成啊,或者说当前节点完成,这些是我们聊的几个事啊,说白了就一句话,Delete from可以用啊,但只能针对分区操作啊。
04:05
也可以加过滤条件,但只能是替列,但是整体而言,Delete from这种语法少用对吧?不要频繁使用。那第二种语法就是我们前面讲到的删除分区的方式,这是最推荐的啊,这是最推荐的方式,因为分区是我们最小的一个什么数据管理单元。对吧。你它可以很轻量的完成这个删除操作,而且不受什么啊肉的这种导入任务的限制,也不会影响查询效率。而且它同步病例立即生效,当然不会真正立马就把数据删了,它真正删数据也一样。可能要会有一个延迟对吧,等待合并,但是当前分区它是不是就不可见了,不可见的话,你数据操作就不会碰到这个分区里面来了啊,所以但所以对用户而言是没有什么感知的啊,而且影响也不大,因为你是整个分区删除啊。
05:09
好,这是关于删除,那至于那个删除表呢。删除表就更简单了,直接什么fo啊,我现在就不删了,大家可以试一下,比如说你把用料表删了啊,一回车表就没了,这就比较简单。这是关于删除数据。
我来说两句