使用者回報修改資料時回應緩慢,但單純查詢極快。搜尋條件相同。所有交易短小且遵循標準編碼指引。監控封鎖鎖定,無異常。最可能原因?
解析:修改操作(INSERT/UPDATE/DELETE)必須同步寫入交易記錄檔(WAL 機制)。若記錄檔置於高負載磁碟,寫入延遲直接拖慢提交速度。查詢僅讀取資料頁,不受記錄檔磁碟影響。選項 B 會導致 9002 錯誤而非單純緩慢;C 過短反而增加 I/O;D/E 主要影響排序/雜湊/暫存表操作。
資料表
experiments含description text欄位。執行SELECT * FROM experiments WHERE CONTAINS(description, 'angina')確定有符合資料卻無結果。應採取哪兩項行動?
解析:CONTAINS 需要全文檢索索引。必須先建立全文檢索目錄(C),再填充索引(D,可手動或排程)。一般 B-tree 索引(A、B)不支援全文搜尋。
job_cost表通常 10 萬列,夜間批次可能增減 7.5 萬列。日間頻繁 JOIN 查詢,使用者回報首次查詢極慢,後續變快。如何改善首次查詢回應?
sp_updatestatssp_createstats解析:大量資料異動後統計資料過期,導致查詢優化器產生錯誤計畫(首次慢)。sp_updatestats 更新所有統計資料,使後續查詢獲得最佳計畫。sp_createstats 僅建立缺失統計,不更新現有統計。叢集索引與記憶體非根因。
| 情境 | 關鍵對策 |
|---|---|
| 寫入慢、讀取快 | 檢查交易記錄檔磁碟 I/O 壓力 |
| 全文搜尋失效 | 驗證全文檢索目錄存在且已填充 |
| 大量異動後首次查詢慢 | 排程更新統計資料 |
sp_configure 進階選項、DBCC 指令、系統表 (sysdatabases, sysindexes)。