Linux 上 SQL Server 的效能最佳作法和設定方針

適用於:SQL Server - Linux

此文章提供最佳作法和建議,以最大化連線至 Linux 上的 SQL Server 之資料庫應用程式的效能。 這些建議僅適用於在 Linux 平台上執行。 所有一般 SQL Server 建議 (例如索引設計) 仍然適用。

下列指引包含設定 SQL Server 與 Linux 作業系統 (OS) 的建議。 請考慮使用下列設定,以在安裝 SQL Server 時獲得最佳效能體驗。

儲存體組態建議

裝載資料、交易記錄以及其他相關檔案 (例如記憶體內部 OLTP 的檢查點檔案) 的儲存體子系統,必須能夠妥善管理平均及尖峰工作負載。

使用具有適當 IOPS、輸送量以及備援的儲存體子系統

一般而言,在內部部署環境中,儲存體廠商支援多個磁碟上分割的適當硬體 RAID 組態,以確保適當的 IOPS、輸送量以及備援。 不過,因為不同儲存體廠商與不同儲存體供應項目之間存在各種架構,所以實際情況可能有所不同。

針對 Azure 虛擬機器上部署的 Linux SQL Server,請考慮使用軟體 RAID,以確保能達到適當的 IOPS 與輸送量需求。 在 Azure 虛擬機器上設定 SQL Server 且有類似的儲存體考量時,請參閱適用於 SQL Server VM 的儲存體組態

以下範例說明如何在 Azure 虛擬機器上的 Linux 中建立軟體 RAID。 請記住,您應該根據資料、交易記錄以及 tempdb IO 需求,使用適當的資料磁碟數目來取得磁碟區所需輸送量與 IOPS。 在下列範例中,連結到 Azure 虛擬機器的資料磁碟有八個;其中 4 個用於裝載資料檔案、2 個用於交易記錄,最後 2 個則用於 tempdb 工作負載。

若要找出用於建立 RAID 的裝置 (例如 /dev/sdc),請使用 lsblk 命令。

# For Data volume, using 4 devices, in RAID 5 configuration with 8KB stripes
mdadm --create --verbose /dev/md0 --level=raid5 --chunk=8K --raid-devices=4 /dev/sdc /dev/sdd /dev/sde /dev/sdf

# For Log volume, using 2 devices in RAID 10 configuration with 64KB stripes
mdadm --create --verbose /dev/md1 --level=raid10 --chunk=64K --raid-devices=2 /dev/sdg /dev/sdh

# For tempdb volume, using 2 devices in RAID 0 configuration with 64KB stripes
mdadm --create --verbose /dev/md2 --level=raid0 --chunk=64K --raid-devices=2 /dev/sdi /dev/sdj

磁碟分割和組態建議

針對 SQL Server,您應該使用 RAID 組態。 部署的檔案系統等量單位 (sunit) 和等量寬度應該符合 RAID 幾何。 例如,這是以 XFS 為基礎的記錄磁碟區範例。

# Creating a log volume, using 6 devices, in RAID 10 configuration with 64KB stripes
mdadm --create --verbose /dev/md3 --level=raid10 --chunk=64K --raid-devices=6 /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf

mkfs.xfs /dev/md3 -f -L log
meta-data=/dev/md3               isize=512    agcount=32, agsize=18287648 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=585204384, imaxpct=5
         =                       sunit=16     swidth=48 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=285744, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

記錄陣列是 6 磁碟機 RAID-10,具有 64 KB 等量。 如您所見:

  • 針對 sunit=16 blks,16 * 4096 區塊大小 = 64 KB,符合等量大小。
  • 針對 swidth=48 blksswidth / sunit = 3,這是陣列中的資料磁碟機數目,不包括同位磁碟機。

檔案系統組態建議

SQL Server 支援 ext4 與 XFS 檔案系統來裝載資料庫、交易記錄及其他檔案 (例如 SQL Server 中記憶體內部 OLTP 的檢查點檔案)。 Microsoft 建議使用 XFS 檔案系統來裝載 SQL Server 的資料與交易記錄檔。

使用 XFS 檔案系統格式化磁碟區:

mkfs.xfs /dev/md0 -f -L datavolume
mkfs.xfs /dev/md1 -f -L logvolume
mkfs.xfs /dev/md2 -f -L tempdb

