TEMPDB是MSSQL重要的系统数据库(废话,所有系统数据库都很重要),数据库日常所有计算几乎都依赖于对于TEMPDB库的读写。很多优化策略上也都有这么一句:“把TEMPDB库放到读写速度最快的硬盘上”。但我昨晚睡不着觉的时候突然想起来似乎没有硬盘会比内存更快的,于是今天就找大叔问了一嘴,在得到肯定的回复后实践了一下,成功后重启了服务器和机器,数据库还是正常的。性能方面我的机器上没法测,但估计肯定是有好处的。下面就说一下具体步骤:


1.下载内存虚拟硬盘工具

我用的是VSuite Ramdisk,可以把未识别的内存划成硬盘分区 ,如果有别的替代工具也可以,总之就是找个工具把内存映射成硬盘,以存放TEMPDB的数据和日志文件。

提供一个下载地址:华军下载


2.把内存分区

可以先开启未识别的内存

利用虚拟磁盘工具把TEMPDB放到内存中_TEMPDB


下图是我的设置

利用虚拟磁盘工具把TEMPDB放到内存中_TEMPDB_02


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
*/


摘自:http://blog.csdn.net/guguda2008/article/details/6073049