小编par*_*tel的帖子

旋转 1300 万条记录时,tempDB 在 SQL Server 中已满,旋转需要超过 28 小时

我有一张表,它消耗了 1300 万条记录(未来数据会增加),大约 2.5GB 另外,这张表不是临时表。当我们尝试对表进行透视时,SQL 给我的结果如下

消息 1105,级别 17,状态 2,第 56 行
无法为对象 'dbo.WORKFILE GROUP 大记录溢出存储分配空间:数据库 'tempdb' 中的 140761897762816',因为 'PRIMARY' 文件组已满。通过删除不需要的文件、删除文件组中的对象、向文件组添加其他文件或为文件组中的现有文件设置自动增长来创建磁盘空间

此外,旋转所需的时间太长。(超过 28 小时)当时没有其他任务在该 SQL 服务器上运行。

我们总共有 16gb 物理内存在机器中,其中 16gb,12gb 分配给 SQL 服务器。这台机器有4核。文件类型 ROWS Data 总共有 4 个文件组,所有 5 个文件都位于单独的驱动器中的 LOG 有一个文件组,该驱动器的总大小为 50GB。tempdb 初始大小为 14gb。所有数据文件的自动增长是 100MB,Maxsize 是无限的。

SQL查询如下:

SET nocount ON 

SELECT * 
INTO isheetnewdata1_4_27 
FROM 
    (SELECT 
         historyid, 
         requestentityid, 
         fieldname, 
         fieldvalue, 
         siteid, 
         isheetid 
     FROM   
         synk_isheet_1_int  
     WHERE  
         historyid = 6 
         AND group1id = 27 
         AND group2id = 4) AS A 
PIVOT …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server pivot

6
推荐指数
1
解决办法
971
查看次数

标签 统计

pivot ×1

sql ×1

sql-server ×1

t-sql ×1