SQL Server数据库表空间与行数统计:原理、方法与自动化监控
1. 项目概述为什么需要关注数据库与表的空间占用在数据库运维和开发工作中我们经常会遇到一些看似简单却至关重要的问题数据库服务器磁盘空间告警了是哪个库、哪张表在“野蛮生长”新上线的业务模块数据量激增有没有超出我们最初的预估或者在进行数据归档、迁移、性能优化之前我们首先需要一份清晰的数据“体检报告”。这个项目的核心就是解决这些问题——快速、准确地获取 SQL Server 数据库及其内部所有表的数据量行数和占用的磁盘空间大小。这不仅仅是执行一两个查询那么简单。一个成熟的数据库环境可能包含数十个甚至上百个数据库每个库中又有成百上千张表。手动查看属性或者写简单的COUNT(*)和sp_spaceused对于单表尚可但在批量、自动化、定期巡检的场景下就力不从心了。我们需要一个系统性的方法能够一次性拉出全景视图并且结果要准确、可读、便于分析。这背后涉及对 SQL Server 系统目录视图如sys.objects,sys.partitions,sys.allocation_units的深入理解以及对存储空间分配原理数据页、索引页、LOB数据等的清晰认知。掌握这项技能意味着你能主动掌控数据资产的规模为容量规划、成本控制、性能调优例如识别出需要分区或归档的大表以及制定备份策略提供坚实的数据支撑。接下来我将拆解几种从基础到进阶的实现方法并分享在实际生产环境中踩过的坑和总结的技巧。2. 核心原理SQL Server 如何存储与统计空间信息在动手写查询之前我们必须先搞清楚 SQL Server 是如何管理表和索引的存储空间的。这决定了我们查询哪些系统视图以及如何解读其中的数据。2.1 存储结构的基本单元页与区SQL Server 中数据存储的基本单位是页Page每页大小为 8 KB。表或索引的数据行就存放在数据页中。为了高效管理空间SQL Server 将 8 个连续的页即 64 KB组织成一个区Extent。区是空间分配的基本单位。当我们创建一张表并插入数据时SQL Server 会按需为它分配区。这些分配信息被记录在系统的全局分配映射GAM和共享全局分配映射SGAM页等元数据中。而我们即将查询的系统目录视图正是对这些底层元数据的一种友好封装。2.2 关键系统目录视图解析我们主要会用到以下几个核心系统视图sys.tables/sys.objects: 前者专门用于用户表后者范围更广包括表、视图、存储过程等。我们常用sys.tables来获取表的基本信息如对象ID (object_id) 和表名 (name)。sys.partitions: 这是理解存储的核心。在 SQL Server 中每个堆没有聚集索引的表或索引聚集或非聚集都至少有一个分区Partition。即使你没有显式使用表分区功能每个表或索引也默认有一个分区。这个视图记录了每个分区所属的对象、索引ID、分区号以及最重要的——该分区占用了多少页(used_page_count) 和总共有多少行(rows)。sys.allocation_units: 分配单元是分区内一组页的容器。一个分区可以包含三种类型的分配单元IN_ROW_DATA: 存储常规的行内数据包括固定长度和可变长度列只要不超过 8060 字节限制。LOB_DATA: 存储大型对象数据如text,ntext,image,varchar(max),nvarchar(max),varbinary(max)等类型的值。ROW_OVERFLOW_DATA: 存储行溢出数据。当可变长度列的总长度超过 8060 字节限制时部分列会被移到这个分配单元。 这个视图告诉我们每种类型的数据占用了多少页 (total_pages,used_pages,data_pages)。注意used_pages是实际被使用的页数包括数据页和索引页以及一些内部结构页。total_pages是已分配给该分配单元的总页数包括已使用和未使用的。data_pages是用于存储实际数据行的页数对于索引这指的是叶级页。2.3 空间计算逻辑综合以上信息计算一个表或索引占用空间的基本逻辑是通过sys.tables找到表。通过sys.partitions找到该表的所有分区通常是分区1除非做了表分区。通过sys.allocation_units找到每个分区下的所有分配单元。将相关分配单元的used_pages或total_pages相加。将总页数乘以 8 (KB)得到以 KB 为单位的空间大小。进一步可以转换为 MB 或 GB。行数 (row_count) 则相对简单通常直接从sys.partitions中对应分区的rows列获取对于堆或聚集索引的叶级。但需要注意rows是近似值还是精确值取决于你如何查询以及数据库的状态这在后续的实操中会详细说明。3. 方法一使用系统存储过程sp_spaceused这是最快捷、最入门的方法。sp_spaceused是一个系统存储过程可以显示整个数据库或单个表的磁盘空间使用情况。3.1 查看整个数据库的空间使用USE [YourDatabaseName]; -- 切换到目标数据库 GO EXEC sp_spaceused;执行后会返回类似下面的结果database_namedatabase_sizeunallocated spaceYourDatabaseName1024.50 MB24.31 MBreserveddataindex_sizeunused1000.19 MB750.00 MB200.19 MB50.00 MBdatabase_size: 数据库文件.mdf, .ndf的当前大小。unallocated space: 数据库中尚未保留给任何对象的空间。reserved: 为数据库中的对象分配的总空间。data: 数据使用的总空间。index_size: 索引使用的总空间。unused: 已分配但尚未使用的空间。这个方法能快速给出数据库级别的概况但无法知道是哪些表占用了大部分空间。3.2 查看单个表的空间使用USE [YourDatabaseName]; GO EXEC sp_spaceused YourTableName;或者使用架构名EXEC sp_spaceused [dbo].[YourTableName];返回结果namerowsreserveddataindex_sizeunusedYourTableName100000082400 KB72000 KB8000 KB2400 KBname: 表名。rows: 表中的行数。注意对于大型表或频繁更新的表这个行数可能不是实时精确的它来自于表的元数据可能是一个近似值。在需要精确行数时这可能是个问题。reserved: 为该表分配的总空间包括数据、索引和未使用空间。data: 表中数据所占用的空间。index_size: 表的索引所占用的空间。unused: 为表分配但尚未使用的空间。优点简单易用无需理解复杂系统视图。缺点无法一次性批量查看所有表需要循环或借助其他工具。行数 (rows) 可能不精确。对于分区表显示的是所有分区的汇总信息看不到分区明细。实操心得sp_spaceused在快速检查单个可疑大表时非常方便。但在编写自动化巡检脚本或生成详细报告时直接查询系统视图是更灵活、更强大的选择。4. 方法二查询系统目录视图推荐方案这是最灵活、最常用也是信息最全面的方法。我们可以通过连接sys.tables,sys.partitions,sys.allocation_units,sys.indexes等视图编写一个查询来获取所有表或指定表的详细空间信息。4.1 基础查询获取所有表的行数与空间下面是一个经典且实用的查询脚本。它计算了每个表的行数、保留空间、数据空间、索引空间和未使用空间。USE [YourDatabaseName]; GO SELECT t.NAME AS TableName, s.Name AS SchemaName, p.rows AS RowCounts, SUM(a.total_pages) * 8 AS TotalSpaceKB, SUM(a.used_pages) * 8 AS UsedSpaceKB, (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB, SUM(CASE WHEN i.index_id IN (0, 1) AND a.type_desc IN_ROW_DATA THEN a.used_pages ELSE 0 END) * 8 AS DataSpaceKB, SUM(CASE WHEN i.index_id 1 AND a.type_desc IN_ROW_DATA THEN a.used_pages ELSE 0 END) * 8 AS IndexSpaceKB FROM sys.tables t INNER JOIN sys.indexes i ON t.object_id i.object_id INNER JOIN sys.partitions p ON i.object_id p.object_id AND i.index_id p.index_id INNER JOIN sys.allocation_units a ON p.partition_id a.container_id LEFT OUTER JOIN sys.schemas s ON t.schema_id s.schema_id WHERE t.is_ms_shipped 0 -- 排除系统表 AND i.object_id 255 -- 排除系统对象 GROUP BY t.Name, s.Name, p.Rows ORDER BY TotalSpaceKB DESC; -- 按总空间降序排列方便找出最大表查询结果解读RowCounts: 表的行数来自sys.partitions.rows。对于堆表或聚集索引这个值通常是准确的但并非100%实时。对于非常大的表为了性能SQL Server 可能不会随时更新这个元数据。TotalSpaceKB: 为该表分配的总空间KB。对应sp_spaceused中的reserved。UsedSpaceKB: 实际已使用的空间KB。约等于DataSpaceKB IndexSpaceKB LOB/溢出数据空间本查询未单独列出。UnusedSpaceKB: 已分配但未使用的空间KB。对应sp_spaceused中的unused。DataSpaceKB: 数据堆或聚集索引叶级占用的空间KB。这是一个近似值因为它只计算了IN_ROW_DATA分配单元。IndexSpaceKB: 非聚集索引占用的空间KB。同样只计算了IN_ROW_DATA。4.2 进阶查询包含LOB和行溢出数据基础查询主要关注行内数据 (IN_ROW_DATA)。要全面了解空间占用必须把LOB_DATA和ROW_OVERFLOW_DATA也考虑进去。下面的查询提供了更细致的分类SELECT SCHEMA_NAME(t.schema_id) AS SchemaName, t.name AS TableName, SUM(p.rows) AS RowCounts, -- 总空间 (MB) CAST(ROUND((SUM(a.total_pages) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS TotalSpaceMB, -- 数据空间 (MB) - 行内数据 CAST(ROUND((SUM(CASE WHEN a.type 1 THEN a.used_pages WHEN a.type IN (1, 3) THEN a.data_pages ELSE 0 END) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS DataSpaceMB, -- 索引空间 (MB) - 行内数据 CAST(ROUND((SUM(CASE WHEN a.type 2 THEN a.used_pages ELSE 0 END) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS IndexSpaceMB, -- LOB数据空间 (MB) CAST(ROUND((SUM(CASE WHEN a.type 3 THEN a.used_pages ELSE 0 END) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS LobSpaceMB, -- 行溢出数据空间 (MB) CAST(ROUND((SUM(CASE WHEN a.type 4 THEN a.used_pages ELSE 0 END) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS RowOverflowSpaceMB, -- 未使用空间 (MB) CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UnusedSpaceMB FROM sys.tables t INNER JOIN sys.indexes i ON t.object_id i.object_id INNER JOIN sys.partitions p ON i.object_id p.object_id AND i.index_id p.index_id INNER JOIN sys.allocation_units a ON p.partition_id a.container_id WHERE t.is_ms_shipped 0 AND i.object_id 255 GROUP BY t.schema_id, t.name ORDER BY TotalSpaceMB DESC;关键改进使用a.type来区分分配单元类型1IN_ROW_DATA, 2LOB_DATA, 3ROW_OVERFLOW_DATA。注意在旧版本或某些文档中type的值可能不同最好使用type_desc列。将结果转换为 MB更易读。明确分离了 LOB 和行溢出数据的空间。这对于存储了大量varchar(max)文本或varbinary(max)文件如图片、文档的表至关重要这些数据往往非常庞大且容易被忽略。注意事项sys.partitions.rows中的行数对于堆或聚集索引是相对准确的但对于非聚集索引这个值没有意义。上述查询在GROUP BY时对行数进行了求和这在表有多个分区非默认分区时会导致行数重复计算。更严谨的做法是只取index_id为 0堆或 1聚集索引的分区的行数。我们将在优化部分解决这个问题。5. 方法三使用动态管理视图 (DMV) 获取实时信息动态管理视图 (DMV) 提供了服务器运行状态的实时、动态信息。对于空间查看sys.dm_db_partition_stats是一个强大的工具它聚合了sys.partitions、sys.allocation_units等视图的信息查询起来更简洁并且在一些情况下性能更好。5.1 使用sys.dm_db_partition_statsSELECT OBJECT_NAME(object_id) AS TableName, SUM(row_count) AS RowCount, SUM(used_page_count) * 8 AS UsedSpaceKB, SUM(reserved_page_count) * 8 AS ReservedSpaceKB FROM sys.dm_db_partition_stats WHERE object_id NOT IN (SELECT object_id FROM sys.objects WHERE is_ms_shipped 1) AND index_id IN (0, 1) -- 只考虑堆(0)或聚集索引(1)避免重复计算行数 GROUP BY object_id ORDER BY ReservedSpaceKB DESC;这个查询非常简洁直接给出了每个对象的行数、已用页和保留页。used_page_count和reserved_page_count的含义与之前类似。优点语法简洁易于理解和记忆。性能通常不错因为它是专门为统计信息设计的 DMV。行数 (row_count) 从这个视图获取对于堆和聚集索引通常是相当准确的。缺点信息不如直接连接多个系统视图那么详细例如无法直接区分数据空间和索引空间除非结合sys.indexes。同样对于LOB和行溢出数据的空间需要关联sys.allocation_units才能细分。5.2 结合 DMV 与系统视图的完整查询结合 DMV 和系统视图我们可以写出一个既高效又信息全面的查询SELECT SCHEMA_NAME(o.schema_id) AS SchemaName, o.name AS TableName, SUM(CASE WHEN i.index_id IN (0, 1) THEN p.rows ELSE 0 END) AS RowCounts, CAST(ROUND((SUM(a.total_pages) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS TotalSpaceMB, CAST(ROUND((SUM(a.used_pages) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UsedSpaceMB, CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UnusedSpaceMB, -- 详细分类 CAST(ROUND((SUM(CASE WHEN a.type_desc IN_ROW_DATA AND i.index_id IN (0,1) THEN a.used_pages ELSE 0 END) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS DataSpaceMB, CAST(ROUND((SUM(CASE WHEN a.type_desc IN_ROW_DATA AND i.index_id 1 THEN a.used_pages ELSE 0 END) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS IndexSpaceMB, CAST(ROUND((SUM(CASE WHEN a.type_desc LOB_DATA THEN a.used_pages ELSE 0 END) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS LobSpaceMB, CAST(ROUND((SUM(CASE WHEN a.type_desc ROW_OVERFLOW_DATA THEN a.used_pages ELSE 0 END) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS RowOverflowSpaceMB FROM sys.objects o INNER JOIN sys.indexes i ON o.object_id i.object_id INNER JOIN sys.partitions p ON i.object_id p.object_id AND i.index_id p.index_id INNER JOIN sys.allocation_units a ON p.partition_id a.container_id WHERE o.is_ms_shipped 0 AND o.type U -- 只查询用户表 (User Table) AND p.rows 0 -- 排除一些内部对象 GROUP BY o.schema_id, o.name ORDER BY TotalSpaceMB DESC;这个查询是我在生产环境中常用的一个版本它解决了行数重复计算的问题通过CASE WHEN i.index_id IN (0, 1) THEN p.rows ELSE 0 END并且清晰地展示了各类数据的空间分布。6. 常见问题、误差分析与排查技巧在实际使用中你可能会发现不同方法得到的结果有细微差异或者结果与你的预期不符。以下是一些常见问题和排查思路。6.1 为什么行数不准确元数据延迟对于超大型表或经历大量INSERT/DELETE操作的表SQL Server 为了性能不会实时更新sys.partitions中的rows元数据。这个值可能是一个近似值或略有延迟。解决方法如果需要绝对精确的行数对小型表可以使用SELECT COUNT(*) FROM YourTable但这对大表性能消耗极大需谨慎。执行UPDATE STATISTICS YourTable WITH FULLSCAN;可以更新统计信息并刷新元数据但这同样是一个重量级操作。对于大多数容量规划和趋势分析场景元数据中的近似行数已经足够可靠。6.2 为什么空间统计与文件系统显示不一致数据库文件自动增长SQL Server 数据库文件.mdf, .ldf会预分配空间。即使你的数据只用了 10GB文件大小也可能是 20GB设置了初始大小和自动增长。sp_spaceused报告的database_size是文件大小而表空间查询报告的是文件中已分配reserved的空间。日志文件 (LDF)所有空间查询通常只关注数据文件存储表、索引。事务日志文件的大小是独立管理的不包含在这些统计中。未使用的分配空间表中unused的空间是已经从数据库文件分配给该表但尚未被数据行占用的空间。这可能是由于删除操作或预留的增长空间。6.3 查询性能优化当数据库中有成千上万张表时上述连接查询可能会变慢。可以尝试以下优化使用 DMV优先使用sys.dm_db_partition_stats它通常比连接多个视图更快。过滤系统对象确保WHERE子句中包含了is_ms_shipped 0和type U避免扫描大量系统表。缓存结果如果不需要实时数据可以将查询结果插入到临时表或永久表中供后续分析使用。采样查询对于超大规模环境可以考虑只查询空间最大的前N个表或者按架构 (schema) 分批查询。6.4 特殊对象分区表、索引视图、Filestream分区表上述查询已经能处理分区表结果是所有分区的聚合。如果你需要查看每个分区的明细可以在GROUP BY子句中加入p.partition_number并保留分区函数/方案的信息。索引视图索引视图物化视图在sys.objects中type V但它也有空间占用因为其索引被物理存储。上述查询默认过滤了type U所以不会包含它们。如果需要可以修改过滤条件。Filestream/FileTable这些用于存储文件的数据其空间信息不通过传统的页分配来管理因此可能不会完全体现在上述查询中。需要使用特定的 Filestream 相关 DMV 或查看 Windows 文件系统上的对应文件大小。7. 自动化与扩展构建空间监控脚本了解了核心查询后我们可以将其封装成存储过程、视图或 PowerShell 脚本实现自动化监控。7.1 创建可重用的视图在需要经常查看的数据库中创建一个视图会很方便CREATE VIEW dbo.vw_TableSizeInfo AS SELECT SCHEMA_NAME(o.schema_id) AS SchemaName, o.name AS TableName, SUM(CASE WHEN i.index_id IN (0, 1) THEN p.rows ELSE 0 END) AS RowCounts, CAST(ROUND((SUM(a.total_pages) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS TotalSpaceMB, CAST(ROUND((SUM(a.used_pages) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UsedSpaceMB, CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UnusedSpaceMB, CAST(ROUND((SUM(CASE WHEN a.type_desc IN_ROW_DATA AND i.index_id IN (0,1) THEN a.used_pages ELSE 0 END) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS DataSpaceMB, CAST(ROUND((SUM(CASE WHEN a.type_desc IN_ROW_DATA AND i.index_id 1 THEN a.used_pages ELSE 0 END) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS IndexSpaceMB, CAST(ROUND((SUM(CASE WHEN a.type_desc LOB_DATA THEN a.used_pages ELSE 0 END) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS LobSpaceMB, CAST(ROUND((SUM(CASE WHEN a.type_desc ROW_OVERFLOW_DATA THEN a.used_pages ELSE 0 END) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS RowOverflowSpaceMB FROM sys.objects o INNER JOIN sys.indexes i ON o.object_id i.object_id INNER JOIN sys.partitions p ON i.object_id p.object_id AND i.index_id p.index_id INNER JOIN sys.allocation_units a ON p.partition_id a.container_id WHERE o.is_ms_shipped 0 AND o.type U AND p.rows 0 GROUP BY o.schema_id, o.name; GO -- 使用视图 SELECT * FROM dbo.vw_TableSizeInfo ORDER BY TotalSpaceMB DESC;7.2 使用 PowerShell 脚本遍历所有数据库对于需要监控整个 SQL Server 实例所有数据库的场景PowerShell 配合sqlcmd或Invoke-SqlCmd是绝佳选择。以下脚本示例可以生成一个包含所有数据库表空间信息的 CSV 报告。# 保存为 Get-AllDbTableSizes.ps1 $serverInstance YourServerName\InstanceName $outputFile C:\Temp\AllDbTableSizes_$(Get-Date -Format yyyyMMdd_HHmmss).csv $query SELECT DB_NAME() AS DatabaseName, SCHEMA_NAME(o.schema_id) AS SchemaName, o.name AS TableName, SUM(CASE WHEN i.index_id IN (0, 1) THEN p.rows ELSE 0 END) AS RowCounts, CAST(ROUND((SUM(a.total_pages) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS TotalSpaceMB, CAST(ROUND((SUM(a.used_pages) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UsedSpaceMB, CAST(ROUND((SUM(CASE WHEN a.type_desc IN_ROW_DATA AND i.index_id IN (0,1) THEN a.used_pages ELSE 0 END) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS DataSpaceMB, CAST(ROUND((SUM(CASE WHEN a.type_desc IN_ROW_DATA AND i.index_id 1 THEN a.used_pages ELSE 0 END) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS IndexSpaceMB FROM sys.objects o INNER JOIN sys.indexes i ON o.object_id i.object_id INNER JOIN sys.partitions p ON i.object_id p.object_id AND i.index_id p.index_id INNER JOIN sys.allocation_units a ON p.partition_id a.container_id WHERE o.is_ms_shipped 0 AND o.type U AND p.rows 0 GROUP BY o.schema_id, o.name ORDER BY TotalSpaceMB DESC; $allResults () $databases Invoke-SqlCmd -ServerInstance $serverInstance -Query SELECT name FROM sys.databases WHERE state 0 AND name NOT IN (master, model, msdb, tempdb) -OutputAs DataTables foreach ($db in $databases.Rows) { $dbName $db.name Write-Host Processing database: $dbName try { $results Invoke-SqlCmd -ServerInstance $serverInstance -Database $dbName -Query $query -OutputAs DataTables -ErrorAction Stop $allResults $results } catch { Write-Warning Could not query database $dbName. Error: $_ } } if ($allResults.Count -gt 0) { $allResults | Export-Csv -Path $outputFile -NoTypeInformation -Encoding UTF8 Write-Host Report saved to: $outputFile } else { Write-Host No data found. }这个脚本会跳过系统数据库遍历所有用户数据库执行空间查询并将结果合并输出到一个带时间戳的 CSV 文件中非常适合用于定期自动化巡检和趋势分析。你可以通过 Windows 任务计划程序定期执行此脚本实现无人值守的空间监控。

相关新闻

【加急快讯】DeepSeek Harness 深夜开源!主打「一切皆插件」,由 Cordis 驱动

【加急快讯】DeepSeek Harness 深夜开源!主打「一切皆插件」,由 Cordis 驱动

⚡ 加急快讯:DeepSeek 开源 Agent 框架 DeepSeek Harness(dsh),「一切皆插件」,Cordis 驱动,MIT 协议。 今晚8点25分左右,DeepSeek 正式开源发布 Agent 智能体框架 DeepSeek Harness&#xff0c…

2026/8/14 1:16:50 阅读更多 →
LeetCode 12 整数转罗马数字 - 贪心从大到小减

LeetCode 12 整数转罗马数字 - 贪心从大到小减

LeetCode 12 整数转罗马数字,用贪心思想:能减大的先减大的。 🟡 整数转罗马数字 整数转成罗马数字。值对应:I1, V5, X10, L50, C100, D500, M1000。 特殊规则:4→IV, 9→IX, 40→XL, 90→XC, 400→CD, 900→CM。 就是换…

2026/8/14 1:16:50 阅读更多 →
从Transformer到RAG:大型语言模型演进与实战应用指南

从Transformer到RAG:大型语言模型演进与实战应用指南

1. 从“玩具”到“引擎”:LLM十年演进的核心脉络十年前,如果有人跟你说,敲几行字描述需求,就能让机器自动生成一篇报告、一段代码,甚至一段视频,你多半会觉得这是科幻电影里的情节。但今天,这已…

2026/8/14 1:14:50 阅读更多 →

最新新闻

Query改写技术:从语义理解到精准搜索的核心引擎

Query改写技术:从语义理解到精准搜索的核心引擎

1. 从“搜不到”到“搜得准”:Query改写的价值与挑战你有没有遇到过这种情况?脑子里有一个非常具体的问题,比如“如何让我的Python脚本在后台运行,即使关闭终端窗口也不中断”,但当你把这句话原封不动地敲进搜索引擎时…

2026/8/14 4:20:04 阅读更多 →
从Seq2Seq到注意力机制:深度学习序列建模的核心演进与PyTorch实现

从Seq2Seq到注意力机制:深度学习序列建模的核心演进与PyTorch实现

1. 从“编码-解码”到“注意力”:Seq2Seq模型的演进脉络如果你在2015年前后接触过机器翻译或者聊天机器人,那你大概率听说过Seq2Seq这个名字。它就像一个万能翻译官,能把一串输入序列(比如一句英文)变成另一串输出序列…

2026/8/14 4:20:04 阅读更多 →
OpenCLI:将浏览器网页转化为可编程命令行接口的实践指南

OpenCLI:将浏览器网页转化为可编程命令行接口的实践指南

1. 项目概述:当浏览器窗口变成终端如果你和我一样,每天的工作流里充斥着大量的重复性网页操作——登录某个内部系统查看报表、在项目管理工具里更新任务状态、或者是在电商后台批量上架商品——那你一定对“点击、等待、再点击”的循环感到厌倦。我们这些…

2026/8/14 4:20:04 阅读更多 →
每月一测:2026年8月AI智能体红黑榜,谁涨分了谁翻车了?

每月一测:2026年8月AI智能体红黑榜,谁涨分了谁翻车了?

2026年8月,AI办公智能体赛道经历了一轮密集的“赶考”。阿里8月3日官宣千问办公公测,腾讯同月完成QClaw与WorkBuddy的业务整合,字节则将TRAE SOLO升级为TRAE Work,三家大厂近乎同步完成产品线收拢,集体押注AI办公统一入…

2026/8/14 4:20:04 阅读更多 →
D223的PWM电机控制:6路独立脉冲+加减速算法深度解析

D223的PWM电机控制:6路独立脉冲+加减速算法深度解析

采集卡还能控制电机?D223内置6路独立PWM输出,支持脉冲计数和加减速控制,可以直接驱动步进/伺服电机驱动器。本文从硬件到代码,完整解析PWM电机控制方案。一、硬件基础:达林顿开漏输出 D223的PWM输出采用达林顿开漏输出…

2026/8/14 4:20:04 阅读更多 →
拒绝模板化套路!深度解析龙潭古镇网站建设如何讲好千年故事并实现本地流量变现

拒绝模板化套路!深度解析龙潭古镇网站建设如何讲好千年故事并实现本地流量变现

做网站这行干了十几年,我见过太多让人叹气的项目。尤其是当我们聊到像龙潭古镇这样的文化IP时,很多甲方或者项目负责人脑子里蹦出来的第一个念头往往是:“赶紧弄个好看的页面,把照片放上去,能搜到就行。”这种想法太危险了,也太廉价了。龙潭古镇,这座有着深厚历史底蕴的…

2026/8/14 4:19:04 阅读更多 →

日新闻

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

在这个流量为王、视觉至上的互联网时代,对于临沂乃至整个山东乃至全国的传统中小企业来说,拥有一张精美的“数字名片”早已不再是可选项,而是生存的必答题。每当夜幕降临,沂河两岸灯火辉煌,物流之都的喧嚣逐渐沉淀为对未来的思考。我们常常听到老板们在茶余饭后探讨:为什…

2026/8/14 0:00:26 阅读更多 →
Flutter与OpenHarmony实现剧本杀组队表单开发实战

Flutter与OpenHarmony实现剧本杀组队表单开发实战

1. 项目概述在移动应用开发领域,跨平台框架Flutter因其高效的开发体验和出色的性能表现,已经成为众多开发者的首选。而OpenHarmony作为新兴的操作系统平台,其开放性和灵活性为开发者提供了全新的可能性。本文将聚焦于一个实际应用场景——剧本…

2026/8/14 0:00:26 阅读更多 →
大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

在这个数字化浪潮席卷全球的今天,企业想要在激烈的市场竞争中站稳脚跟,拥有一张好看的“数字名片”已经远远不够了。很多老板在刚开始接触互联网业务时,都有一个共同的困惑:为什么我花了钱建的网站,就像是在真空中自嗨?访客进来转了两圈就跑了,线索石沉大海,甚至连客服…

2026/8/14 0:01:27 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/13 10:41:52 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/13 10:41:51 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/13 10:41:50 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/13 10:41:49 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/13 10:41:49 阅读更多 →