34-SQLServer中Tempdb数据库的优化
一、总结
1、为什么要优化Tempdb?
tempdb数据库中承载SQLServer实例下所有数据库的大量临时操作,比如排序、联合、行版本控制、在线重建或重组织索引、创建和使用临时表等等。所以tempdb的性能直接关系到数据库的整体性能
2、如何优化Tempdb?
* 创建多个tempdb文件,以避免在创建或删除临时表时产生资源争用;
* 将tempdb放在性能较好的磁盘上;
3、Tempdb数据文件个数的选择?
* tempdb数据文件的个数应该等于CPU物理核数的约数(不包括超线程);
* 不要超过16个;
* 设置的初始大小和自增长必须相同;
eg:32核的服务器可以创建8个或16个tempdb数据文件。
4、新增Tempdb数据文件后,需重启SQLServer服务才能生效。
5、操作改变tempdb数据库数据文件的存储路径时,最好使用administrator用户或具隶属于administrators组的用户启动数据库,不要使用Local System、Local Service、Network Service来启动数据库,因为可能会遇到数据库启动失败的问题。
二、修改tempdb数据库的存储路径
1、目的:将数据库文件放到性能较好的磁盘
2、操作步骤
(1)停止数据库服务
(2)把tempdb的文件复制到指定的目录
注:复制过去就行,因为即便你剪切过去,重启数据库服务,还会在原来的目录自动生成tempdb的文件,因为在数据库存储的信息没有变
(3)启动数据库服务
注:这个时候启动数据库后,查看tempdb的数据文件,还是原来的路径,所以需要执行下面的步骤
(4)执行下面的modify脚本
alter database tempdb modify file( name = tempdev,filename ='D:\sqldata\tempdb\tempdb.mdf');
alter database tempdb modify file( name = templog,filename ='D:\sqldata\tempdb\templog.ldf');
注:执行完上面的脚本,tempdb的路径就会变了,但是还是得重启一下数据库
(5)再次重启数据库
三、添加tempdb的数据库文件
1、添加数据文件
注:这里以增长至8个数据文件为例,初始大小都是200MB,自动增长量为200MB
2、重启数据库服务
四、删除tempdb的数据文件
1、先收缩数据文件
USE tempdb GO DBCC SHRINKFILE (tempdb1, EMPTYFILE); GO
2、删除数据文件
USE [tempdb] GO ALTER DATABASE [tempdb] REMOVE FILE [tempdb1] GO