CentOS環境下SQL Server最佳實踐
sudo yum install -y wget openssl11-devel libaio libcurl libxml2-devel bzip2-devel libjpeg-turbo-devel freetype-devel libpng-devel
安裝SQL Server所需的依賴庫,避免安裝過程中報錯。mssql-release.repo
,CentOS 8對應調整路徑),并導入GPG密鑰(sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
),確保軟件包來源可信。sudo yum install -y mssql-server msodbcsql17 unixodbc-devel
),覆蓋數據庫引擎、ODBC驅動等基礎組件。sudo /opt/mssql/bin/mssql-conf setup
,按提示設置SA賬戶強密碼(包含大小寫字母、數字、特殊字符,長度≥8位),并選擇版本(如Developer版用于開發測試,Enterprise版用于生產)。sudo systemctl start mssql-server
啟動SQL Server服務,sudo systemctl enable mssql-server
設置開機自啟,確保服務持久運行。sqlcmd
修改端口(示例:sudo sqlcmd -S localhost -U sa -Q "sp_configure 'show advanced options', 1; RECONFIGURE; sp_configure 'tcp port', 1434; RECONFIGURE;"
),隨后重啟服務使配置生效。sudo sqlcmd -S localhost -U sa -Q "sp_addlogin 'ANONYMOUS', 'ANONYMOUS_PASSWORD', 'MSSQLSERVER'; sp_droplogin 'ANONYMOUS';"
徹底刪除匿名賬戶。firewall-cmd
開放SQL Server端口(sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
,隨后sudo firewall-cmd --reload
);禁用SELinux(若無需強制訪問控制,編輯/etc/selinux/config
設置SELINUX=disabled
)或調整其策略,避免攔截SQL Server進程。EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'max server memory (MB)', 16000; RECONFIGURE;
限制SQL Server最大內存使用(預留10%-20%內存給操作系統及其他進程),避免內存耗盡導致系統崩潰。mount -o noatime,nodiratime
掛載選項減少文件元數據操作。SELECT *
(僅查詢所需列),減少數據傳輸量;為高頻查詢的列創建索引(如主鍵、外鍵、WHERE條件列),避免全表掃描;定期通過UPDATE STATISTICS
更新統計信息,幫助查詢優化器生成更優的執行計劃;使用EXPLAIN
分析慢查詢,識別并優化性能瓶頸(如缺少索引、嵌套子查詢過多)。BACKUP DATABASE [數據庫名] TO DISK = '/path/to/backup.bak'
命令或SSMS執行備份。RESTORE VERIFYONLY FROM DISK = '/path/to/backup.bak'
命令檢查備份完整性),確保在災難發生時能成功恢復數據。perfmon
)監控關鍵指標(如CPU使用率、內存使用率、磁盤I/O、鎖等待時間);通過動態管理視圖(DMVs)如sys.dm_exec_requests
(查看當前執行查詢)、sys.dm_os_wait_stats
(查看等待類型)分析性能瓶頸。ALTER INDEX ALL ON [表名] REBUILD
)或重組(ALTER INDEX ALL ON [表名] REORGANIZE
),減少索引碎片;每月更新統計信息(UPDATE STATISTICS [表名]
),確保查詢優化器做出準確決策;清理無用日志(如事務日志)和臨時文件,釋放磁盤空間。