SQL Server 效能最佳化的作法:
在格式化資料磁碟,建議:採取
64 KB 的配置單位大小。
對 NTFS 配置單位大小(allocation unit size) 的建議
產品 |
磁碟區組態 |
說明 |
SQL Server |
格式化資料磁碟時,採取 64 KB 的配置單位大小 |
適用:資料(Data)/記錄(Log)檔案和 TempDB |
Exchange Server |
格式化資料磁碟時,採取 64 KB 的配置單位大小 |
適用: edb 和「記錄檔磁碟區(log file volume)」 |
-- 01_磁碟管理_格式為64K
02_檔案總管_格式為64K
PowerShell:查詢 BlockSize
Get-WmiObject -Class Win32_Volume | Select-Object Label, BlockSize | Format-Table -AutoSize
Get-WmiObject -Class Win32_Volume | Select-Object Label, BlockSize, Name | Format-Table -AutoSize
$wql = "SELECT Label, Blocksize, Name FROM Win32_Volume WHERE FileSystem='NTFS'"
Get-WmiObject -Query $wql -ComputerName '.' | Select-Object Label, Blocksize, Name | Format-Table -AutoSize
-- 03_PowerShell_1
04_PowerShell_2
05_PowerShell_3
DOS 命令列,使用 fsutil,查詢 Byte Per Cluster
語法:fsutil fsinfo drives
fsutil fsinfo ntfsinfo c:
fsutil fsinfo ntfsinfo e:
觀察:「每一叢集位元組數目(Byte Per Cluster)」
4096,為預設值的 4 KB。
65536,格式化為的64 KB。
-- 06_CMD_fsutil
07_CMD_fsutil
-- 08_PowerShell_ISE_fsutil
-- 09_PowerShell_ISE_fsutil
DOS 命令列,使用 DISKPART
DISKPART
LIST VOL
SELECT VOL 4
FILESYSTEMS
PS C:\Users\Administrator DISKPART
Microsoft DiskPart 版本 10.0.14393.0
Copyright (C) 1999-2013 Microsoft Corporation.
在電腦: WIN-7V80TBJSKGH
DISKPART LIST VOL
磁碟區 ### Ltr 標籤 Fs 類型 大小 狀態 資訊
---------- --- ----------- ----- ---------- ------- --------- --------
磁碟區 0 D DVD-ROM 0 B 沒有媒體
磁碟區 1 C OS NTFS 磁碟分割 126 GB 良好 開機
磁碟區 2 修復 NTFS 磁碟分割 450 MB 良好 隱藏
磁碟區 3 FAT32 磁碟分割 99 MB 良好 系統
磁碟區 4 E Data NTFS 磁碟分割 126 GB 良好
DISKPART SELECT VOL 4
磁碟區 4 是所選擇的磁碟區。
DISKPART FILESYSTEMS
目前檔案系統
類型 : NTFS
配置單位大小 : 64K
旗標 : 00000000
支援格式化的檔案系統
類型 : NTFS (預設值)
配置單位大小 : 4096, 8192, 16K, 32K, 64K (預設值)
類型 : REFS
配置單位大小 : 4096 (預設值), 64K
DISKPART
-- 10_DISKPART_LIST_VOL_FILESYSTEMS
快速檢驗,使用 fsutil file createnew 建立檔案
-- 建立新的檔案,指定大小為:1024
fsutil file createnew e:\Blocksize_1K.txt 1024
-- 建立新的檔案,指定大小為:71680 byte
fsutil file createnew e:\Blocksize_70K.txt 71680
觀察
- 1 KB(1024 byte)檔案,使用磁碟大小為:64 KB。
- 70 KB(71680 byte)檔案,使用磁碟大小為:128 KB。
71680 = 1024 * 70
-- 11_1K檔案的磁碟大小_64KB
-- 12_70K檔案的磁碟大小_128KB
Azure 虛擬機器中的 SQL Server 效能最佳做法
-- 13_SQL Server 效能最佳做法
Disk Partition Alignment Best Practices for SQL Server
-- 14_Disk Partition Alignment Best Practices for SQL Server
Exchange 2013 儲存裝置組態選項
-- 15_Exchange 2013 儲存裝置組態選項
參考文件
Disk Partition Alignment Best Practices for SQL Server
https://msdn.microsoft.com/en-us/library/dd758814(v=sql.100).aspx
Diskspd Utility: A Robust Storage Testing Tool (superseding SQLIO)
https://gallery.technet.microsoft.com/DiskSpd-a-robust-storage-6cd2f223
SQLIO Disk Subsystem Benchmark Tool is being retired
https://blogs.msdn.microsoft.com/sql_server_team/sqlio-disk-subsystem-benchmark-tool-is-being-retired/#.Vm7uZvkrIyg
Microsoft SQL Server
https://support.purestorage.com/Solutions/Databases/Microsoft_SQL_Server
Partition offset and allocation unit size of a disk for SQL Server
https://www.mssqltips.com/sqlservertip/2119/partition-offset-and-allocation-unit-size-of-a-disk-for-sql-server/
在 Windows Server 中使用綜合工作負載測試儲存空間效能
https://msdn.microsoft.com/zh-tw/library/dn894707(v=ws.11).aspx
How Big Are Your Log Writes? Spying on the SQL Server Transaction Log
https://www.brentozar.com/archive/2012/05/how-big-your-log-writes-spying-on-sql-server-transaction-log/
GET CLUSTER SIZE FOR ALL DISKS AND VOLUMES ON A WINDOWS MACHINE USING POWERSHELL AND WMI
https://stuart-moore.com/get-cluster-size-disks-volumes-windows-machine-using-powershell-wmi/
Get Windows NTFS Block Size
https://www.bytesizedalex.com/get-windows-ntfs-block-size/
Exchange 2013 儲存裝置組態選項
https://technet.microsoft.com/zh-tw/library/ee832792(v=exchg.150).aspx
Exchange 2007 磁碟分割設計
https://technet.microsoft.com/zh-tw/library/bb738145(v=exchg.80).aspx
Azure 虛擬機器中的 SQL Server 效能最佳做法
https://docs.microsoft.com/zh-tw/azure/virtual-machines/windows/sql/virtual-machines-windows-sql-performance