您可在建立 XFS 磁碟區並加以格式化時,將 XFS 檔案系統設定為不區分大小寫。 這不是 Linux 生態系統中的常用組態,但有鑑於相容性問題仍建議使用。

例如,您可以執行下列命令。 -n version=ci 用來將 XFS 檔案系統設定為不區分大小寫。

mkfs.xfs /dev/md0 -f -n version=ci -L datavolume

持續性記憶體檔案系統建議

針對持續性記憶體裝置上的檔案系統組態,基礎檔案系統的區塊配置應為 2 MB。 如需本文的詳細資訊,請參閱技術考量一文。

開啟檔案限制

您的實際執行環境可能需要比預設開啟檔案限制 1024 更多的連線。 我們建議您設定 16000 的軟性限制,以及 32727 的固定限制。 例如,在 RHEL 中,編輯 /etc/security/limits.d/99-mssql-server.conf 檔案具有下列值:

mssql hard nofile 32727
mssql soft nofile 16000

針對 SQL Server 資料和記錄檔,在檔案系統上停用上次存取日期/時間

為確保連結到系統的磁碟機會在重新開機後自動重新掛接,必須將磁碟機新增至 /etc/fstab 檔案。 您也應該在 /etc/fstab 中使用 UUID (通用唯一識別碼) 來參考磁碟機,而非僅使用裝置名稱 (例如 /dev/sdc1)。

noatime 屬性與用來儲存 SQL Server 資料和記錄檔的任何檔案系統搭配使用。 請參閱您的 Linux 文件,以了解如何設定此屬性。 接著示範如何為掛接於 Azure 虛擬機器中的磁碟區啟用 noatime 選項。

/etc/fstab 中的掛接點項目:

UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" /data1 xfs rw,attr2,noatime 0 0

在上述範例中,UUID 代表可使用 blkid 命令找到的裝置。

SQL Server 與強制單位存取 (FUA) I/O 子系統功能

某些受支援的特定版本 Linux 發行版本,可支援 FUA I/O 子系統功能,以提供資料持久性。 SQL Server 使用 FUA 功能為 SQL Server 工作負載提供高效率且可靠的 I/O。 如需 Linux 發行版本對 FUA 的支援,以及其對 SQL Server 影響的詳細資訊,請參閱 Linux 上的 SQL Server:強制單位存取 (FUA) 內部

從 SUSE Linux Enterprise Server 12 SP5、Red Hat Enterprise Linux 8.0 與 Ubuntu 18.04 開始支援 I/O 子系統中的 FUA 功能。 如果正在使用 SQL Server 2017 (14.x) CU 6 與更新版本,您應該使用下列設定,透過 SQL Server 使用 FUA 獲得高效能且有效率的 I/O 實作。

如果符合下列條件,請使用這個建議的設定。

  • SQL Server 2017 (14.x) CU 6 與更新版本

  • 支援 FUA 功能的 Linux 發行版本與版本 (從 Red Hat Enterprise Linux 8.0、SUSE Linux Enterprise Server 12 SP5 或 Ubuntu 18.04 開始)

  • SQL Server 儲存體的 XFS 檔案系統

  • 儲存子系統和/或支援 FUA 功能並已針對其加以設定的硬體

建議的設定:

  1. 啟用追蹤旗標 3979 作為啟動參數。

  2. 使用 mssql-conf 來設定 control.writethrough = 1control.alternatewritethrough = 0

針對大部分不符合上述條件的其他組態,建議的組態如下:

  1. 啟用追蹤旗標 3982 作為啟動參數 (這是 Linux 生態系統中 SQL Server 的預設值),同時確認未啟用追蹤旗標 3979 作為啟動參數。

  2. 使用 mssql-conf 來設定 control.writethrough = 1control.alternatewritethrough = 1

在 Kubernetes 中部署之 SQL Server 容器的 FUA 支援

  1. SQL Server 必須使用永續性掛接儲存體,而不是 overlayfs

  2. 儲存體必須使用 XFS 檔案系統,而且應該支援 FUA。 啟用此設定之前,您應該與 Linux 散發和儲存體廠商合作,以確保 OS 和儲存子系統支援 FUA 選項。 在 Kubernetes 上,您可以使用下列命令來查詢檔案系統類型,其中 <pvc-name> 是您的 PersistentVolumeClaim

    kubectl describe pv <pvc-name>
    

    在輸出中,尋找設定為 XFS 的 fstype

  3. 裝載 SQL Server Pod 的背景工作角色節點,應使用支援 FUA 功能的 Linux 發行版本與版本 (從 Red Hat Enterprise Linux 8.0、SUSE Linux Enterprise Server 12 SP5 或 Ubuntu 18.04 開始)。

