第十七章——配置SQLServer(4)——优化SQLServer实例的配置

前言:

Sp_configure 可以用于管理和优化SQLServer资源,而且绝大部分配置都可以使用SQLServer ManagementStudio的图形化界面实现。

 

准备工作:

为了查看SQLServer当前实例的配置,也可以使用下列查询来实现:


SELECT  *
FROM    sys.configurations
ORDER BY name



下面是本机的结果:

 

步骤:

1、 执行下面语句,以便看到实例级别的配置:


sp_configure 
GO


2、 为了查看所有可见的配置,可以使用以下语句: 

sp_configure 'show advanced options', 1 ;
GO
RECONFIGURE
GO



3、 现在来执行步骤一的语句,可以看到结果集变了: 

sp_configure 
GO



4、 执行语句,把恢复间隔加大: 

sp_configure 'recovery interval', 5 ;
RECONFIGURE WITH OVERRIDE 
GO



5、 配置索引创建任务中占用的内存大小:


sp_configure 'index create memory (KB)', 1024 ;
RECONFIGURE WITH OVERRIDE 
GO

  

分析:

        先澄清在步骤二以后出现的一个语句,RECONFIGURE WITHOVERRIDE 。这个语句告诉SQLServer接受这个值,如果这个值正确,那么会强迫sp_configure配置这个值给SQLServer。

         在步骤1中,sp_configure存储过程显示了实例级别的可用值,这里包含基础配置,如果你想看更加详细的,需要使用步骤2中的语句,把ShowAdvanced Option的值从0设为1。

        步骤3中,可以看到有更多的配置,因为在步骤2中已经开启了高级选项。

        在步骤4中,设置了恢复间隔为5分钟,意味着每5分钟才发生一次。SQLServer会定期执行checkpoint,把所有脏页写入硬盘的数据页中。

        在第五步中,修改了索引创建的占用内存,索引创建操作是其中一种最耗资源的操作,特别是表非常大的时候,会影响SQLServer的可用内存。特别在SQLServer所在服务器存在其他耗内存的软件时更加如此。

 

扩充知识:

        对巨型表创建索引,不仅相当耗时耗资源,且会导致日志文件在短时间内疯狂增长。

### 如何配置SQL Server同步服务 #### 使用命令行检查主从同步状态 为了确保同步服务正常工作,在SQL Server主节点容器中可以执行特定的命令来查看当前的主从同步状态。通过`docker exec`进入主节点容器并运行如下命令,能够获取有关指定数据库(`mydb`)的同步状态的信息[^1]: ```bash docker exec -it sqlserver-master /opt/mssql-tools/bin/sqlcmd \ -S localhost -U SA -P P@ssw0rd01 \ -Q "SELECT database_id, synchronization_state_desc FROM sys.database_mirroring WHERE database_id = DB_ID('mydb')" ``` #### 实现SQL Server实时同步的方法之一——利用第三方工具PanguSync 除了官方提供的机制外,还有专门用于解决SQL Server之间数据复制需求的应用程序-PanguSync。此应用程序旨在简化跨多个实例间的即时更新流程,并且可以通过访问其开源项目页面获得更多信息和支持材料[^2]。 #### 基于Linux环境下的SQL Server管理与维护建议 针对部署在Linux操作系统上的SQL Server实例,《构建高可用性的 SQL Server:Docker 容器下的主从同步实现指南》提供了一系列最佳实践和技术细节指导,涵盖了从初步规划到具体实施各个阶段所需的知识点和技能要点[^3]。 #### 自动化解决方案推荐-TapData平台特性概述 对于追求更高效率的数据集成方案而言,TapData凭借内置超过百种预定义适配器以及直观易用的操作面板成为了一个不错的选择。它允许用户无需编程基础就能完成复杂场景下的源目标间映射关系建立及增量变更捕捉任务,特别适合需要频繁处理异构型系统对接工作的场合[^4]。 #### 跨库表结构迁移脚本样例(Python版) 当面临不同服务器之间的单张或多张表格转移作业时,借助Python语言编写的自动化脚本来辅助完成这项工作不失为一种有效途径。下面给出了一段简单的代码片段作为参考,展示了怎样运用PyODBC库连接两个不同的SQL Server实例并将选定对象从中转站迁移到目的地[^5]: ```python import pyodbc source_conn_str = 'DRIVER={ODBC Driver 17 for SQL Server};SERVER=SourceServer;DATABASE=SourceDB;UID=user;PWD=password' dest_conn_str = 'DRIVER={ODBC Driver 17 for SQL Server};SERVER=DestServer;DATABASE=DestDB;UID=user;PWD=password' def copy_table_structure(src_cursor, dest_cursor, table_name): create_stmt = src_cursor.execute(f"SELECT definition FROM sys.sql_modules m JOIN sys.tables t ON m.object_id=t.object_id WHERE t.name='{table_name}'").fetchone()[0] dest_cursor.execute(create_stmt) with pyodbc.connect(source_conn_str) as source_connection,\ pyodbc.connect(dest_conn_str) as destination_connection: source_cursor = source_connection.cursor() destination_cursor = destination_connection.cursor() tables_to_copy = ['TableA', 'TableB'] # Replace with actual table names for tbl in tables_to_copy: try: copy_table_structure(source_cursor, destination_cursor, tbl) print(f"Copied structure of {tbl}") except Exception as e: print(f"Failed copying {tbl}: ", str(e)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值