閱讀1036 返回首頁    go 阿裏雲


4.3 INSERT/DELETE命令__第四章 DML_使用手冊_分析型數據庫-阿裏雲

如果一個表是實時寫入的表,則分析型數據庫會支持對該表的單條數據進行Insert/Delete操作,不過由於分析型數據庫不支持事務,對於Insert/Delete命令,有一些限製。

在分析型數據庫中Insert語句的語法是:

  1. INSERT [IGNORE]
  2. INTO tbl_name (col1,col2...)
  3. VALUES (value1, value2...), (value1, value2...)....

在分析型數據庫中,能夠實時插入的表一定要定義主鍵或組合主鍵,和MySQL有一個非常大的不同是,分析型數據庫在進行數據插入時,若發現同主鍵的數據時,默認執行覆蓋行為。若使用insert ignore語法,則在發現有同主鍵的數據時,丟棄新插入的數據,保留原有數據。但是無論如何,在主鍵衝突時分析型數據庫無法直接返回錯誤給insert的執行方。

在分析型數據庫中的Delete語句的語法是:

  1. DELETE FROM tbl_name WHERE where_definition

where_definition中暫不支持函數定義。

對分析型數據庫是數據插入和刪除操作,原則上在分析型數據庫操作返回成功後一分鍾內可查(但不保證一定是一分鍾的數據可見延遲),不過在表剛剛創建時的十分鍾內,數據可能無法查詢。

Delete語句執行後,數據會不可查詢到,但不會在物理上立刻刪除,原則上24小時內會自動清除掉,如果刪除了大量數據想立刻生效,可以執行:

  1. optimize table <tablename>;

執行成功一段時間後,物理上數據會被刪除。

關於最終一致性:對於主鍵相同的數據的多次變更,分析型數據庫會遵循分析型數據庫返回語句執行成功的順序進行;對於主鍵不同的數據的兩次變更,分析型數據庫不保證先執行的變更會比後執行的變更更優先的查詢到。但是當業務端暫停數據寫入的若幹時間後,分析型數據庫會保證數據的最終一致。

若希望達成數據寫入速率的最大化,建議:

(1)每條insert插入多條數據,具體條數視數據列數決定。若需要極限性能,每條insert插入的數據需擁有相同的一級分區號(後續分析型數據庫提供SDK幫助客戶達成此要求);(2)每購買一個c1/c8 ECU,客戶端可增加20-30個並發連接插入數據。

最後更新:2016-11-24 11:23:46

  上一篇:go 4.2 邏輯表達式和特殊語法__第四章 DML_使用手冊_分析型數據庫-阿裏雲
  下一篇:go 4.4 多計算引擎和Hint__第四章 DML_使用手冊_分析型數據庫-阿裏雲