首页/新闻资讯/正文详情

ShrinkDriver:使用 PowerShell 并行执行 DBCC SHRINKFILE 回收 SQL Server 数据文件空间

发布时间:2026/9/25 3:56:08 来源:云帆数科 栏目:资讯中心
ShrinkDriver:使用 PowerShell 并行执行 DBCC SHRINKFILE 回收 SQL Server 数据文件空间
示例工程数据库教程后端【免费下载链接】sql-server-samplesAzure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge项目地址https://gitcode.com/gh_mirrors/sq/sql-server-samples点击查看免费下载ShrinkDriver 是 sql-server-samples 仓库中samples/features/shrink/shrink-driver目录下的一个 PowerShell 工具用于通过并行运行DBCC SHRINKFILE回收 SQL Server / Azure SQL 数据库中已分配但未使用的数据文件空间并内置进度监控、增量收缩、自动重试与优雅停机能力。阅读本文后你将掌握如何基于Invoke-ShrinkDriver在 Report只读分析与 Shrink实际收缩两种模式下管理数据文件空间理解其参数体系、状态报告与文件结局分类并学会运行其自带的单元与集成测试来验证行为。为什么需要 ShrinkDriver并行收缩的背景数据库的数据文件ROWS类型文件在长期运行中会因大事务回滚、大量删除、索引重建等原因留下已分配但未使用allocated but unused的空间。DBCC SHRINKFILE是 T-SQL 提供的标准收缩命令但手动对每个文件逐个执行存在明显痛点大文件的一次性收缩耗时长且收缩期间可能阻塞其他查询多个文件串行处理总耗时随文件数线性增长收缩失败超时、被阻塞、连接中断缺乏重试与恢复机制难以实时观察每个文件收缩的进度、等待类型与阻塞来源。ShrinkDriver 把这些问题封装成一个可重复执行的 PowerShell 命令它为每个数据文件建立一个独立会话SPID并行执行DBCC SHRINKFILE以增量步长逐步收缩并在出现瞬态故障时按指数退避重试。核心脚本位于 src/ShrinkDriver.ps1版本信息记录在 CHANGELOG.md当前 1.1.0。核心能力一览根据 README.md 与脚本实现ShrinkDriver 提供以下能力两种运行模式Report默认只列出每个文件的已用、已分配与可回收空间不改变任何数据Shrink才真正执行收缩。多文件并行收缩每个文件一个会话session通过 Runspace Pool 并发执行默认最多 5 个文件同时收缩-Sessions总耗时显著低于串行。增量分步收缩每个文件以-StepGiB默认 20 GiB为步长逐步向目标大小收缩而不是一次性大操作降低单步风险。自动重试对瞬态失败以指数退避 全抖动full jitter方式重试并在无法继续收缩时转移到下一个文件。跳过低收益文件可回收空间低于-MinReclaimGiB默认 1 GiB的文件直接跳过不为微小收益启动昂贵的收缩。低优先级锁默认以WAIT_AT_LOW_PRIORITY运行减少对其他查询的阻塞超时可选择中止自身收缩SELF或杀掉阻塞会话BLOCKERS需谨慎。可观测与可中断定期向控制台和日志文件输出状态报告支持 CtrlC 两级优雅停机与可选的-MaxRuntimeMinutes总时间上限。多认证方式支持 Entra ID默认、Windows 与 SQL 认证连接数据库。环境要求与准备运行 ShrinkDriver 需要满足以下前提见 README.md 与脚本#Requires -Version 7.0声明项目要求数据库平台SQL Server 2022 或更高版本、Azure SQL Managed Instance、Azure SQL Database收缩权限Shrink模式需要db_owner数据库角色或sysadmin服务器角色成员报告权限Report模式只需能连接到目标数据库公共角色即可PowerShell7.0 或更高版本依赖模块SqlServer 模块Microsoft.Data.SqlClient 由该模块提供安装依赖模块Install-Module SqlServer -Scope CurrentUser注意脚本依赖 Microsoft.Data.SqlClient 类型若未安装 SqlServer 模块会在运行时抛出明确错误并提示上述安装命令见 src/ShrinkDriver.ps1。快速上手加载脚本并运行脚本通过 dot-source 方式加载以定义Invoke-ShrinkDriver命令然后即可调用。以下示例均来自 README.md. .\src\ShrinkDriver.ps1 # Report默认列出每个文件的已用、已分配与可回收空间不改变任何数据 Invoke-ShrinkDriver -ServerName myserver.database.windows.net -DatabaseName MyDb # Shrink Entra ID 认证默认收缩到可能的最小大小最多 5 个文件并发 Invoke-ShrinkDriver -ServerName myserver.database.windows.net -DatabaseName MyDb -Mode Shrink -Sessions 5 # Shrink Windows 认证不收缩到 500 GiB 以下最多 8 个文件并发 Invoke-ShrinkDriver -ServerName sql01 -DatabaseName MyDb -Mode Shrink -AuthType Windows -FileTargetSizeGiB 500 -Sessions 8 # Shrink SQL 认证未提供密码时安全提示输入 Invoke-ShrinkDriver -ServerName sql01 -DatabaseName MyDb -Mode Shrink -AuthType SQL -SqlLogin appuser # 连接到使用自签名证书的实例 Invoke-ShrinkDriver -ServerName devsql01 -DatabaseName MyDb -Mode Shrink -AuthType Windows -TrustServerCertificate需要完整的参数说明与示例时可随时查看命令的内置帮助Get-Help Invoke-ShrinkDriver -Full参数体系详解Invoke-ShrinkDriver的完整参数定义见 src/ShrinkDriver.ps1这里按用途分组说明含默认值与取值范围连接参数参数说明-ServerName必填目标 SQL Server / Azure SQL 逻辑服务器名称-DatabaseName必填目标数据库名称-AuthType认证方式EntraID默认/Windows/SQL-SqlLoginSQL 认证登录名AuthTypeSQL时必填-SqlPassword密码必须是SecureString而非明文省略时运行时安全提示输入-TrustServerCertificate允许服务器 TLS 证书无法校验时连接连接仍加密。默认关闭仅作为回退——总是先尝试完整校验的连接连接字符串固定启用Encrypttrue、Connect Timeout30应用名标记为ShrinkDriver并关闭连接池Poolingfalse以保证Dispose后物理连接真实关闭src/ShrinkDriver.ps1。Entra ID 认证先尝试环境凭据托管标识、Azure CLI、Azure PowerShell、Visual Studio 的 Active Directory Default不可用则回退到交互式浏览器登录Active Directory Interactive。收缩行为参数参数默认值说明-ModeReportReport只读分析/Shrink实际收缩-Sessions5并发收缩的文件数上限自动封顶为合格文件数-TruncateOnly关只释放每个文件末尾的未使用空间不移动数据-NoTruncate关只压缩repack文件不释放空间-WaitAtLowPriority$true以低锁优先级运行收缩减少阻塞其他查询-AbortAfterWaitSELF低优先级等待超时后SELF中止自身收缩BLOCKERS杀掉阻塞会话会终止其他事务谨慎使用-FileTargetSizeGiB无可选的文件大小下限GiB任何文件不会收缩到该值以下-StepGiB20增量收缩的步长GiB-MinReclaimGiB1值得运行一轮收缩的最低可回收空间GiB低于此值的文件跳过-RetryCount5每个文件瞬态失败的重试次数范围 0–500 表示不重试TruncateOnly与NoTruncate互斥、TruncateOnly与FileTargetSizeGiB不兼容、SQL 认证必须提供SqlLogin、SqlPassword必须是 SecureString——这些规则由Test-ShrinkParameterSet在运行前校验并输出明确错误src/ShrinkDriver.ps1。各数值参数还声明了ValidateRange约束越界会直接触发参数校验错误单元测试Numeric parameter validation对此逐项断言见 tests/ShrinkDriver.Unit.Tests.ps1。运行控制与输出参数参数默认值说明-MaxRuntimeMinutes无可选的总运行时间预算达到后停止-StatusIntervalSeconds180状态报告写入间隔秒-StuckWindowSeconds300收缩被阻塞或长时间无进展时取消并重试的判定窗口秒。卡死检测只在每次状态报告时运行因此实际按StatusIntervalSeconds的整数倍生效低于报告间隔的值会被自动上调-LogPath脚本旁的带时间戳日志日志文件路径父目录必须已存在且可写否则运行在开始任何工作前停止-PassThru关向管道输出结构化结果对象模式、总计、逐文件结局供编程调用方使用此外还有一组仅供测试使用的内部参数刻意不出现在帮助中-BackoffBaseSeconds/-BackoffCapSeconds缩短重试退避-StepMBOverride/-MinReclaimMBOverride/-FileTargetMBOverride/-MaxRuntimeSecondsOverride允许以 MB 和秒为单位驱动真实路径使集成测试快速、确定地执行。Report 模式动手前先看清可回收空间Report是默认模式也是推荐的先分析、后操作工作流的第一步。它不改变任何数据只读取sys.database_files与FILEPROPERTY(name, SpaceUsed)计算每个在线、可写 ROWS 数据文件的已用、已分配与可回收空间并给出数据库级汇总src/ShrinkDriver.ps1。关键行为每个文件的可回收空间 已分配大小 − 有效下限有效下限取已用页大小与-FileTargetSizeGiB目标下限中的较大者见Get-ShrinkEffectiveFloorMBsrc/ShrinkDriver.ps1。是否值得收缩由Test-ShrinkWorthwhile判定可回收空间 ≥-MinReclaimGiB才标记为 Eligiblesrc/ShrinkDriver.ps1。文件超过 100 个时只按可回收空间降序列出前 100 个最值得收缩的文件并注明省略数量。汇总只统计 Eligible 文件的可回收空间——低于阈值的文件本来就不会收缩因此不计入总计。Report模式跳过版本、权限、AUTO_SHRINK 等收缩前置检查因为读取空间使用情况只需要公共角色。输出末尾会提示To shrink these files, run again with -Mode Shrink.与 Shrink 模式形成清晰的先分析、再执行闭环。Shrink 模式并行收缩的执行原理进入Shrink模式后脚本先做一轮pre-flight 检查单个往返查询完成src/ShrinkDriver.ps1平台检查SERVERPROPERTY(EngineEdition)为 5Azure SQL Database或 8Azure SQL Managed Instance或ProductMajorVersion≥ 16SQL Server 2022否则抛出不支持该平台错误权限检查IS_ROLEMEMBER(db_owner)或IS_SRVROLEMEMBER(sysadmin)必须为 1AUTO_SHRINK 检查DATABASEPROPERTYEX(DB_NAME(), IsAutoShrink)为 1 时拒绝运行提示先执行ALTER DATABASE ... SET AUTO_SHRINK OFF只读检查数据库为只读时拒绝运行。随后选取合格文件在线、可写、ROWS 类型、可回收空间 ≥ 最小阈值并基于共享状态线程安全的ConcurrentDictionary会话表、事件队列、文件所有权与完成状态启动由Runspace Pool 构成的并行 workersrc/ShrinkDriver.ps1每个 worker 一个独立会话SPID通过Select-ShrinkNextFile领取可回收空间最大且未被占用/未完成的下一个文件src/ShrinkDriver.ps1每个文件按-StepGiB增量生成下一个目标大小Get-ShrinkNextTargetMB会把目标钳制到下限与最小 1 MB——因为DBCC SHRINKFILE把目标 0 解释为收缩到文件创建大小会残留未回收空间见 src/ShrinkDriver.ps1生成的命令形如DBCC SHRINKFILE (file_id, targetMB[, NOTRUNCATE|TRUNCATEONLY]) WITH WAIT_AT_LOW_PRIORITY (ABORT_AFTER_WAIT SELF|BLOCKERS), NO_INFOMSGSNew-ShrinkCommandTextsrc/ShrinkDriver.ps1。收缩循环对每个文件维护自己的尝试/结局状态机每次 step 后重新读取文件大小变小则继续下一增量变大其他会话写入了数据则退避重试超过-RetryCount后按结局归类无进展但确认有可回收空间则停止并报告部分结果。两类典型 SQL 错误被专门处理MSSQL 错误 5201没有更多可回收空间按已收缩/已最小归类并结束该文件src/ShrinkDriver.ps1MSSQL 错误 49537需移动的页被数据库低水位low watermark常由长事务或滞后/长查询的辅助副本持有钉住引擎自身的重试已耗尽且水位短期内不会推进因此结束该文件并提示稍后重新运行收缩src/ShrinkDriver.ps1。瞬态失败的重试采用指数退避 全抖动等待时间 uniform(0 .. min(Cap, Base×2^attempt))默认 Base 5 秒、Cap 60 秒Get-ShrinkBackoffSecondssrc/ShrinkDriver.ps1。连接层还叠加了 Microsoft.Data.SqlClient 的连接级重试提供器SqlConfigurableRetryFactory的指数重试默认 5 次尝试、4 秒增量、30 秒上限并在其上再套一层外层重连循环最多max(10, RetryCount)次尝试足以挺过 Azure SQL 重启或故障转移期间的短暂离线src/ShrinkDriver.ps1 与 src/ShrinkDriver.ps1。重连成功后 SPID 会被刷新状态报告继续跟踪正确的会话。监控线程还实现卡死检测当同一非零阻塞会话持续存在、或 CPU 与读计数在-StuckWindowSeconds内均无进展时取消当前命令并交由 worker 重试Update-ShrinkStuckStatesrc/ShrinkDriver.ps1。状态报告实时观察每个收缩会话运行期间脚本按-StatusIntervalSeconds默认 180 秒输出一次状态报告每个 worker 一行列定义来自 README.md列含义Workerworker 编号SPID该 worker 在服务器上的会话 IDFile正在收缩的数据文件Used / Alloc文件的已用与已分配大小%Done当前DBCC SHRINKFILE增量步的进度来自sys.dm_exec_requests.percent_completeElapsed自该 worker 会话建立以来的时间重连后重置Increment当前增量收缩步的编号Cmd当前收缩阶段如DbccSpaceReclaim、DbccFilesCompact来自sys.dm_exec_requestsStatus请求执行状态running、suspended 等dCPU / dReads / dWrites自上次报告以来同一增量步内的 CPU、读、写增量Blocker阻塞会话如有Wait当前等待类型如有报告末尾给出数据库级总计总运行时间、总已用/已分配空间以及各结局的累计计数。README 中的示例节选2026-07-13 11:30:04 [INFO] ---- status ---- 2026-07-13 11:30:04 [INFO] Worker SPID File Used (GiB) Alloc (GiB) %Done Elapsed Increment Cmd Status dCPU dReads dWrites Blocker Wait 2026-07-13 11:30:04 [INFO] 0 157 13 66.3 78.0 88.8 4h 37m 34s 12 DbccFilesCompact suspended 37,507 68,713 143,163 - PAGEIOLATCH_EX 1ms 2026-07-13 11:30:04 [INFO] 5 179 6 70.3 78.4 92.5 4h 37m 33s 12 DbccFilesCompact suspended 33,075 79,371 153,667 164 (DbccFilesCompact) LCK_M_X 0ms 2026-07-13 11:30:04 [INFO] ---- database total ---- 2026-07-13 11:30:04 [INFO] Run time : 12h 10m 24s 2026-07-13 11:30:04 [INFO] Used : 2.3 TiB 2026-07-13 11:30:04 [INFO] Allocated : 2.5 TiB 2026-07-13 11:30:04 [INFO] Shrunk : 16 2026-07-13 11:30:04 [INFO] Repacked : 0 2026-07-13 11:30:04 [INFO] Partly shrunk : 1 2026-07-13 11:30:04 [INFO] Already at minimum : 0 2026-07-13 11:30:04 [INFO] Already at target : 0 2026-07-13 11:30:04 [INFO] Grew : 0 2026-07-13 11:30:04 [INFO] Gave up : 0实现层面报告通过控制连接批量查询sys.dm_exec_requests并将多文件的FILEPROPERTY(SpaceUsed)合并为一次批处理查询Get-ShrinkFileSizes避免高并发收缩下逐文件调用与收缩本身争用同一文件闩锁而超时src/ShrinkDriver.ps1。CPU/读/写增量只在增量步编号未变时才有意义跨步边界会显示-防止把新请求的归零计数器误算为负增量Get-ShrinkDeltaWithReset。表格单位会根据最大分配值自动选择 KiB/MiB/GiB/TiB保证同一报告内单位一致。结束汇总每个文件如何收场运行结束时的汇总报告每个文件落入哪种结局buckets定义见 README.md结局含义Shrunk文件被缩减达到目标大小或最小大小Repacked使用-NoTruncate时数据页被移向文件前端按设计分配大小不变空间未释放Partly shrunk有缩减但在达到目标/最小大小前放弃Already at minimum已处于可能的最小大小无可回收空间Already at target已等于或低于目标大小Grew结束时比开始时更大其他会话在收缩期间写入了数据Gave up多次重试后大小无变化而放弃Interrupted在产生可测量结果前被中断Not processed本应收缩但运行在完成前结束如从未开始或连接丢失且无法恢复README 中的示例2026-07-13 12:31:24 [INFO] -------------------- summary -------------------- 2026-07-13 12:31:24 [INFO] Run time : 13h 11m 44s 2026-07-13 12:31:24 [INFO] Used : 2.3 TiB 2026-07-13 12:31:24 [INFO] Allocated : 2.3 TiB 2026-07-13 12:31:24 [INFO] Shrunk : 30 2026-07-13 12:31:24 [INFO] Partly shrunk : 1 2026-07-13 12:31:24 [INFO] file 35 [PartlyShrunk]: reduced from 40.0 GiB to 10.0 GiB, but the remaining unused space could not be reclaimed 2026-07-13 12:31:24 [INFO] -------------------------------------------------汇总阶段还会做两件重要的事src/ShrinkDriver.ps1对账任何在运行结束前未到达终态terminal state的合格文件被记为NotProcessed保证汇总覆盖每个合格文件而不是暗示全部完成后续建议重新检查哪些文件仍有可回收空间并给出总量提示——部分收缩或跳过往往源于瞬态条件并发写入、阻塞再次运行可能回收更多。若使用了-PassThru脚本还会向管道输出结构化结果对象Mode、Elapsed、StoppedBy、DbUsedMB、DbAllocatedMB、Counts、逐文件Files方便被其他脚本或 CI 消费交互式运行默认不输出原始对象以免刷屏src/ShrinkDriver.ps1。日志与优雅停机进度同时写入控制台并镜像到日志文件——默认是脚本旁边的带时间戳shrink-时间.log也可用-LogPath指定。日志记录启动时的全部参数值、周期性的逐文件状态报告以及重试、重连、取消等关键事件EVENT。日志路径在运行前会被校验目录必须存在且可写、不能是目录失败则在开始任何工作前快速报错见Resolve-ShrinkLogPathsrc/ShrinkDriver.ps1。控制台着色仅作辅助强调遵循NO_COLOR约定可关闭日志文件始终为纯文本。停机是两阶段优雅的src/ShrinkDriver.ps1第一次 CtrlC 或到达-MaxRuntimeMinutes停止领取新文件取消在飞命令并重新测量在飞文件的真实大小以确定结局DBCC SHRINKFILE被取消后仍保留已回收的空间因此新测量是权威的——通常归类为PartlyShrunk/Grew/Interrupted而非笼统地算作失败Get-ShrinkStopOutcomesrc/ShrinkDriver.ps1第二次 CtrlC立即停止在飞文件直接记为Interrupted不等待重新测量并恢复默认 CtrlC 处理以便必要时强制退出彻底卡死的进程。实现上脚本刻意不使用Console.CancelKeyPress事件处理器PowerShell 会在无 runspace 的后台线程上触发该事件处理器会抛错导致进程崩溃而是把 CtrlC 转成普通按键在监控线程轮询。所有运行时间计算基于单调时钟Stopwatch避免 DST 或 NTP 校时导致时间上限提前/延后触发src/ShrinkDriver.ps1。运维注意事项与安全细节结合脚本实现以下细节值得在实际使用中注意-AbortAfterWait BLOCKERS会终止其他事务脚本在启动日志中显式输出 WARN 提示它把ABORT_AFTER_WAIT BLOCKERS交给引擎去终止阻塞会话应仅在可控维护窗口内使用。-TrustServerCertificate只是回退Open-ShrinkSqlConnection总是先尝试完整校验服务器证书仅当校验失败且显式开启该开关时才重试一次信任证书连接仍加密。对 Azure SQL 这类证书可信的目标绝不会在未校验的情况下连接src/ShrinkDriver.ps1。-SqlPassword必须是 SecureString明文会被Test-ShrinkParameterSet拒绝正确用法是$pw Read-Host -AsSecureString SQL password后传入-SqlPassword $pw。省略密码时运行时会安全提示输入避免密码出现在命令行历史中。AUTO_SHRINK 必须关闭脚本拒绝在开启 AUTO_SHRINK 的数据库上运行因为自动收缩会与手动收缩互相干扰。收缩是高成本操作MinReclaimGiB的默认阈值1 GiB避免了为微小收益启动昂贵的收缩StepGiB默认 20 GiB 使单步可控WaitAtLowPriority默认开启以降低对其他查询的阻塞。测试用 Pester 验证行为ShrinkDriver 附带两套 Pester 测试见 tests/README.md单元测试只验证纯辅助函数参数校验、日志路径解析、退避计算、目标大小计算、结局归类等快速且不需要数据库Invoke-Pester -Path .\tests\ShrinkDriver.Unit.Tests.ps1输出中引用过Tests Passed: 106级别的全绿结果集成测试对真实 SQL 实例创建小型临时数据库、实际运行DBCC SHRINKFILE后删除端到端验证真实行为默认使用 SQL Server LocalDBWindows 认证无实例可达时自动跳过不适用于目标实例的用例也会跳过。# 先安装 Pester 5每用户一次 Install-Module Pester -MinimumVersion 5.0 -Scope CurrentUser # 单元测试快速无需数据库 Invoke-Pester -Path .\tests\ShrinkDriver.Unit.Tests.ps1 # 集成测试默认 LocalDB Invoke-Pester -Path .\tests\ShrinkDriver.Integration.Tests.ps1 -Tag Integration # 针对其他实例如 Azure SQL Database 逻辑服务器 $env:SHRINKDRIVER_TEST_SERVER myserver.database.windows.net $env:SHRINKDRIVER_TEST_AUTH EntraID # EntraID | Windows | SQL # SQL 认证还需设置登录名密码在测试运行时安全提示 # $env:SHRINKDRIVER_TEST_LOGIN appuser # 自签名证书实例如需信任连接 # $env:SHRINKDRIVER_TEST_TRUSTCERT 1 Invoke-Pester -Path .\tests\ShrinkDriver.Integration.Tests.ps1 -Tag Integration Remove-Item Env:\SHRINKDRIVER_TEST_SERVER, Env:\SHRINKDRIVER_TEST_AUTH -ErrorAction SilentlyContinue # 全部测试 / 仅快速门禁跳过集成 Invoke-Pester -Path .\tests Invoke-Pester -Path .\tests -ExcludeTag Integration集成测试夹具位于 tests/fixtures/ShrinkTestDb.psm1它会按引擎自适应地准备包含多个数据文件与交错空闲空间的临时数据库Azure SQL Database 无用户文件组因此所有数据文件位于 PRIMARY并复用与驱动完全一致的连接与认证逻辑Windows / EntraID 的 Default→Interactive 回退 / SQL。集成测试还通过-BackoffBaseSeconds 0 -BackoffCapSeconds 0让重试立即生效、用-StepMBOverride等测试参数驱动真实路径并断言至少一个文件回收了空间总分配大小下降等结果见 tests/ShrinkDriver.Integration.Tests.ps1。小结ShrinkDriver 把DBCC SHRINKFILE从手工逐文件、高风险、难监控升级为并行、增量、可重试、可观测的 PowerShell 工作流Report模式先量化可回收空间Shrink模式以多会话并发与步进收缩降低单次操作风险状态报告与结局分类让每次运行都有据可查优雅停机与自动重连让它适合在长维护窗口甚至 Azure SQL 故障转移场景下使用。仓库内的 README.md、src/ShrinkDriver.ps1、tests 与 CHANGELOG.md 是继续深入理解其实现的完整资料。赞分享示例工程数据库教程后端【免费下载链接】sql-server-samplesAzure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge项目地址https://gitcode.com/gh_mirrors/sq/sql-server-samples点击查看免费下载相关推荐DotNetGuide空间数据SQL Server空间数据类型在EF中的使用DotNetGuide空间数据SQL Server空间数据类型在EF中的使用 引言当位置成为数据的核心维度 你是否曾在开发中遇到这些困境电商平台需要计算文档教程知识库示例工程DBeaver批量执行SQL文件顺序与并行执行的性能对比DBeaver批量执行SQL文件顺序与并行执行的性能对比 你是否曾面对成百上千个SQL脚本文件需要执行而束手无策手动逐个运行不仅耗时还可能因疏忽导致执行顺数据库客户端桌面应用数据库Apache DataFusion SQL API 实战指南用 SessionContext 注册数据源并执行 SQL 查询Apache DataFusion SQL API 实战指南用 SessionContext 注册数据源并执行 SQL 查询 DataFusion 提供了一整大数据数据分析后端上一篇大规模科学数据存储性能瓶颈与HDF5企业级解决方案深度解析下一篇3分钟解锁网易云音乐新玩法BetterNCM插件安装完全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

