SQL Server 急救包(First Responder Kit)入门教程

如果你的SQL Server数据库运行起来十分缓慢甚至逐渐停止了,恰巧又赶上了你的数据库管理员在休假,你又不知道该如何是好,那么这篇文章会帮助你从学习使用SQL Server急救包(SQL Server First Responder Kit)开始解决问题。这个开源项目包含了一系列能够帮助数据管理员或者临时数据管理员的脚本,能够修复和调整SQL Server实例至正常状态。

这些脚本以存储过程(stored procedures)的形式安装在你的服务器的“主”(master)数据库中。它们都以 “sp_” 为前缀,这能够保证它们在你所能看到任何一个数据库中都能被调用。

注意:SQL Server总是首先搜索主数据库中以 “sp_” 开头的存储过程,因此如果标准的存储过程,即特定数据库的存储过程使用那个前缀的话,会略微影响服务器的速度,因为它被放在了错误的位置。

sp_BlitzWho: 是谁引起了当前的问题?

当数据库出错的时候你首先应该使用这个工具。它会告诉你谁被连接了,它们正在执行什么,并且会告诉你它们拖慢数据库的程度。

如果你发现了一个需要被关闭的无响应的程序,你可以使用 “kill” 命令加上相关的会话 id 来杀掉它。

如果问题还没有解决,那么你可以试试sp_BlitzFirst。

sp_BlitzFirst: 你在等待什么?

sp_BlitzFirst工具能帮助你发现你的数据库在等待什么。在下面的例子中你能看到 #1 问题除了SQL Server消耗了太多的 CPU 时间之外,还有其他的许多问题。

除非你在一个开发者的机器上来测试脚本,否则这些诊断信息真的很不常见。常见的是你会发现一个或更多的 “等待状态(wait stats)” 问题。

在SQL Server中,所有可能减慢一条查询的速度的都被追踪为“等待状态(wait stats)”。它包括硬盘等待、网络I/O等待和列粒度上或表粒度上的锁等待以及等待CPU或者内存资源等等。输出列表中的链接会帮助你处理常见的等待类型,但是它能追踪上百种不同的等待类型,其中的一些影响系统性能的特定等待状态就不那么容易能找到相关信息了。

sp_Blitz: 这个数据库配置正确了吗?

当你第一次接管了一台数据库服务器时,你应该用到的工具就是sp_Blitz。这个工具能够以配置数据库的方式识别出一些常见的问题。每一个检查到的问题都包括如何解决这个问题的信息和一个优先级,这个优先级指明了该以怎样的顺序解决这个问题。

从上边的图片你能看到,有许多数据库长时间没有备份或者长时间没有进行崩溃检查。

它能检测到的问题还包括:

  • 不良配置,尤其是“由默认引起的错误(wrong by default)”,例如并行查询阀值(cost threshold for parallelism)的默认配置错误。

  • 危险文件位置,例如在系统盘上存储事务日志。

  • 非生产许可证(Non-production licenses)的使用。

  • 对数据库崩溃、内存不足等警告的忽略。

  • 通用安全设置错误,例如错误的数据库所有者权限。

sp_BlitzCache: 哪些条查询需要进行调整?

如果当前的问题都已经解决了,你就可以开始探索一些主动提高性能的方法了。一个叫做sp_BlitzCache的工具就是用于此的。这个工具用于监控SQL Server的查询计划缓存(query plan cache),它能监测哪些查询对数据库超时有最大的影响。它也能警告你一些查询中的常见问题,例如通过标量运算和隐式类型转换来进行列计算。

sp_BlitzFirst和sp_BlitzCache最主要的区别就是sp_BlitzFirst监测的是实时发生的事件。相反的是,sp_BlitzCache监测的是历史数据,它能帮你识别出一个趋势,因此它不需要你当场找出存在问题的查询操作。

sp_BlitzIndex: 我的索引都是怎么工作的?

如果性能问题看起来是系统性的,而不是针对特定的查询,你需要检查的下一个地方就是索引了。索引丢失会造成严重的性能问题是众所周知的,它会造成查询时间呈十倍、百倍甚至千倍的增长。

一个同样重要的问题是过多的索引。除了告诉你丢失的索引外,sp_BlitzIndex也会告诉你有可能在维护一个索引上花费的时间比使用它花费的时间还要长。不必要的索引维护不仅会减慢写入速度,还会产生除缓存以外的更多的数据,这些都会大大减慢不相关查询的速度。

SQL Server急救包最早由Brent Ozar Unlimited开发,现在它已经是通过MIT协议的一个开源项目了。


在使用Python来安装geopandas包时,由于geopandas依赖于几个其他的Python库(如GDAL, Fiona, Pyproj, Shapely等),因此安装过程可能需要一些额外的步骤。以下是一个基本的安装指南,适用于大多数用户: 使用pip安装 确保Python和pip已安装: 首先,确保你的计算机上已安装了Python和pip。pip是Python的包管理工具,用于安装和管理Python包。 安装依赖库: 由于geopandas依赖于GDAL, Fiona, Pyproj, Shapely等库,你可能需要先安装这些库。通常,你可以通过pip直接安装这些库,但有时候可能需要从其他源下载预编译的二进制包(wheel文件),特别是GDAL和Fiona,因为它们可能包含一些系统级的依赖。 bash pip install GDAL Fiona Pyproj Shapely 注意:在某些系统上,直接使用pip安装GDAL和Fiona可能会遇到问题,因为它们需要编译一些C/C++代码。如果遇到问题,你可以考虑使用conda(一个Python包、依赖和环境管理器)来安装这些库,或者从Unofficial Windows Binaries for Python Extension Packages这样的网站下载预编译的wheel文件。 安装geopandas: 在安装了所有依赖库之后,你可以使用pip来安装geopandas。 bash pip install geopandas 使用conda安装 如果你正在使用conda作为你的Python包管理器,那么安装geopandas和它的依赖可能会更简单一些。 创建一个新的conda环境(可选,但推荐): bash conda create -n geoenv python=3.x anaconda conda activate geoenv 其中3.x是你希望使用的Python版本。 安装geopandas: 使用conda-forge频道来安装geopandas,因为它提供了许多地理空间相关的包。 bash conda install -c conda-forge geopandas 这条命令会自动安装geopandas及其所有依赖。 注意事项 如果你在安装过程中遇到任何问题,比如编译错误或依赖问题,请检查你的Python版本和pip/conda的版本是否是最新的,或者尝试在不同的环境中安装。 某些库(如GDAL)可能需要额外的系统级依赖,如地理空间库(如PROJ和GEOS)。这些依赖可能需要单独安装,具体取决于你的操作系统。 如果你在Windows上遇到问题,并且pip安装失败,尝试从Unofficial Windows Binaries for Python Extension Packages网站下载相应的wheel文件,并使用pip进行安装。 脚本示例 虽然你的问题主要是关于如何安装geopandas,但如果你想要一个Python脚本来重命名文件夹下的文件,在原始名字前面加上字符串"geopandas",以下是一个简单的示例: python import os # 指定文件夹路径 folder_path = 'path/to/your/folder' # 遍历文件夹中的文件 for filename in os.listdir(folder_path): # 构造原始文件路径 old_file_path = os.path.join(folder_path, filename) # 构造新文件名 new_filename = 'geopandas_' + filename # 构造新文件路径 new_file_path = os.path.join(folder_path, new_filename) # 重命名文件 os.rename(old_file_path, new_file_path) print(f'Renamed "{filename}" to "{new_filename}"') 请确保将'path/to/your/folder'替换为你想要重命名文件的实际文件夹路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值