/ 云数据库 rds/ / / 创建tempdb临时数据文件
更新时间:2024-12-25 gmt 08:00

创建tempdb临时数据文件-九游平台

操作场景

tempdb是系统数据库,是一个全局资源,可供连接到sql server实例或sql数据库的所有用户使用 。它是一个临时数据库,无法永久保存数据,作用是给实例中的各种请求处理中间数据,分为主数据文件(.mdf)、次要数据文件(.ndf)和日志文件(.ldf)。当服务重启的时候,tempdb会被重新创建。

tempdb数据库如果在设计上存在缺陷,会存在性能上的问题。尤其是tempdb数据库在一些高并发的场景,如果应用频繁地创建和销毁临时表,会导致实例卡顿从而影响业务。

微软官方建议将临时数据库的文件拆分成多个,一般与逻辑cpu个数相同,超过8个则使用8个数据文件,解决闩锁争用问题每次额外加4个文件。

更多介绍请参见。

使用限制

  • 云数据库 rds for sql server的2008、2012、2014实例默认是1个临时数据文件,2016实例默认4个临时数据文件,2017实例默认8个临时数据文件。
  • 云数据库 rds for sql server所有版本只有一个日志文件。

应用场景

您需要根据实例实际规格和具体场景确定tempdb文件的创建个数。下面将以32u的sql server 2014ee实例为例创建8个临时数据文件。

前提条件

  • 访问,获取sql server management studio的安装包。双击安装包,按照向导完成安装。
  • 在关系型数据库服务创建一个32u的sql server 2014ee实例,请参见创建sql server实例

操作步骤

  1. 启动sql server management studio客户端。
  2. 选择“连接 > 数据库引擎”,在“连接到服务器”弹出框中填选登录信息。
    图1 连接到服务器
    表1 参数说明

    参数

    说明

    服务器名称

    目标实例的主机ip和数据库端口(ip和数据库端口之间请使用英文半角逗号)。例如:x.x.x.x,8080
    • 主机ip为已绑定的弹性公网ip地址。
    • 端口为“连接管理”页签中的“数据库端口”

    身份验证

    认证方式,选择“sql server身份验证”。

    登录名

    待访问的数据库账号,默认管理员账号为rdsuser。

    密码

    待访问的数据库账号对应的密码。

  3. 查看当前tempdb信息。
    • 选择“数据库 > 系统数据库 > 临时数据库”,右键单击“属性”,在弹出框中选择“文件”,查看当前tempdb信息。
      图2 查看当前tempdb信息
    • 通过sql语句查询。

      select name as filename,

      size*1.0/128 as filesizeinmb,

      case max_size

      when 0 then 'autogrowth is off.'

      when -1 then 'autogrowth is on.'

      else 'log file grows to a maximum size of 2 tb.'

      end,

      growth as 'growthvalue',

      'growthincrement' =

      case

      when growth = 0 then 'size is fixed.'

      when growth > 0 and is_percent_growth = 0

      then 'growth value is in 8-kb pages.'

      else 'growth value is a percentage.'

      end

      from tempdb.sys.database_files;

      go

  4. 使用如下语句查看当前实例的tempdb的逻辑文件名称。

    select name, physical_name

    from sys.master_files

    where database_id = db_id('tempdb');

    图3 查看tempdb
  5. 3的“文件”页签下查看tempdb在磁盘上的当前位置。
    图4 查看当前位置
  6. 使用如下语句将tempdb文件迁移到d盘rdsdbdata文件夹的data目录下,根据实际需要指定初始大小和增长速度。

    use master;

    go

    alter database [tempdb] modify file (name = tempdev, filename = 'd:\rdsdbdata\data\tempdb.mdf', size = 8mb, filegrowth = 64mb);

    go

    alter database [tempdb] modify file (name = templog, filename = 'd:\rdsdbdata\data\templog.ldf', size = 8mb, filegrowth = 64mb);

    go

    图5 迁移文件
  7. “实例管理”页面,选择指定的主实例,单击更多 > 重启实例

    您也可以在“实例管理”页面,单击目标实例名称,在页面右上角,单击“重启实例”

  8. 使用如下sql语句查询文件是否迁移成功。

    select name, physical_name

    from sys.master_files

    where database_id = db_id('tempdb');

    图6 查看tempdb
  9. 根据实际需要配置文件名、初始大小、增长速度等信息,通过如下sql语句或界面增加tempdb的文件数。
    • 通过如下sql语句增加tempdb的文件数。

      -- 根据cpu的数量增加tempdb文件数、初始大小和增长速度分别为8mb和64mb

      use [master]

      go

      alter database [tempdb] add file ( name = n'temp2', filename = n'd:\rdsdbdata\data\tempdb2.ndf', size = 8mb, filegrowth = 64mb)

      go

      alter database [tempdb] add file ( name = n'temp3', filename = n'd:\rdsdbdata\data\tempdb3.ndf', size = 8mb, filegrowth = 64mb)

      go

      alter database [tempdb] add file ( name = n'temp4', filename = n'd:\rdsdbdata\data\tempdb4.ndf', size = 8mb, filegrowth = 64mb)

      go

      alter database [tempdb] add file ( name = n'temp5', filename = n'd:\rdsdbdata\data\tempdb5.ndf', size = 8mb, filegrowth = 64mb)

      go

      alter database [tempdb] add file ( name = n'temp6', filename = n'd:\rdsdbdata\data\tempdb6.ndf', size = 8mb, filegrowth = 64mb)

      go

      alter database [tempdb] add file ( name = n'temp7', filename = n'd:\rdsdbdata\data\tempdb7.ndf', size = 8mb, filegrowth = 64mb)

      go

      alter database [tempdb] add file ( name = n'temp8', filename = n'd:\rdsdbdata\data\tempdb8.ndf', size = 8mb, filegrowth = 64mb)

      go

    • 3的“文件”页签,单击“添加”,增加tempdb的文件数。
      图7 添加tempdb文件
  10. 配置完成后,请参考7再次重启实例。
  11. 重复8,验证文件是否增加成功。
    图8 查看tempdb信息

相关文档

网站地图