JMeter分布式压测环境搭建:从单机瓶颈到多机协作实战
JMeter分布式压测环境搭建:从单机瓶颈到多机协作实战

做压测这行越久,越会发现一个事实:单机 JMeter 的瓶颈,往往比被测系统的瓶颈来得更早。明明脚本没问题、场景也没问题,可压到一定并发量之后,客户端自己先卡死了,CPU 打满、内存飙升、网络连接数耗尽&#… · 2026/9/25 3:56:08

Atlantis 架构决策记录(ADR)实践指南:从决策流程到 API 增强与漂移检测的实现落地
Atlantis 架构决策记录(ADR)实践指南:从决策流程到 API 增强与漂移检测的实现落地

DevOpsCI/CD基础设施 【免费下载链接】atlantis Terraform Pull Request Automation 项目地址: https://gitcode.com/gh_mirrors/at/atlantis 点击查看 免费下载 本文以 Atlantis 仓库 docs/adr/ 目录下的架构决策记录体系为核心,完整讲解 ADR 的引入背… · 2026/9/25 3:56:08

wp-calypso 客户端 translator-jumpstart:页内社区翻译(Community Translator)集成的完整实现解析
wp-calypso 客户端 translator-jumpstart:页内社区翻译(Community Translator)集成的完整实现解析