如果符合上述條件,則您可以使用下列建議的 FUA 設定。

  1. 啟用追蹤旗標 3979 作為啟動參數。

  2. 使用 mssql-conf 來設定 control.writethrough = 1control.alternatewritethrough = 0

高效能的核心及 CPU 設定

下列章節會描述建議的 Linux OS 設定,以在安裝 SQL Server 時獲得高效能和輸送量。 如需設定這些設定的程序,請參閱 Linux 發行版本文件。 您可以使用 TuneD,如下一節所述設定許多 CPU 和核心組態。

使用 TuneD 來進行核心設定

針對 Red Hat Enterprise Linux (RHEL) 使用者,TuneD 輸送量-效能設定檔會自動進行核心與 CPU 設定 (C-States 除外)。 從 RHEL 8.0 開始,名為 mssql 的 TuneD 設定檔即與 Red Hat 共同開發,並針對 SQL Server 工作負載提供更佳的 Linux 效能調整。 此設定檔包含 RHEL 輸送量-效能設定檔,我們會此文章中提供其定義,以供您檢閱其他 Linux 發行版本與 RHEL 版本,而不需要此設定檔。

針對 SUSE Linux Enterprise Server 12 SP5、Ubuntu 18.04 以及 Red Hat Enterprise Linux 7.x,可手動安裝 tuned 套件。 此套件可用來建立及設定 mssql 設定檔,如下面章節所述。

使用 TuneD mssql 設定檔的 Linux 建議設定

下列範例提供 Linux 上的 SQL Server 的 TuneD 設定。

[main]
summary=Optimize for Microsoft SQL Server
include=throughput-performance

[cpu]
force_latency=5

[sysctl]
vm.swappiness = 1
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.transparent_hugepages=always
# For multi-instance SQL deployments, use
# vm.transparent_hugepages=madvise
vm.max_map_count=1600000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
kernel.numa_balancing=0

如果您使用核心程序版本大於 4.18 的 Linux 發行版,請批注下列選項,如下所示;否則,如果您使用核心程序版本早於 4.18 的發行版,請取消批注下列選項。

# kernel.sched_latency_ns = 60000000
# kernel.sched_migration_cost_ns = 500000
# kernel.sched_min_granularity_ns = 15000000
# kernel.sched_wakeup_granularity_ns = 2000000

若要啟用此 TuneD 設定檔,請將這些定義儲存於 /usr/lib/tuned/mssql 資料夾下的 tuned.conf 檔案,並使用下列命令啟用該設定檔:

chmod +x /usr/lib/tuned/mssql/tuned.conf
tuned-adm profile mssql

使用下列命令確認設定檔為使用中:

tuned-adm active

或:

tuned-adm list

CPU 設定建議

下表提供 CPU 設定的建議:

設定 詳細資訊
CPU 頻率管理員 效能 請參閱 cpupower 命令
ENERGY_PERF_BIAS 效能 請參閱 x86_energy_perf_policy 命令
min_perf_pct 100 請參閱 Intel p-state 相關文件
C-States 僅限 C1 請參閱您的 Linux 或系統文件,以了解如何確保 C-States 設定為 [僅限 C1]

如先前所述,使用 TuneD 會自動適當地設定 CPU 頻率管理員、ENERGY_PERF_BIAS 以及 min_perf_pct 設定,因為其將輸送量效能設定檔用作 mssql 設定檔的基礎。 C-States 參數必須根據 Linux 或系統經銷商所提供的文件,以手動方式設定。

磁碟設定建議

下表提供磁碟設定的建議:

設定 詳細資訊
磁碟 readahead 4096 請參閱 blockdev 命令
sysctl 設定 kernel.sched_min_granularity_ns = 15000000
kernel.sched_wakeup_granularity_ns = 2000000
vm.dirty_ratio = 80
vm.dirty_background_ratio = 3
vm.swappiness = 1
請參閱 sysctl 命令

