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