TEMPDB是MSSQL重要的系统数据库(废话,所有系统数据库都很重要),数据库日常所有计算几乎都依赖于对于TEMPDB库的读写。很多优化策略上也都有这么一句:“把TEMPDB库放到读写速度最快的硬盘上”。但我昨晚睡不着觉的时候突然想起来似乎没有硬盘会比内存更快的,于是今天就找大叔问了一嘴,在得到肯定的回复后实践了一下,成功后重启了服务器和机器,数据库还是正常的。性能方面我的机器上没法测,但估计肯定是有好处的。下面就说一下具体步骤:
1.下载内存虚拟硬盘工具
我用的是VSuite Ramdisk,可以把未识别的内存划成硬盘分区 ,如果有别的替代工具也可以,总之就是找个工具把内存映射成硬盘,以存放TEMPDB的数据和日志文件。
提供一个下载地址:华军下载
2.把内存分区
可以先开启未识别的内存
下图是我的设置
3.把TEMPDB放到刚分出的Z盘根目录下
这个必须要用语句,因为TEMPDB的文件和日志名字是固定的,所以直接用我写的语句改改盘符和目标文件名就行:
ALTER DATABASE TEMPDB MODIFY FILE(NAME=TEMPDEV,FILENAME='Z:/TEMPDEV.MDF')
ALTER DATABASE TEMPDB MODIFY FILE(NAME=TEMPLOG,FILENAME='Z:/TEMPLOG.LDF')
建议再加两个文件到物理硬盘,防止TEMPDB爆掉
ALTER DATABASE TEMPDB ADD FILE(NAME=TEMPDEV2,FILENAME='D:/DATABASES/TEMPDEV2.MDF')
ALTER DATABASE TEMPDB ADD LOG FILE(NAME=TEMPLOG2,FILENAME='D:/DATABASES/TEMPLOG.LDF')
4.重启数据库,查询是否成功修改
SELECT NAME,TYPE_DESC,PHYSICAL_NAME FROM SYS.DATABASE_FILES
/*
tempdev ROWS Z:/TEMPDEV.MDF
templog LOG Z:/TEMPLOG.LDF
TEMPDEV2 ROWS D:/DATABASES/TEMPDEV2.MDF
TEMPLOG2 LOG D:/DATABASES/TEMPLOG2.LDF
*/