描述

  • vm.swappiness:此參數控制相對於檔案系統快取,提供給交換執行階段程序記憶體的相對權數。 此參數的預設值為 60,這表示相較於移除 60:140 比率的檔案系統快取頁面,交換執行階段程序記憶體頁面。 設定值 1 表示在實體記憶體中保留執行階段程序記憶體的強式喜好設定,但是會犧牲檔案系統快取。 由於 SQL Server 使用緩衝集區作為資料頁面快取,而且強烈偏好寫入實體硬體略過檔案系統快取以進行可靠復原,因此積極交換組態對於高效能和專用 SQL Server 很有幫助。 您可以在 /proc/sys/vm/ 的文件 - #swappiness 找到其他資訊

  • vm.dirty_*:未快取 SQL Server 檔案寫入存取,其滿足其資料完整性需求。 這些參數能夠實現高度的非同步寫入效能,並在節流排清時允許足夠大的快取,以降低儲存體 IO 對 Linux 快取寫入的影響。

  • kernel.sched_*:這些參數值代表在 Linux 核心中調整完全公平排程 (CFS) 演算法的目前建議,用於改善在處理序之間,執行緒先佔及繼續執行方面的網路及儲存體 I/O 呼叫輸送量。

使用 mssql TuneD 設定檔設定 vm.swappinessvm.dirty_*kernel.sched_* 設定。 使用 blockdev 命令的磁碟 readahead 組態是以裝置為主,且必須手動執行。

多節點 NUMA 系統的核心設定自動 NUMA 平衡

如果將 SQL Server 安裝在多節點的 NUMA 系統上,則預設會啟用下列 kernel.numa_balancing 核心設定。 若要允許 SQL Server 在 NUMA 系統上以最高效率運作,請在多節點 NUMA 系統上停用自動 NUMA 平衡:

sysctl -w kernel.numa_balancing=0

使用 mssql TuneD 設定檔設定 kernel.numa_balancing 選項。

虛擬位址空間的核心設定

vm.max_map_count 的預設設定 (也就是 65536) 可能不足以安裝 SQL Server。 基於這個理由,請將 SQL Server 部署的 vm.max_map_count 值變更為 262144 以上,並參閱使用 TuneD mssql 設定檔的 Linux 建議設定一節,以進一步微調這些核心參數。 vm.max_map_count 值上限是 2147483647。

sysctl -w vm.max_map_count=1600000

使用 mssql TuneD 設定檔設定 vm.max_map_count 選項。

讓透明大頁 (THP) 保持啟用

大部分的 Linux 安裝預設都應該為開啟此選項。 為了提供最一致的效能體驗,我們建議您讓此設定選項維持啟用狀態。 不過,若在具有多個執行個體的 SQL Server 部署中進行高記憶體分頁活動,或 SQL Server 與伺服器上其他大量占用記憶體的應用程式同時執行等情況下,則建議在執行下列命令之後,測試應用程式效能:

echo madvise > /sys/kernel/mm/transparent_hugepage/enabled

或使用此行來修改 mssql TuneD 設定檔:

vm.transparent_hugepages=madvise

接著,讓 mssql 設定檔在修改之後生效:

tuned-adm off
tuned-adm profile mssql

使用 mssql TuneD 設定檔設定 transparent_hugepage 選項。

網路設定建議

