SQL稽核 | 這裡有 MySQL/Oracle 最常用的 SQL 開發規則

愛可生雲資料庫發表於2022-06-06

本文來源:原創投稿

*愛可生開源社群出品,原創內容未經授權不得隨意使用,轉載請聯絡小編並註明來源。


SQL稽核工具 SQLE 企業版近期推出了Oracle稽核外掛的第一個測試預覽版。我們採集了過往我們在客戶那碰到的問題和行業專家的建議,整理了一大批Oracle稽核規則。這個版本我們從中挑選出現頻次最高的以及影響範圍最大一批規則加入到了Oracle稽核外掛中,這些規則能覆蓋大多數客戶的大多數場景,卻又不會對客戶使用產生額外的負擔。在後續的時間內,我們將推出的Oracle稽核外掛逐步完善規則的拼圖。接下來的內容將對高頻規則給出我們的理解。外掛的本身開發之前已經做過介紹,開發文件參考:https://actiontech.github.io/...

文章主要分為以下四部分內容:

一、SQLE 專案介紹

二、規則介紹

三、規則列表

四、後續計劃

一、SQLE 專案介紹

愛可生開源社群的 SQLE 是一款面向資料庫使用者和管理者,支援多場景稽核,支援標準化上線流程,原生支援 MySQL 稽核且資料庫型別可擴充套件的 SQL 稽核工具。

SQLE 獲取

| 型別 | 地址 |
| --- | --- |
| 版本庫 | https://github.com/actiontech... |
| 文件 | https://actiontech.github.io/... | 9000 |
| 釋出資訊 | https://github.com/actiontech... |
| 資料稽核外掛開發文件 | https://actiontech.github.io/... |
| 社群版線上體驗 | http://124.70.158.246:8888/ <br/>超級管理員:admin,密碼:admin。 |
|企業版線上體驗|http://124.70.158.246:8889/ <br/>使用者:admin,密碼:admin。|| 型別 | 地址 |

二、規則介紹

SQLE 根據規則的使用場景,將現有的規則分為以下幾個類別:

  1. DDL規範類

該類規則主要是對錶定義做了不同個維度包括欄位,索引的各方面屬性等方面進行限制,規則值可以根據自己業務場景進行配置,滿足絕大部分表設計的規範。

  1. 查詢類的規範

該類規則主要是支援一些常見可能會影響效能的語句,具體可根據自己的規範選擇性開啟關閉。

  1. 使用建議類的規則

該類規則涉及一些公司的資料庫使用紅線,禁止使用來或避免一些潛在的使用上或者維護上的風險。

  1. 命名規範

該類規則主要針對一些表名、欄位名、索引名格式進行限制,主要作用還是作為統一命名標準提高可讀性。

  1. 執行計劃類

該類規則主要是在稽核SQL時藉助執行計劃輸出,解讀執行計劃特徵,對於特定的影響效能的SQL給予使用者提示。

三、規則列表

  1. 表建議使用主鍵;
  2. 表不建議使用外來鍵;
  3. 索引個數建議不超過閾值;
  4. 表欄位過多;
  5. 複合索引的列數量不建議超過閾值;
  6. 表不建議使用指定的欄位型別;
  7. 表名、列名、索引名的長度不能大於指定位元組;
  8. 資料庫物件命名禁止使用關鍵字。
  9. 不建議使用select *;
  10. delete 和 update 語句,必須帶where條件;
  11. 避免使用 having 子句;
  12. 不推薦使用子查詢。
  13. 禁止除索引外的 drop 操作;
  14. 禁止使用檢視;
  15. 禁止使用觸發器;
  16. 單條SQL不建議過長。
  17. unique索引必須使用固定字首;
  18. 普通索引必須使用固定字首。
  19. 表關聯存在笛卡爾積;
  20. 表關聯巢狀迴圈層次過多;
  21. 表關聯個數過多;
  22. 對大表進行全表掃描;
  23. 存在索引執行跳躍掃描;
  24. 對大索引執行全掃描。





四、後續計劃

  • Oracle 稽核外掛將進行第二個預覽版的開發,持續新增規則;
  • PostgreSQL 外掛的開發正在進行中;
  • TiDB外掛的開發將在6月份開始。

相關文章