1. 跟蹤標記 (Trace Flag) 1117, 1118 文件增加及空間分配方式

跟蹤標記:1117sql

功能:數據庫

  • 默認,同一個文件組下的多個文件,若是某個文件沒有可用空間,且設置了自動增加,則該文件自動增加,其餘文件大小保持不變;
  • 開啓後,同一文件組下的多個文件,若是某個文件沒有可用空間,且設置了自動增加,文件組下全部文件同時增加,每一個文件漲幅取決於自身filegrowth設置;

 

用途:sqlserver

主要用於tempdb性能的優化,解釋以下:性能

  1. 一般tempdb被配置爲primary文件組下包含多個等大的數據文件,以最大化使用CPU,而且能有效減小對於PFS, SGAM, GAM的競爭(latch contention);
  2. 同一個文件組下的多個文件是等比例填充數據的(proportional fill),也就是說全部的文件最終幾乎同時被填滿,這時須要文件自動增加空間;
  3. 而後就會發現每一個文件是逐個根據自身的filegrowth各自增加,這樣屢次文件增加反而帶來沒必要要的開銷,尤爲是當filegrowth設置的不夠大時;
  4. 開啓跟蹤標記1117後,文件組下全部文件同時增加,固然若是將tempdb的多個數據文件初始化爲一個較大的大小,也能夠不考慮這個選項,由於文件不須要增加;

 

備註:優化

在SQL Server 2016裏,跟蹤標記1117已經再也不生效,功能被以下SQL語句所代替spa

ALTER DATABASE [Database_Name] 
MODIFY FILEGROUP [FileGroup_Name] AUTOGROW_ALL_FILES;
--自定義文件組,默認爲AUTOGROW_SINGLE_FILE

 

跟蹤標記:1118code

功能:orm

  • 默認,對於新建的表或索引,會先在混合區(mixed extent)分配空間,等到表或索引佔用空間超過8個頁後,纔會在統一區(uniform extent)分配空間;
  • 開啓後,對於新建的表或索引,直接使用統一區(uniform extent)分配空間;

 

用途:server

主要用於tempdb性能的優化,解釋以下:對象

  1. 表或索引被建立時,首先必須得使用PFS和SGAM頁在混合區分配空間;
  2. 在大量使用臨時表的場景,對於PFS和SGAM頁的競爭(latch contention)會更加明顯;
  3. 開啓跟蹤標記1118後,避開對SGAM頁的使用,在統一區分配新建對象的空間,也許有人會擔憂所有使用統一區後GAM頁的競爭,GAM頁管理的是區(extent),而SGAM雖然管理的也是區(extent),可是一個區能夠被多個對象使用,因此相比之下GAM頁的壓力要小不少;

 

備註:

在SQL Server 2016裏,跟蹤標記1118已經再也不生效,功能被以下SQL語句所代替

ALTER DATABASE [Database_Name] 
SET MIXED_PAGE_ALLOCATION OFF
--自定義數據庫,默認即爲OFF,不使用混合區

 

小結:

對於tempdb的優化,一般會配置多個數據文件,以及開啓1118跟蹤標記,而1117更像是在文件增加方式上,對這二者的補充。

 

從SQL Server 2016開始:

(1) 對於1117,1118這兩個跟蹤標記再也不生效,但有了文件組/數據庫選項,粒度更小,而不用像以前那樣,開啓全局的跟蹤標記(對全部數據庫生效),更爲方便控制;

(2) 對於tempdb,文件增加:默認爲文件組內所有增加;空間分配:默認爲不使用混合區

use tempdb
select * from sys.filegroups
--is_autogrow_all_files
--1

select * from sys.databases where name = 'tempdb'
--is_mixed_page_allocation_on
--0

(3) 對於用戶新建的數據庫,文件增加:默認爲文件組內單個文件增加,和之前同樣;空間分配:默認爲不使用混合區

use DBA
select * from sys.filegroups
--is_autogrow_all_files
--0

select * from sys.databases where name = 'DBA'
--is_mixed_page_allocation_on
--0

(4) 另外在安裝SQL Server 2016時,還根據CPU核數動態設置了tempdb的文件數,因此到了SQL Server 2016,tempdb的優化選項幾乎所有采用默認便可。

 

參考:

SQL Server 2016 – Trace Flag 1117 Changes

http://www.sqlservergeeks.com/sql-server-2016-trace-flag-1117-changes/

 

Working with tempdb in SQL Server 2005

https://technet.microsoft.com/en-us/library/cc966545.aspx

 

kb/328551

https://support.microsoft.com/en-us/kb/328551

 

kb/2154845

https://support.microsoft.com/en-us/kb/2154845

 

Trace Flags (Transact-SQL)

https://msdn.microsoft.com/en-us/library/ms188396.aspx

 

Trace Flags 1117, 1118, and Tempdb Configuration

https://www.brentozar.com/archive/2014/06/trace-flags-1117-1118-tempdb-configuration/

 

《Fast Track Data Warehouse 2.0 Architecture.docx》

相關文章
相關標籤/搜索