分佈式事務數據庫 —-MySQL 數據庫開發規範(第八節)

大家好~今天爲大家更新**《分佈式事務數據庫 —MySQL 數據庫開發規範》最後一節的內容!感謝大家持續的觀看和陪伴。
接下來會爲大家奉上技術專題——
《MySQL的左連接》**。希望大家可以繼續關注我。
Amy始終致力於爲大家帶來最實用的的數據庫知識,希望可以幫助你們快速的提供實戰技能!
第八節
UPDATE 與 DELETE
8.1 UPDATE 和 DELETE 語句不使用 LIMIT
DML 類型的 UPDATE 和 DELETE 修改語句禁止使用 LIMIT 子句。若修改類型的語句使用
LIMIT 子句,容易導致出現死鎖和鎖資源爭用,還有導致主備數據不一致的風險,做二進制
日誌增量恢復的時候更復雜。此外,在 ROW 或 MIXED 模式下,會明細那增加二進制日誌
量,消耗更多數據庫服務器的物理 IO。
確實需要分批刪除數據的方式,推薦使用 SELECT 查詢語句拿到被刪除數據的主鍵值,然
後使用 UPDATE/DELETE … WHERE …IN(pk1,pk2…)的語句方式實現。
HotDB Server - MySQL 數據庫開發規範
8.2 UPDATE 禁止修改分片字段值
若 ID 爲分片字段,禁止執行下列 SQL 語句:
UPDATE table_name SET id=? WHERE column1=xx。
執行該語句會導致分片數據混亂,因此,禁止使用修改分佈字段值。
8.3 UPDATE 和 DELETE 操作儘量依據主鍵或唯一索引進行操縱
設計 DML 類型的 UPDATE 和 DELETE 操作時,儘可能地讓應用程序獲得主鍵,然後依據
用戶的操作轉換成走主鍵條件去更新數據庫表的數據,性能效率更高,鎖記錄或鎖範圍的時
間更短,佔用資源也更少。
8.4 禁止在 UPDATE 操作的 SET 子句中出現 AND 連接符號
若把 SET 子句的連接符號 “,” 錯誤寫成 “AND”,將會導致寓意完全錯誤,故禁止在 SET
子句中出現 AND 連接符號字樣。舉例說明:
在這裏插入圖片描述
正確示例:SET t.billing_flag =2 , modified_tm=NOW();
錯誤示例:SET t.billing_flag = 2 AND modified_tm=NOW();
此時“ut.billing_flag = 2 AND modified_tm=NOW()”將這個與運算的結果集作爲值賦給
ut.billing_flag,且無任何警告信息提示。

感謝大家的觀看。明天記得來看我的新文章哦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章