MySQL 資料庫操作
使用此技能來處理 MySQL 特定的綱要、查詢、索引、交易與維運工作。在依賴版本相關行為之前,請先確認實際的伺服器版本、SQL 模式、儲存引擎、字元集/定序、拓撲結構與環境。
探索後再查詢
優先使用儲存庫遷移、綱要定義、ORM 映射與唯讀中繼資料查詢。確認資料表的粒度、主鍵與唯一鍵、外部鍵、可為空性、產生欄、分割區、索引、資料量以及關聯性。請勿從應用程式的欄位推斷實體欄位名稱。
保護憑證與行資料。切勿列印連線字串、機密、完整的客戶記錄或不必要的個人資料。當任務條件允許時,請使用最小權限帳戶以及非生產環境或唯讀複本。
撰寫正確且受限的查詢
- 在已知契約的情況下,選擇具名欄位而非
SELECT *。 - 對數值使用型別參數;請勿將未受信任的輸入串接到 SQL 識別碼或表達式中。
- 明確指定 JOIN 的基數,並在進行聚合之前檢查是否有乘法擴張。
- 審慎處理
NULL、時區、定序、精確度以及包含/排除時間邊界。 - 為分頁或可重複的資料抽取加入確定性的排序。在適用情況下,對於大型可變集合,優先使用鍵集分頁。
- 使用選擇性謂詞與限制來限定探索性讀取,但請勿加入會靜默變更所需聚合或完整性保證的限制。
在結果影響重大時,使用計數、分母、邊界案例以及獨立計算來驗證結果。
安全地分析效能
使用侵入性最低的可用計畫指令。優先使用 EXPLAIN 或文件記載的非執行格式;僅在執行語句且其工作負載已獲授權且受限時,才使用 EXPLAIN ANALYZE。檢查估計行數與實際行數、存取類型、已選取與可能使用的鍵、JOIN 順序、暫存資料表、排序、覆蓋行為以及謂詞選擇性。
索引是一種取捨。評估欄位順序、相等/範圍謂詞、排序、覆蓋需求、前綴長度、寫入放大、儲存空間、鎖定/建立行為、冗餘索引以及實際工作負載頻率。請勿斷言每個過濾或 JOIN 欄位都需要自己的索引。
控制變更與交易
在進行 INSERT、UPDATE、DELETE、DDL、鎖定、維護、複製或組態變更之前,請先確認目標環境、受影響行數估計值、授權、交易/鎖定行為、備份或回滾路徑,以及可觀察的停止條件。在可能的情況下,先使用唯讀查詢預覽確切的目標集合。
根據實際的引擎與操作來使用交易;請勿假設所有 DDL 或外部效果都能回滾。保持交易簡短、使用穩定的謂詞、檢查死結/重試行為,並在提交前驗證受影響的行數。對於資料綱要/資料遷移,請使用階段性的相容性方法,而非破壞性的原地變更。
在沒有針對該操作與環境的明確授權下,切勿執行生產環境的變更、建立/刪除索引、變更使用者或權限、修改複製設定、終止工作階段,或修改伺服器組態。
交接
回傳 SQL 或變更計畫、假設、綱要/版本證據、參數、預估基數、計畫分析結果、安全邊界與驗證步驟。如果執行已獲授權,則需包含環境、時間戳記、受影響行數、交易結果、變更前/後的證據、剩餘風險以及復原狀態。成功的指令並不足夠;還需驗證要求的資料或操作結果。