大页内存可减少SQL Server的内存管理开销,提升内存访问效率。在Debian中,需通过以下步骤配置:
num_pages = (SQL_Server_max_memory / hugepage_size) + 1
(hugepage_size
通常为2MB,默认可通过grep Hugepagesize /proc/meminfo
查看)。/etc/sysctl.conf
,添加:vm.nr_hugepages = <num_pages>
。sysctl -p
使配置生效。优化内核参数以提升内存分配和网络性能:
ulimit -n 65535
(永久生效需修改/etc/security/limits.conf
,添加* soft nofile 65535
和* hard nofile 65535
)。/etc/sysctl.conf
,添加net.core.rmem_max = 16777216
、net.core.wmem_max = 16777216
,执行sysctl -p
生效。max server memory
的50%-70%(如max server memory
=16GB,min server memory
=8GB-12GB)。防止Windows/Linux内存管理器将SQL Server的内存页换出到磁盘,提升内存访问稳定性。在Debian中,需通过以下步骤配置:
/etc/security/limits.conf
,添加sqlserver_user hard memlock unlimited
(sqlserver_user
为SQL Server运行账户)。ALTER INDEX ALL ON TableName REBUILD
(碎片率>30%时)或ALTER INDEX ALL ON TableName REORGANIZE
(碎片率10%-30%时),保持索引效率。WHERE
、JOIN
、SELECT
字段创建覆盖索引(包含所有查询列),避免回表操作,减少I/O。sys.dm_db_index_usage_stats
视图监控索引使用情况,删除未被使用或使用频率极低的索引(减少维护开销)。sp_configure
修改),避免过多连接占用内存。SQL Server: Memory Manager\Total Server Memory (KB)
:SQL Server当前使用的总内存。SQL Server: Memory Manager\Target Server Memory (KB)
:SQL Server认为合适的内存目标(若Total Server Memory
长期低于Target Server Memory
,说明内存不足)。Process\Private Bytes
:SQL Server进程占用的私有内存(判断是否有内存泄漏)。sys.dm_os_memory_clerks
)。UPDATE STATISTICS TableName
或sp_updatestats
,确保查询优化器生成最优执行计划。max server memory
、索引策略等参数,确保护航性能。