2016-08-11 23 views
1

我偶然發現了一個日誌數據庫,該數據庫旨在保留過去60天的數據並提供索引,從而實現快速數據分析。「優化」SQL Server數據庫索引的奇怪結果是什麼?

該數據庫包括了26GB數據空間和10GB索引的存儲和分析我計算的索引後,系統就不會使用的〜50%或簡單地效率低,所以設置爲執行以下變化:

OLD

IX          MODE     SIZE 
------------------------------------------------------------------------ 
PK_PerformanceData      CLUSTERED   26,09 GB 
IX_PerformanceData_Controller    NON_CLUSTERED   2,07 GB 
IX_PerformanceData_AppName    NON_CLUSTERED   1,89 GB 
IX_PerformanceData_ControllerMethod  NON_CLUSTERED   1,73 GB 
IX_PerformanceData_StartTime    NON_CLUSTERED   1,35 GB 
IX_PerformanceData_AppHost    NON_CLUSTERED   1,30 GB 
IX_PerformanceData_LogTime    NON_CLUSTERED   0,79 GB 
IX_PerformanceData_StatusCode    NON_CLUSTERED   0,57 GB 
IX_PerformanceData_ProcessException  NON_CLUSTERED   0,54 GB 

IX          MODE    SIZE 
--------------------------------------------------------------------- 
CIX_PerformanceData_AppName_Controller CLUSTERED  26,99 GB 
IX_PerformanceData_LogTime    NON-CLUSTERED  3,62 GB 
IX_PerformanceData_ProvId    NON-CLUSTERED  3,61 GB 
PK_PerformanceData      NON-CLUSTERED  3,57 GB 
IX_PerformanceData_ProcessException  NON-CLUSTERED  3,34 GB 

個色譜柱:

VARCHAR(n) = Controller, AppName, ControllerMethod, AppHost 
DATETIME = StartTime, LogTime 
SMALLINT = StatusCode 
BIGINT = Id, ProvId 
BIT = ProcessException 

我改變了字符串類型索引到單個CLUSTERED一個(〜20度的變化可能的),因爲我認爲這將導致一個不錯的,很正常小B樹索引。此外,我刪除了一些對期刊沒有任何用處的指數。

在索引存儲已經是數據量的40%之前,我懷疑它降到10%以下。不幸的是,它們變得非常大,看起來每個索引都指向了聚簇字符串,因此跳到了大約52%的數據空間。

即使聚集索引的工作速度快得多,現在空間消耗也相當垃圾。任何人都可以解釋這個觀察,並有解決我的問題的最佳做法嗎?

+0

感謝格式化馬克! –

回答

1

當您有一個聚簇索引時,它將成爲引用該表的所有索引的葉節點處的指針。這可以幫助提高性能,因爲如果您要檢索的數據存儲在聚簇索引中,則不需要實際訪問表以獲取它。

最佳實踐取決於你想要的。索引以磁盤空間爲代價提高了讀取性能。當您開始構建包含數據的索引時,例如使用包含的覆蓋索引,存儲量會隨着讀取性能的顯着提升。我認爲索引總是慢寫,但我可能是錯的。

在我看來最好的做法是找到適合您的需求和預算的餘額。

+0

感謝您的快速回復。基本上滿足要求並且磁盤配額不是問題。只是這個結果看起來完全不符合直覺和低效率。我的目標是針對字面字段和有效大小的數字/日期索引的字典式索引。 你知道服務器如何處理這種情況,如果我根本沒有聚集索引集? –

+0

這取決於您的查詢。我覺得這篇文章很好地涵蓋了這個話題。 https://www.simple-talk.com/sql/learn-sql-server/effective-clustered-indexes/ –

+0

感謝您的信息,它讓我對事情和實際問題有了更深入的瞭解。我再次重建結構,索引空間降低到4GB,性能與之前的設置相當。 –

相關問題