前端CMS 【免费下载链接】wp-calypso The JavaScript and API powered WordPress.com 项目地址: https://gitcode.com/gh_mirrors/wp/wp-calypso 点击查看 免费下载 本篇技术文章以 client/lib/translator-jumpstart/ 模块及其 README 为核心,讲解 wp-c… · 2026/9/25 3:56:08

Python四种内置数据结构详解:列表、元组、字典与集合实战选型
Python四种内置数据结构详解:列表、元组、字典与集合实战选型

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:23:16

STM32调试避坑指南:从BOOT0、SWD到Flash与时钟的实战解析
STM32调试避坑指南:从BOOT0、SWD到Flash与时钟的实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:23:16

Read the Docs 服务端搜索集成:主节点识别、噪音清理与章节解析的 HTML 约定
Read the Docs 服务端搜索集成:主节点识别、噪音清理与章节解析的 HTML 约定

后端文档 【免费下载链接】readthedocs.org The source code that powers readthedocs.org 项目地址: https://gitcode.com/gh_mirrors/re/readthedocs.org 点击查看 免费下载 本文基于 Read the Docs 仓库中的 search-integration.rst 设计文档展开,讲… · 2026/9/25 4:23:16

J-Link安装与调试深度指南:驱动原理、克隆识别与Keil集成
J-Link安装与调试深度指南:驱动原理、克隆识别与Keil集成

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:23:16

S7-1200通过CM CANopen控制KINCO伺服的完整配置与排障指南
S7-1200通过CM CANopen控制KINCO伺服的完整配置与排障指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:23:16

Python分支结构实战:if-elif-else条件判断与习题拆解
Python分支结构实战:if-elif-else条件判断与习题拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:23:10

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码