tempdb数据库设置问题
广告:
清除日志:
backup log tempdb with no_log --清除事务日志
go
backup log 当前数据data with no_log --清除事务日志
go
use tempdb
go
dbcc shrinkfile (tempdev, 10240) --调整tempdb的主数据文件大小为10240 MB, 可根据需要调整, 这个命令不是必须执行的。
go
dbcc shrinkfile (templog, 10240) --调整tempdb的事务日志文件大小为10240 MB, 可根据需要调整
go
--A. 将tempdb数据库的主数据文件大小设置为10MB。
ALTER DATABASE tempdb
MODIFY FILE(
name=tempdev,
size=100 MB)
GO
--B. 将tempdb数据库的主数据文件移动到指定的磁盘分区上,并且为其添加一个数据文件。
--移动主数据文件
ALTER DATABASE tempdb MODIFY FILE
( NAME='tempdev',
FILENAME ='d:tempdb.mdf')
ALTER DATABASE tempdb
MODIFY FILE(
NAME='tempdev',
FILEGROWTH=10%)
GO
ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N'tempdev', FILEGROWTH = 10% )
GO
ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N'templog', FILEGROWTH = 204800KB )
--添加次要数据文件
ALTER DATABASE tempdb ADD FILE
( NAME='tempdata_1',
FILENAME ='d:tempdb_data_1.ndf')
tempdb出问题时:
这个问题说明你的处理要求数据库立即分配 xx MB 的存储空间用于满足你的处理需求,但数据库在 xx 毫秒无法完成这个分配.
解决的办法:
1. 不要使用自动收缩, 自动收缩会定期收容数据文件的空闲空间,则处理需要的时候却要扩大数据文件,这两者相反的处理,是冲突的
设置方法:
ALTER DATABASE MyDataBase SET AUTO_SHRINK OFF
2. 如果你不进行事务日志备份, 也不需要利用事务日志做处理,则可以将数据库恢复模型设置为SIMPLE, 减少日志记录, 减轻磁盘I/O压力
ALTER DATABASE MyDataBase SET RECOVERY SIMPLE
3. 设置更小的文件增长步骤,以减少每次数据文件分配空间所需要的时间
ALTER DATABASE MyDataBase
MODIFY FILE(
NAME='MyDataBase_Date',
FILEGROWTH=50 MB) --不要使用百分比, 不然数据文件大了的话,这个百分比的结果就很大
4. 为数据文件预先分配足够大的空间,避免数据处理时分配空间
ALTER DATABASE MyDataBase
MODIFY FILE(
NAME='MyDataBase_Date',
SIZE=500 GB) -- 预设数据文件大小为500GB
5. 如果通过上述处理还无法解决问题,则应该考虑你的磁盘I/O性能不行,考虑提高硬件配置.
广告: