Linux 上 SQL Server 的效能最佳作法和設定方針
適用於:SQL Server - Linux
此文章提供最佳作法和建議,以最大化連線至 Linux 上的 SQL Server 之資料庫應用程式的效能。 這些建議僅適用於在 Linux 平台上執行。 所有一般 SQL Server 建議 (例如索引設計) 仍然適用。
下列指引包含設定 SQL Server 與 Linux 作業系統 (OS) 的建議。 請考慮使用下列設定,以在安裝 SQL Server 時獲得最佳效能體驗。
- 儲存體組態建議
- 高效能的核心及 CPU 設定
- 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 blks
,swidth
/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 更多的連線。 您可以設定 1,048,576 的軟式和硬性限制。 例如,在 RHEL 中,編輯 /etc/security/limits.d/99-mssql-server.conf
檔案具有下列值:
mssql - nofile 1048576
注意
此設定不適用於 啟動的 systemd
SQL Server 服務。 如需詳細資訊,請參閱 如何在 RHEL 和 systemd 中設定服務的限制。
針對 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 功能並已針對其加以設定的硬體
建議的設定:
啟用追蹤旗標 3979 作為啟動參數。
使用 mssql-conf 來設定
control.writethrough = 1
和control.alternatewritethrough = 0
。
針對大部分不符合上述條件的其他組態,建議的組態如下:
啟用追蹤旗標 3982 作為啟動參數 (這是 Linux 生態系統中 SQL Server 的預設值),同時確認未啟用追蹤旗標 3979 作為啟動參數。
使用 mssql-conf 來設定
control.writethrough = 1
和control.alternatewritethrough = 1
。
在 Kubernetes 中部署之 SQL Server 容器的 FUA 支援
SQL Server 必須使用永續性掛接儲存體,而不是
overlayfs
。儲存體必須使用 XFS 檔案系統,而且應該支援 FUA。 啟用此設定之前,您應該與 Linux 散發和儲存體廠商合作,以確保 OS 和儲存子系統支援 FUA 選項。 在 Kubernetes 上,您可以使用下列命令來查詢檔案系統類型,其中
<pvc-name>
是您的PersistentVolumeClaim
:kubectl describe pv <pvc-name>
在輸出中,尋找設定為 XFS 的
fstype
。裝載 SQL Server Pod 的背景工作角色節點,應使用支援 FUA 功能的 Linux 發行版本與版本 (從 Red Hat Enterprise Linux 8.0、SUSE Linux Enterprise Server 12 SP5 或 Ubuntu 18.04 開始)。
如果符合上述條件,則您可以使用下列建議的 FUA 設定。
啟用追蹤旗標 3979 作為啟動參數。
使用 mssql-conf 來設定
control.writethrough = 1
和control.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.swappiness
、vm.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 類型和廠商特有的。
設定網路連接埠緩衝區大小。 下列範例中,名為
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
啟用 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
根據預設,我們建議針對調適型 RX/TX IRQ 聯合設定連接埠,這表示中斷傳遞會調整為改善封包速率低時的延遲,並在封包速率偏高時改善輸送量。 此設定可能無法跨所有不同的網路基礎結構使用,因此請檢閱現有的網路基礎結構,並確認支援此設定。 下列範例適用於名為
eth0
的 NIC,這是以 Intel 為基礎的 NIC:設定自適性 RX/TX IRQ 聯合的連接埠:
ethtool -C eth0 adaptive-rx on ethtool -C eth0 adaptive-tx on
確認設定:
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-usecs
和irq
參數。rx-usecs
指定在至少收到 1 個封包之後,產生中斷之前的微秒數。 參數irq
會指定停用中斷時處於更新狀態的對應延遲。 針對以 Intel 為基礎的 NIC,您可以使用下列設定:ethtool -C eth0 rx-usecs 100 tx-frames-irq 512
確認變更:
ethtool -c eth0
我們也建議啟用接收端調整 (RSS),並依預設結合 RSS 佇列的 RX 和 TX 端。 在使用 Microsoft 支援服務時,有一些特定案例,其中停用 RSS 也可以改善效能。 先在測試環境中測試此設定,再將其套用到實際執行環境。 下列範例適用於 Intel NIC。
取得預設最大值:
ethtool -l eth0
將佇列與預設「已合併」最大值中所報告的值合併。 在此範例中,值會設定為
8
:ethtool -L eth0 combined 8
確認設定:
ethtool -l eth0
使用 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
完成上述變更之後,請使用下列命令確認 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 應用程式的問題。