數據庫使用規范
更新時間 2023-12-15 22:17:17
最近更新時間: 2023-12-15 22:17:17
分享文章
本章節主要介紹RDS-PostgreSQL數據庫使用規范。
命名規范
- 對象名(如庫、表、索引等)字符總長度小于等于63。
- 禁止對象名(表名、列名、函數名、視圖名、序列名等對象名稱)使用數據庫保留字,不要以pg、數字或下劃線開頭,具體可參考PostgreSQL官網數據庫保留字相關內容。
- query語句中的別名不要使用 “小寫字母,下劃線,數字” 以外的字符,例如中文。
- 建議主鍵索引應以 pk_ 開頭, 唯一索引要以 uk_ 開頭,普通索引要以 idx_ 打頭。
- 建議臨時表以 tmp_ 開頭,子表以規則結尾,例如按年分區的主表如果為tbl,則子表為tbl_2016,tbl_2017。
設計規范
- 多表中的相同列以及有JOIN需求的列,必須保證列名一致,數據類型一致。
- btree索引字段不建議超過2000字節,如果有超過2000字節的字段需要建索引,建議使用函數索引(例如哈希值索引),或者使用分詞索引。
- 使用外鍵時,如果你使用的RDS-PostgreSQL版本沒有自動建立fk的索引,則必須要對foreign key手工建立索引,否則可能影響references列的更新或刪除性能。
- 出于全球化的考略,建議所有的字符存儲與表示均以UTF-8編碼。
- 表結構設計應該預先規劃,避免經常修改表結構,建議單表字段數不超過64個。
- 建議有定期歷史數據刪除需求的業務表建議分區,例如以時間分區,清理數據時建議通過DROP或者TRUNCATE操作對應的表,不要使用DELETE。
SQL規范
- 查詢時指定返回需要的字段,不要返回用不到的字段。
- 查詢條件中,建議使用NOT EXISTS替代NOT IN。
- 查詢或比較字段是否為NULL時,只能使用IS NULL或IS NOT NULL條件。
穩定性與性能規范
- 在代碼中寫分頁查詢邏輯時,若count為0應直接返回,避免執行后面的分頁語句。
- 兩階段提交的事務,要及時提交或回滾,否則可能導致數據庫膨脹。
- 建議使用truncate代替delete操作全表。
- 建議客戶應用程序開啟autocommit,同時避免應用程序自動begin事務,并且不進行任何操作的情況發生,某些框架可能會有這樣的問題。
- 高并發業務場景下,務必使用綁定變量(prepared statement),防止數據庫硬解析消耗過多的CPU資源。
管理規范
- 在執行DDL操作數據尤其是刪除和修改數據記錄場景下,要先select,避免出現誤刪除,確認無誤才能提交執行。
- 用戶可以使用explain analyze查看實際的執行計劃,但是如果需要查看的執行計劃設計數據的變更,必須在事務中執行explain analyze,然后回滾。
- 建議為數據庫訪問賬號設置復雜密碼。
- 建議用戶做賬戶權限控制,避免大量使用高權限用戶操作。