SQL Server enable trace flag 1118 with alter database

版权声明:複製請註明來源 https://blog.csdn.net/weixin_39392627/article/details/86532659

env: Windows Server 2016

        SQL Server 2016 SP2

 

上次介紹利用Alter database啟用trace flag 1117 "SQL Server enable trace flag 1117 with alter database",這次要介紹這次要介紹使用"Alter database"啟用trace flag 1118

Trace flag:1118

移除伺服器上大部分的單一頁面配置,以減少 SGAM 頁面的競爭情況。 建立新物件時,根據預設,前八頁會從不同的範圍 (混合範圍) 進行配置。 之後若需要更多頁面時,將會從相同的範圍 (統一範圍) 加以配置。 SGAM 頁面可用以追蹤這些混合範圍,因此若出現多個混合頁面配置,它會很快地成為瓶頸。 這個追蹤旗標會在建立新物件時,從相同的範圍配置所有八個頁面,進而將掃描 SGAM 頁面的需求降到最低。 如需詳細資訊,請參閱此 Microsoft 支援服務文章 (機器翻譯)。

注意: 從 SQL Server 2016 (13.x) 開始,此行為由 ALTER DATABASE 的 SET MIXED_PAGE_ALLOCATION 選項控制,追蹤旗標 1118 沒有任何作用。 如需詳細資訊,請參閱 ALTER DATABASE SET 選項 (Transact-SQL)。

範圍: 只限全域

 

1.建立測試DB

command:

CREATE DATABASE [TBTEST02]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'TBTEST01', FILENAME = N'E:\SQLData\TBTEST02.mdf' , SIZE = 8192KB , FILEGROWTH = 65536KB )
 LOG ON 
( NAME = N'TBTEST01_log', FILENAME = N'E:\SQLLog\TBTEST02_log.ldf' , SIZE = 8192KB , FILEGROWTH = 65536KB )
GO

 

2.檢查測試DB否預設啟用trace flag 1117    

command:

SELECT
[NAME],
is_mixed_page_allocation_on
FROM SYS.databases 
WHERE [name] ='TBTEST02'

查詢後可以發現"is_mixed_page_allocation_on"為0

 

3.再次檢查測試DB與tempdb

command:

SELECT
[NAME],
is_mixed_page_allocation_on
FROM SYS.databases 
WHERE [name] IN ('TBTEST02','tempdb')

查詢後可以發現"is_mixed_page_allocation_on"為0

 

4.建立測試表並建立測試資料

command:

USE [TBTEST02]
GO

CREATE TABLE test01
( 
  Name CHAR(8000)
) ON [PRIMARY]
GO

USE [TBTEST02]
GO
INSERT INTO [TBTEST02].dbo.test01 VALUES ('Larry222222222222')
GO 20

 

5.檢查測試DB的extent分布

command:

USE [TBTEST02]
GO

SELECT
DB_NAME(database_id) as DBName, 
OBJECT_NAME(object_id) as ObjectName,
extent_page_id, page_type_desc
FROM sys.dm_db_database_page_allocations(DB_ID('TBTEST02'),
OBJECT_ID('test01'),NULL,NULL,'DETAILED')
--WHERE OBJECT_NAME(object_id) = 'test02'
go

extent_page_id : 320

所有的8kb pages放置在相同的extent

extent_page_id : 328

extent已經填滿,下一個extent已經配置

extent_page_id : 336

extent沒有填滿,下一個extent尚未配置

 

6.建立新的測試DB

command:

CREATE DATABASE [TBTEST03]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'TBTEST03', FILENAME = N'E:\SQLData\TBTEST03.mdf' , SIZE = 8192KB , FILEGROWTH = 65536KB )
 LOG ON 
( NAME = N'TBTEST03_log', FILENAME = N'E:\SQLLog\TBTEST03_log.ldf' , SIZE = 8192KB , FILEGROWTH = 65536KB )
GO

 

7.建立測試表

command:

USE [TBTEST02]
GO

CREATE TABLE test01
( 
  Name CHAR(8000)
) ON [PRIMARY]

 

8.利用"Alter databaase"啟用trace flag 1117功能

command:

ALTER DATABASE [TBTEST03] SET MIXED_PAGE_ALLOCATION ON

 

9.增加測試資料

command:

USE [TBTEST03]
GO

INSERT INTO [TBTEST03].dbo.test01 VALUES ('Larry222222222222')
GO 20

 

10.檢查測試DB的extent分布

command:

USE [TBTEST03]
GO

SELECT
DB_NAME(database_id) as DBName, 
OBJECT_NAME(object_id) as ObjectName,
extent_page_id, 
page_type_desc,
is_mixed_page_allocation
FROM sys.dm_db_database_page_allocations(DB_ID('TBTEST03'),
OBJECT_ID('test01'),NULL,NULL,'DETAILED')
--WHERE OBJECT_NAME(object_id) = 'test02'
go

  

extent_page_id : 336

所有的8kb pages放置在相同的extent

extent_page_id : 344

extent已經填滿,下一個extent已經配置

extent_page_id : 352

extent沒有填滿,下一個extent尚未配置

 

 

11.在TempDB啟用trace flag 1118

command:

USE [master]
GO

ALTER DATABASE [Tempdb] SET MIXED_PAGE_ALLOCATION ON
GO

這是比較可惜的地方!!!!

 

猜你喜欢

转载自blog.csdn.net/weixin_39392627/article/details/86532659