• tempdb的数据文件越大,在内存中所占缓存就越多


    tempdb这个系统数据库大家都很熟悉,很多新手对tempdb都是不去操作,而使用它的默认配置。

    这其实并没有错,但是在追求性能之上的情况下,可以考虑对tempdb的配置进行修改。

    服务器配置:

    系统:win2008

    数据库:sqlserver2008 R2 

    CPU:24核,

    内存:224GB,其中168GB给数据库使用,

    硬盘:4块15000转机械硬盘组成raid5阵列。

    服务器使用情况:

    IO平均队列在5以下,高峰值在50左右,但不会持续2分钟以上,

    CPU平均占用率在15%以下,高峰不超过50%,持续时间不过程30秒,

    缓存页面生存周期按天算。

    以下是本人执行的一个脚本,

    在这里我们可以清晰的发现,tempdb所占的缓存为33695MB。

    实际上,大多数服务器上,tempdb所占的空间不会超过2GB。这是什么问题造成的?

    由于没有保存原有的tempdb的默认配置下,

    当时tempdb只有一个主文件,有160GB左右,占用100多GB内存。

    不过大家可以看我以前发布的一个帖子,这个帖子是我第一次遇到tempdb异常时,做的处理。

    地址是:http://bbs.csdn.net/topics/390808985

    后来在黄sir的提醒下,以及我查阅了很多资料,对tempdb进行了处理。

    tempdb有6个数据文件,一个日志文件,每个数据文件大小为10GB,日志文件为5GB。

    然后tempdb占用的缓存一直保持在20GB左右,最近由于tempdb的文件再次增长,文件大小如下:

    于是乎,tempdb在内存中占用的大小就增加了10GB。

    网上大多数对tempdb的设置都是按CPU核数来设置tempdb的文件个数,

    我这里采用的是24核CPU/6个数据文件,按4:1的比例来设计的。

    从上面的分析,我得出来的结论是:

    1、tempdb单个文件越大,如果内存富余,在内存中占用的缓存就越大(也有可能是不准确的,因为这仅仅是我接触一个场景)

    2、tempdb单个文件越大,如果内存刚好或已经出现瓶颈,那么内存中的交换就越频繁,这会间接造成IO队列上升。

    这是本人遇到的一个场景,然后根据场景所得出的结论,因为没有尝试验证其它的场景,所以得出的观念可能很片面,

    但我希望能帮助到大家。

    如果有别的看法,欢迎大家交流。

  • 相关阅读:
    TableCellRenderer和TableCellEditor(一)
    python 哔哩哔哩学习
    Pwn_11 Got 劫持
    Pwn_10 Format String Attack
    Pwn_9 作业讲解
    Pwn_8 ROP(3)——Stack Migration
    堆栈是个什么🐴
    pwntools 文档学习
    Pwn_7 ROP (2)
    socket.error: [Errno 98] Address already in use
  • 原文地址:https://www.cnblogs.com/FreeFire/p/4369686.html
Copyright © 2020-2023  润新知