就像有儲存體和 CPU 建議一樣,以下列出網路特定建議以供參考。 下列範例中的所有設定並非都可在不同的 NIC 適用。 如需這些選項的指引,請參閱並洽詢 NIC 廠商。 在開發環境上測試並設定,再將其套用到實際執行環境。 下列選項會以範例說明,而使用的命令是 NIC 類型和廠商特有的。

  1. 設定網路連接埠緩衝區大小。 下列範例中,名為 eth0 的 NIC 是以 Intel 為基礎的 NIC。 針對以 Intel 為基礎的 NIC,建議的緩衝區大小為 4 KB (4096)。 確認預先設定的最大值,然後使用下列範例進行設定:

    使用下列命令檢查預先設定的最大值。 以您的 NIC 名稱取代 eth0

    ethtool -g eth0
    

    rx (接收) 和 tx (傳輸) 緩衝區大小都設定為 4 KB:

    ethtool -G eth0 rx 4096 tx 4096
    

    檢查值是否已正確設定:

    ethtool -g eth0
    
  2. 啟用 Jumbo 框架。 啟用 Jumbo 框架之前,請確認用戶端與 SQL Server 之間網路封包路徑中的所有網路交換器、路由器和任何其他基本項目都支援 Jumbo 框架。 唯有如此,啟用 Jumbo 框架才可以改善效能。 啟用 Jumbo 框架之後,請連線至 SQL Server,並使用 sp_configure 將網路封包大小變更為 8060,如下所示:

    # command to set jumbo frame to 9014 for a Intel NIC named eth0 is
    ifconfig eth0 mtu 9014
    # verify the setting using the command:
    ip addr | grep 9014
    
    EXEC sp_configure 'network packet size', '8060';
    GO
    RECONFIGURE WITH OVERRIDE;
    GO
    
  3. 根據預設,我們建議針對調適型 RX/TX IRQ 聯合設定連接埠,這表示中斷傳遞會調整為改善封包速率低時的延遲,並在封包速率偏高時改善輸送量。 此設定可能無法跨所有不同的網路基礎結構使用,因此請檢閱現有的網路基礎結構,並確認支援此設定。 下列範例適用於名為 eth0 的 NIC,這是以 Intel 為基礎的 NIC:

    1. 設定自適性 RX/TX IRQ 聯合的連接埠:

      ethtool -C eth0 adaptive-rx on
      ethtool -C eth0 adaptive-tx on
      
    2. 確認設定:

      ethtool -c eth0
      

    注意

    針對高效能環境的可預測行為,例如基準測試的環境,請停用調適型 RX/TX IRQ 聯合,然後特別設定 RX/TX 中斷聯合。 請參閱範例命令來停用 RX/TX IRQ 聯合,然後特別設定值:

    停用自適性 RX/TX IRQ 聯合:

    ethtool -C eth0 adaptive-rx off
    ethtool -C eth0 adaptive-tx off
    

    確認變更:

    ethtool -c eth0
    

    設定 rx-usecsirq 參數。 rx-usecs 指定在至少收到 1 個封包之後,產生中斷之前的微秒數。 參數 irq 會指定停用中斷時處於更新狀態的對應延遲。 針對以 Intel 為基礎的 NIC,您可以使用下列設定:

    ethtool -C eth0 rx-usecs 100 tx-frames-irq 512
    

    確認變更:

    ethtool -c eth0
    
  4. 我們也建議啟用接收端調整 (RSS),並依預設結合 RSS 佇列的 RX 和 TX 端。 在使用 Microsoft 支援服務時,有一些特定案例,其中停用 RSS 也可以改善效能。 先在測試環境中測試此設定,再將其套用到實際執行環境。 下列範例適用於 Intel NIC。

    取得預設最大值:

    ethtool -l eth0
    

    將佇列與預設「已合併」最大值中所報告的值合併。 在此範例中,值會設定為 8

    ethtool -L eth0 combined 8
    

    確認設定:

    ethtool -l eth0
    
  5. 使用 NIC 連接埠 IRQ 親和性。 若要藉由調整 IRQ 親和性來達到預期的效能,請考慮幾個重要的參數,例如 Linux 處理伺服器拓撲、NIC 驅動程式堆疊、預設設定和 irqbalance 設定。 NIC 連接埠 IRQ 親和性設定的最佳化是透過伺服器拓撲的知識、停用 irqbalance,以及使用 NIC 廠商特定的設定來完成。

    下列 Mellanox 特定網路基礎結構範例有助於說明組態。 如需詳細資訊,以及若要下載 Mellanox mlnx 工具,請參閱 Mellanox 網路介面卡的效能微調工具。 命令會根據環境而變更。 請連絡 NIC 廠商以取得進一步指引。

    停用 irqbalance 或取得 IRQ 設定的快照,並強制精靈結束:

    systemctl disable irqbalance.service
    

    或:

    irqbalance --oneshot
    

    請確定 common_irq_affinity.sh 是可執行檔:

    chmod +x common_irq_affinity.sh
    

    顯示 Mellanox NIC 連接埠的 IRQ 親和性 (例如 eth0):

    ./show_irq_affinity.sh eth0
    

    使用 Mellanox 工具優化以獲得最佳輸送量效能:

    ./mlnx_tune -p HIGH_THROUGHPUT
    

    將硬體親和性設定為實際載入 NIC 及其連接埠的 NUMA 節點:

    ./set_irq_affinity_bynode.sh `\cat /sys/class/net/eth0/device/numa_node` eth0
    

    驗證 IRQ 親和性:

    ./show_irq_affinity.sh eth0
    

    新增 IRQ 聯合優化

    ethtool -C eth0 adaptive-rx off
    ethtool -C eth0 adaptive-tx off
    ethtool -C eth0  rx-usecs 750 tx-frames-irq 2048
    

    確認設定:

    ethtool -c eth0
    
  6. 完成上述變更之後,請使用下列命令確認 NIC 的速度,以確保其符合預期:

    ethtool eth0 | grep -i Speed
    

