深刻的教訓——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 tempdb 的各種操作SQLServer
- sql server 檢視tempdb使用的相關檢視SQLServer
- SQL Server中tempdb的管理SQLServer
- Moving the tempdb database(SQL server)DatabaseSQLServer
- SQL Server 2000 shrink tempdbSQLServer
- 關於Web 2.0 的SOA 經驗教訓Web
- Heap使用Postgres SQL後的經驗教訓SQL
- Monitoring Tempdb in SQL Server 2005SQLServer
- SQL Server中的TempDB管理——TempDB基本知識(為什麼需要版本儲存區)SQLServer
- SQL Server中TempDB管理(version store的邏輯結構)SQLServer
- 關於SQL Server的WITH(NOLOCK)和(NOLOCK)SQLServer
- 關於SQL Server的分割槽表SQLServer
- 如何在SQL Server中最佳化TempdbSQLServer
- 在SQL Server中,關於with as使用介紹SQLServer
- SQL Server中TempDB管理(版本儲存區的一個example)SQLServer
- 關於SQL Server 映象資料庫快照的建立及使用SQLServer資料庫
- 關於SQL SERVER觸發器的理解SQLServer觸發器
- DBCA 建庫執行報錯ora-12547 ----深刻的教訓
- SQL Server 2008效能故障排查(四)——TempDBSQLServer
- 關於DBMS_SQL的使用SQL
- SQL Server 2005中的tempdb資料庫的一些特點SQLServer資料庫
- 關於程式碼的那些低階錯誤,都是血淚的教訓
- 關於SQL Server索引的最左匹配原則SQLServer索引
- 認識SQL Server2000 tempdb資料庫SQLServer資料庫
- 在SQL Server tempdb滿時檢查資料檔案SQLServer
- 請教banq關於自學和NIIT軟體培訓的問題
- Sql Server關於indexed view索引檢視的總結SQLServerIndexView索引
- 關於SQL Server 2008的缺失索引功能SQLServer索引
- 關於SQL Server 中的25種資料型別SQLServer資料型別
- 關於SQL Server的記憶體佔用問題SQLServer記憶體
- SQL Server中,WITH AS的使用SQLServer
- 關於SQLServer的tempdb的資料檔案暴增問題(1)SQLServer
- 關於SQL Server中索引使用及維護簡介(zt)SQLServer索引
- sql server關於跟蹤日誌查詢使用說明SQLServer
- 關於SQL Server中的字元儲存的問題的測試SQLServer字元
- 關於SQL Server 2008是否是SQL Server 2005的一個Service PackSQLServer
- 給DBA的SQL Server培訓建議PHSQLServer
- 關於SQL Server資料查詢基本方法的總結SQLServer