數據變更最佳實踐
本文介紹了更新、刪除和導入的方法。
向表中寫入數據時,可以通過批量打包方式INSERT和REPLACE INTO提高數據寫入性能。建議如下:
通過每條INSERT或者REPLACE語句寫入的數據行數大于1000行,但寫入的總數據量不宜太大,不超過16MB。
通過批量打包方式寫入數據時,單個批次的寫入延遲相對會高一些。
寫入報錯時,需要做重試確保數據被寫入,重試導致的數據重復可以通過表的主鍵來消除。
更新數據
AnalyticDB MySQL版提供多種數據更新方式,建議如下:
數據更新頻率高、基于主鍵的行級覆蓋更新且應用可以補齊所有列,可通過REPLACE INTO批量更新數據。
數據更新頻率低、基于主鍵更新,可通過REPLACE INTO或者UPDATE單條更新數據。
數據更新頻率低、基于任意條件的更新,可通過UPDATE更新數據。
刪除數據、分區、表
AnalyticDB MySQL版有多種刪除數據的方式,建議如下:
數據刪除頻率低、基于主鍵為條件的刪除,可通過
DELETE FROM WHERE PK='xxx'
刪除數據。數據刪除頻率低、基于任意條件的刪除,可通過DELETE刪除數據。
通過
TRUNCATE TABLE db_name.table_name PARTITION partition_name
刪除指定二級分區。通過
TRUNCATE TABLE db_name.table_name
刪除指定表(包括所有二級分區)數據。
批量和實時導入數據
批量導入:適用于大數據量導入的場景,導入過程中可以查詢舊數據,導入操作完成后一鍵切換新數據。導入失敗時,支持回滾新數據,不影響查詢舊數據。
例如,從MaxCompute、OSS中導入數據到AnalyticDB MySQL版時,推薦使用INSERT OVERWRITE SELECT批量導入方式,詳情請參見通過外表導入至數倉版。
說明批量導入單個表時,導入任務會在系統中串行執行;批量導入多個表時,導入任務會在系統中并行執行,默認并行執行2個任務。
例如將MaxCompute中的數據導入AnalyticDB MySQL版時,MaxCompute中同一個表的不同分區中的數據會在系統中排隊串行導入。
實時導入:適用于小數據量導入的場景,例如百萬級別的表數據。例如,從RDS for MySQL、ECS自建MySQL數據導入AnalyticDB MySQL版時,推薦使用INSERT INTO,詳情請參見通過外表導入至數倉版。
導入數據到AnalyticDB MySQL版時,導入任務使用AnalyticDB MySQL版中的資源,如果查詢數據期間需要導入數據,建議在QPS(Query Per Second,每秒查詢率)較低時進行導入操作。