進階核心和 OS 組態

  • 若要獲得最佳儲存體 I/O 效能,請使用區塊裝置的 Linux 多佇列排程,讓區塊層效能能夠與快速固態硬碟 (SSD) 和多核心系統一起調整。 如果此設定在 Linux 發行版中預設為啟用,請參閱文件。 儘管在大部分的情況下,會使用 scsi_mod.use_blk_mq=y 將核心開機來加以啟用,但使用中 Linux 發行版中的文件可能會收錄進一步的指引。 這與上游的 Linux 核心一致。

  • 多重路徑 I/O 經常用於 SQL Server 部署,設定裝置對應程式 (DM) 多重佇列目標藉由使用 dm_mod.use_blk_mq=y 核心開機選項來使用 blk-mq 基礎結構。 預設值為 n (已停用)。 當基礎 SCSI 裝置正在使用 blk-mq 時,此設定可減少位於 DM 層的鎖定負荷。 如需如何設定多重路徑 I/O 的詳細資訊,請參閱 Linux 發行版本的文件。

設定交換檔

請確定您已正確設定交換檔,以避免發生記憶體不足的問題。 請參閱您的 Linux 文件,以了解如何建立和適當地調整交換檔大小。

虛擬機器和動態記憶體

如果正在虛擬機器的 Linux 上執行 SQL Server,請務必選取選項來修正保留給虛擬機器的記憶體數量。 請勿使用 Hyper-V 動態記憶體這類功能。

SQL Server 設定

在安裝 Linux 上的 SQL Server 之後執行下列設定工作,以達到應用程式的最佳效能。

最佳做法

針對節點和/或 CPU 使用處理程序親和性

使用 ALTER SERVER CONFIGURATION 為 Linux OS 上用於 SQL Server (通常用於所有 NODE 和 CPU) 的所有 NUMANODE 和/或 CPU 設定 PROCESS AFFINITY。 處理程序親和性有助於維護有效率的 Linux 和 SQL 排程行為。 使用 NUMANODE 選項是最簡單的方法。 即使電腦上只有一個 NUMA 節點,仍應使用PROCESS AFFINITY。 如需如何設定 PROCESS AFFINITY 的詳細資訊,請參閱 ALTER SERVER CONFIGURATION 一文。

設定多個 tempdb 資料檔案

由於 Linux 上的 SQL Server 安裝未提供設定多個 tempdb 檔案的選項,因此建議您在安裝之後,考慮建立多個 tempdb 資料檔案。 如需詳細資訊,請參閱文章中的指導方針避免 SQL Server tempdb 資料庫中配置爭用的建議 \(機器翻譯\)。

進階組態

下列建議是選擇性的組態設定,您可以選擇在安裝 Linux 上的 SQL Server 之後執行。 這些選擇是根據工作負載和 Linux OS 設定的需求而定。

使用 mssql-conf 設定記憶體限制

為了確保 Linux OS 有足夠的可用實體記憶體,SQL Server 處理序預設只會使用 80% 的實體 RAM。 對於某些具有大量實體 RAM 的系統,20% 可能是很大的數字。 例如,在具有 1 TB RAM 的系統上,預設設定會保留大約 200 GB 的 RAM (未使用)。 在此情況下,您可能會想要將記憶體限制設定為較高的值。 請參閱有關 mssql-conf 工具的文件,以及控制 SQL Server 可見記憶體的 memory.memorylimitmb 設定 (以 MB 為單位)。

變更此設定時,請小心不要將這個值設得太高。 如果沒有保留足夠的記憶體,則可能會遇到 Linux OS 和其他 Linux 應用程式的問題。