大页内存可减少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、索引策略等参数,确保护航性能。