把TEMPDB放到内存里

guguda2008 2010-12-13 01:49:56
加精
博客地址
http://blog.csdn.net/guguda2008/archive/2010/12/13/6073049.aspx
------------------------------------烤鸭专用分割线-----------------------------------------------
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
*/
...全文
1640 点赞 收藏 114
写回复
114 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zgn31 2010-12-27
正好用得着,顶个
回复
glmstucn 2010-12-24
有条件测试一下!
回复
yibey 2010-12-21
学习,但是目前对我来说还没啥用处
回复
coleling 2010-12-21
[Quote=引用 17 楼 xman_78tom 的回复:]

与其把内存交给 tempdb,不如把内存交给数据库实例自动管理。现在,64 位的数据库系统完全可以充分利用大容量内存。

况且,在生产型的数据库上,所需的 tempdb 数据库的容量不是内存可以满足的。引入 tempdb 数据库的目的之一就是临时存储那些在内存中存储不下的中间数据。
[/Quote]

up, 正解
回复
bobo628 2010-12-19
强大 啊
回复
chengyiszl 2010-12-19
好好学习一下吧!
回复
tt335799 2010-12-18
不是蛮懂
回复
呼特李一号 2010-12-18
压力好大!
回复
wwwzsim 2010-12-18
高手啊!学习了1
回复
haitao 2010-12-17
[Quote=引用 93 楼 sz_haitao 的回复:]
这么牛X?!
还能找回os无法识别的内存。。。。。。。。
不知道主板无法识别的内存能否找回(一个联想pc,插了4G内存bios也只能认出3G,装了win2003企业版也只有3G)[/Quote]

也是不能。。。。。。。

另外,发现一个不如RamDiskGavotte的地方:VSuite Ramdisk无法修改已经建立的ramdisk的大小!
回复
mf3665293 2010-12-17
我在(❤墙)丶刻下你的名。
回复
michael__xia 2010-12-17
谢谢 分享!
回复
兔子党-督察 2010-12-16
[Quote=引用 91 楼 crayon_fayd 的回复:]

牛人,谢谢分享
[/Quote]
~
回复
crayon_fayd 2010-12-16
牛人,谢谢分享
回复
ithlcasu 2010-12-16
高手就是高手
回复
lulubooboo 2010-12-16
强大
回复
haitao 2010-12-16
[Quote=引用 89 楼 winner2050 的回复:]
VSuite Ramdisk 是威力最大的Ramdisk 软件,可惜楼主用的是免费版,没有动态内存分配功能。

我自己电脑用的是破解版,我的电脑是8G内存如果用普通的ramdisk软件分几G出来真不舍得,如果遇到需要使用虚拟机就很紧张了。

用了VSuite Ramdisk 动态分配内存,就分2G过去,它是用多少实际分配多少。

不影响虚拟机大量使用内存。
[/Quote]

这么牛X?!
还能找回os无法识别的内存。。。。。。。。
不知道主板无法识别的内存能否找回(一个联想pc,插了4G内存bios也只能认出3G,装了win2003企业版也只有3G)
回复
maimang1001 2010-12-15
………………………………………………
回复
winner2050 2010-12-15
VSuite Ramdisk 是威力最大的Ramdisk 软件,可惜楼主用的是免费版,没有动态内存分配功能。

我自己电脑用的是破解版,我的电脑是8G内存如果用普通的ramdisk软件分几G出来真不舍得,如果遇到需要使用虚拟机就很紧张了。

用了VSuite Ramdisk 动态分配内存,就分2G过去,它是用多少实际分配多少。

不影响虚拟机大量使用内存。
回复
guguda2008 2010-12-15
[Quote=引用 83 楼 sysuleiw 的回复:]

请教楼主,一个数据库可以有多个mdf文件的么?
我只知道可以建立文件组,但是文件组是1个mdf和多个ndf哦。。。
[/Quote]
文件的后缀名是可以改的
回复
发帖
应用实例
创建于2007-09-28

2.7w+

社区成员

MS-SQL Server 应用实例
申请成为版主
帖子事件
创建了帖子
2010-12-13 01:49
社区公告
暂无公告