時(shí)間:2024-02-13 10:23作者:下載吧人氣:23
記錄:256
寫SQL最高境界:SELECT * FROM 表名。當(dāng)然這是一句自嘲。探究一下SQL語句中JOIN的用法,直到經(jīng)歷這個(gè)場景,變得想驗(yàn)證一下究竟。
把關(guān)系型數(shù)據(jù)庫A中表TEST_TB01和TEST_TB02遷移到大數(shù)據(jù)平臺M(MaxCompute大數(shù)據(jù)平臺)。TEST_TB01單表1000萬條記錄,TEST_TB02單表80萬條記錄。
在關(guān)系型數(shù)據(jù)庫中,TEST_TB01和TEST_TB02中有主鍵約束。在產(chǎn)生新增業(yè)務(wù)數(shù)據(jù)時(shí),不會存在重復(fù)數(shù)據(jù)插入。但是,當(dāng)數(shù)據(jù)遷移到大數(shù)據(jù)平臺后,由于在大數(shù)據(jù)平臺中無主鍵約束功能。在產(chǎn)生新增業(yè)務(wù)數(shù)據(jù)時(shí),TEST_TB01和TEST_TB02均均插入了重復(fù)數(shù)據(jù)。
在一個(gè)計(jì)算任務(wù)中,TEST_TB01和TEST_TB02根據(jù)某個(gè)字段JOIN連接,計(jì)算出了一份結(jié)果數(shù)據(jù),數(shù)據(jù)推送到使用方的關(guān)系型數(shù)據(jù)庫C。直接導(dǎo)致了C數(shù)據(jù)庫的對應(yīng)表的表空間撐爆,監(jiān)控預(yù)警。
原因:TEST_TB01和TEST_TB02有重復(fù)數(shù)據(jù),使用JOIN連接后,生成了10億+條數(shù)據(jù),共計(jì)200G+數(shù)據(jù),直接推送到C數(shù)據(jù)庫。
那次考慮不周,瞬間懵了,感覺SQL語句中的JOIN變得陌生極了。于是想探究一下以作記錄。
TEST_TB01建表語句:
create table TEST_TB01
(
sensor_id BIGINT,
part_id BIGINT
)
COMMENT ‘數(shù)據(jù)表一’;
網(wǎng)友評論