網(wǎng)站app用什么語(yǔ)言開(kāi)發(fā)的互聯(lián)網(wǎng)推廣運(yùn)營(yíng)
在 Apache Doris 中,刪除操作(Delete)是一項(xiàng)關(guān)鍵功能,用于管理和清理數(shù)據(jù),以滿足用戶在大規(guī)模數(shù)據(jù)分析場(chǎng)景中的靈活性需求。
Doris 提供了豐富多樣的刪除功能支持,包括:DELETE 語(yǔ)句、刪除標(biāo)記(delete sign)、分區(qū)刪除、全表刪除以及使用臨時(shí)分區(qū)實(shí)現(xiàn)原子覆蓋寫(xiě)等功能。下面將詳細(xì)介紹每一項(xiàng)功能:
DELETE 語(yǔ)句?
刪除數(shù)據(jù)時(shí)最常用的是 DELETE 語(yǔ)句,該功能支持所有表模型,用戶可以使用它刪除符合條件的數(shù)據(jù)。
DELETE 語(yǔ)句的語(yǔ)法如下:
DELETE FROM table_name WHERE condition;
DELETE 語(yǔ)句基本能滿足大部分用戶在使用 Doris 過(guò)程中的刪除需求,但在某些場(chǎng)景下它并不是最高效的。為了靈活高效地滿足用戶在各類場(chǎng)景的刪除需求,Doris 還提供了如下幾種刪除方式。
分區(qū)刪除?
在 Doris 中,通過(guò)日期分區(qū)等方式來(lái)管理數(shù)據(jù)是很常見(jiàn)的實(shí)踐。很多用戶只需要保留最近一段時(shí)間的數(shù)據(jù)(例如 7 天),對(duì)于過(guò)期的數(shù)據(jù)分區(qū),可以采用分區(qū)刪除(truncate partition)功能來(lái)進(jìn)行高效的刪除。
相比 DELETE 語(yǔ)句,分區(qū)刪除只需要修改一些分區(qū)元數(shù)據(jù)即可完成刪除,是這種場(chǎng)景下最佳的刪除方式。
分區(qū)刪除的語(yǔ)法如下:
TRUNCATE TABLE tbl PARTITION(p1, p2);
整表刪除?
整表刪除適用于快速清空表且保留表結(jié)構(gòu)的場(chǎng)景,例如在離線分析場(chǎng)景中需要重做數(shù)據(jù)時(shí)。
整表刪除的語(yǔ)法如下:
TRUNCATE TABLE table_name;
刪除標(biāo)記(Delete Sign)?
數(shù)據(jù)刪除可以視作數(shù)據(jù)更新的一種情況。因此,在具有更新能力的主鍵模型(Unique Key)上,用戶可以通過(guò)刪除標(biāo)記功能,使用數(shù)據(jù)更新的方式實(shí)現(xiàn)刪除操作。
例如在 CDC 數(shù)據(jù)同步場(chǎng)景中,CDC 程序可以將一條 DELETE 操作的 binlog 打上刪除標(biāo)記,當(dāng)這條數(shù)據(jù)寫(xiě)入 Doris 時(shí),就會(huì)刪除掉對(duì)應(yīng)的主鍵。
這種方式相對(duì)于 DELETE 語(yǔ)句來(lái)說(shuō),可以批量進(jìn)行大量主鍵的刪除操作,效率較高。
刪除標(biāo)記屬于高級(jí)功能,使用起來(lái)相比前幾種要更復(fù)雜一些,詳細(xì)的用法請(qǐng)參考文檔批量刪除。
使用臨時(shí)分區(qū)實(shí)現(xiàn)原子覆蓋寫(xiě)?
某些情況下,用戶希望能夠重寫(xiě)某一分區(qū)的數(shù)據(jù),但如果采用先刪除再導(dǎo)入的方式進(jìn)行,在中間會(huì)有一段時(shí)間無(wú)法查看數(shù)據(jù)。這時(shí),用戶可以先創(chuàng)建一個(gè)對(duì)應(yīng)的臨時(shí)分區(qū),將新的數(shù)據(jù)導(dǎo)入到臨時(shí)分區(qū)后,通過(guò)替換操作,原子性地替換原有分區(qū),以達(dá)到目的。詳細(xì)用法請(qǐng)參考文檔表原子替換。