zoukankan      html  css  js  c++  java
  • —教训深刻—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硬盘的最大容量,不然server的盘就会挂掉,从而导致server宕机,多么痛的领悟!

    切忌犯如此低级错误,作下此文提醒和鞭策自己,凡事三思而后行

     

    Good Luck!


    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    tomcat 设置session过期时间(四种方式)
    Delphi7程序调用C#写的DLL解决办法
    delphi 获取大于2G的物理内存大小
    delphi 判断目录是否可写
    DLL编写与调用全解
    API Hook基本原理和实现
    dotnet tools 运行 dotnet run
    .NET Core & ASP.NET Core 1.0
    WebApp模版并运行
    配置系统引导启动SuperScoekt
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4631275.html
Copyright © 2011-2022 走看看