深刻的教訓——SQL Server關於TempDB的使用
場景現象
中午查詢了流水,因未與業務人員溝通好,忘了刪選條件,導致TempDB不能分配空間,SQL Server高負載執行。
錯誤分析
我們來看看錯誤日誌:
再來看看TempDB自增長記錄:
事件 | 邏輯檔名 | 啟動時間 | 持續時間(毫秒) | 大小變化(MB) |
資料檔案自動增長 | tempdev_1 | 2014/4/17 13:01:51 | 23 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 13:01:27 | 30 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 13:01:03 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 13:00:42 | 40 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 13:00:18 | 20 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:59:55 | 6 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:59:32 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:59:09 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:58:47 | 33 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:58:24 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:58:00 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:57:36 | 30 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:57:12 | 26 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:56:48 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:56:24 | 13 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:56:01 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:55:36 | 6 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:55:12 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:54:49 | 30 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:54:24 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:53:59 | 6 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:53:37 | 6 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:53:14 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:52:53 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:52:30 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:52:05 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:51:43 | 13 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:51:21 | 6 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:50:59 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:50:36 | 6 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:50:13 | 13 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:49:50 | 6 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:49:26 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:49:04 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:48:42 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:48:19 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:47:56 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:47:33 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:47:11 | 6 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:46:49 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:46:26 | 6 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:46:02 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:45:40 | 60 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:45:16 | 6 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:44:54 | 16 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:44:32 | 13 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:44:09 | 13 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:43:47 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:43:25 | 6 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:43:03 | 6 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:42:41 | 3 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:42:20 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:41:56 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:41:35 | 6 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:41:11 | 6 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:40:50 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:40:29 | 40 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:40:09 | 30 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:39:45 | 23 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:39:23 | 26 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:39:02 | 6 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:38:39 | 6 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:38:17 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:37:54 | 13 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:37:32 | 16 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:37:10 | 6 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:36:49 | 6 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:36:27 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:36:05 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:35:44 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:35:22 | 10 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:34:59 | 43 | 1,024.00 |
資料檔案自動增長 | tempdev_1 | 2014/4/17 12:34:37 | 50 | 1,024.00 |
資料檔案自動增長 | tempdev_2 | 2014/4/17 12:34:08 | 23 | 1,024.00 |
資料檔案自動增長 | tempdev_0 | 2014/4/17 12:33:35 | 20 | 1,024.00 |
導致原因
查詢語句未指定刪選條件,語句如下:
--得到流水,因資料敏感問題,已將欄位使用’xx’代替。
IF EXISTS (SELECT *
FROM tempdb..sysobjects
WHERE id = Object_id(N'tempdb..#t_scfw')
AND type = 'U')
DROP TABLE #t_scfw;
IF NOT EXISTS (SELECT *
FROM tempdb..sysobjects
WHERE id = Object_id(N'tempdb..#t_scfw')
AND type = 'U')
SELECT tsvr.*,
bsl.xx AS xxx,
bsl.xx,
bsl.xx
INTO #t_scfw
FROM #t1 AS tsvr
JOIN t2 AS bsl
ON tsvr.xx = bsl.xx
AND tsvr.xx = bsl.xx
AND tsvr.xx = bsl.xx
AND tsvr.xx = bsl.xx
AND bsl.xx > 0;
總結
由於tempdb是儲存在SSD上,且總大小為270G。所以,在顯式使用臨時表時一定要注意資料大小。避免把tempdb空間耗盡,影響整個SQLServer的正常執行。好在設定了tempdb的最大空間,並且最大空間小於SSD硬碟的最大容量,不然伺服器的盤就會掛掉,從而導致伺服器當機,多麼痛的領悟!切忌犯如此低階錯誤,作下此文提醒和鞭策自己,凡事三思而後行!
Good Luck!
相關文章
- 如何在SQL Server中最佳化TempdbSQLServer
- Heap使用Postgres SQL後的經驗教訓SQL
- 關於SQL Server 映象資料庫快照的建立及使用SQLServer資料庫
- 關於SQL Server索引的最左匹配原則SQLServer索引
- Sql Server關於indexed view索引檢視的總結SQLServerIndexView索引
- 關於SQL Server中索引使用及維護簡介(zt)SQLServer索引
- 關於程式碼的那些低階錯誤,都是血淚的教訓
- 關於SQL Server配置管理器SQLServer
- 給DBA的SQL Server培訓建議PHSQLServer
- 關於SQL Server資料庫中的使用者許可權和角色管理SQLServer資料庫
- SQL Server關於AlwaysOn的理解-讀寫分離的誤區(一)SQLServer
- 關於SQLServer的tempdb的資料檔案暴增問題(1)SQLServer
- sql server對於日期的處理SQLServer
- sql server 使用SQLServer
- Sql Server關於許可權、角色以及登入名、使用者名稱的總結SQLServer
- SQL Server 表的管理_關於事務操作的詳解(案例程式碼)SQLServer
- Sql Server關於create index include帶有包含列的索引的最全解釋SQLServerIndex索引
- [譯] Data Binding 庫使用的經驗教訓
- 關於SQL server2008除錯儲存過程的完整步驟SQLServer除錯儲存過程
- SQL Server 的xp_cmdshell和bcp使用SQLServer
- SQL Server日期資料型別DATE的使用SQLServer資料型別
- 關於runat = “server”Server
- 關於SQL Server中儲存過程在C#中呼叫的簡單示例SQLServer儲存過程C#
- 關於“新手教學”的新手教程(三):教學節奏設計
- 關於“新手教學”的新手教程(一):極少化教學文字
- SQL Server 的死鎖SQLServer
- mysql關於mysql.server的總結MySqlServer
- 關於IDEA使用xml實現動態sql的問題IdeaXMLSQL
- SQL Server 表的管理_關於資料增刪查改的操作的詳解(案例程式碼)SQLServer
- SQL Server中的SELECT會阻塞SELECT相關資料SQLServer
- SQL Server有關鎖升級的誤區說明SQLServer
- 關於SQL優化的闢謠SQL優化
- SQL Server 2008中Analysis Services的新特性——深入SQL Server 2008SQLServer
- 使用zabbix監控sql server的釋出訂閱SQLServer
- 血的教訓!千萬別在生產使用這些 redis 指令Redis
- 4.3.2 關於使用SQL語句建立CDBSQL
- 關於虛擬模擬教學系統使用WebGL部署的痛點分析Web
- SQL Server 2014的重建索引SQLServer索引
- sql-server不相關子查詢SQLServer