把TEMPDB放到内存里

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

07-20
### TempDB 使用、性能与配置概述 在 SQL Server 环境中,`tempdb` 是一个特殊的系统数据库,用于存储临时对象和中间结果。它在每次 SQL Server 实例启动时都会被重新创建,这意味着任何在 `tempdb` 中存在的对象在实例重启后都会丢失[^4]。`tempdb` 的性能和空间使用是 SQL Server 性能调优中的关键领域之一,因为它在整个 SQL Server 环境中是最活跃的数据库和公共资源[^2]。 #### TempDB 的使用场景 - **临时表和表变量**:用户可以在 `tempdb` 中创建本地或全局临时表,以及表变量,这些对象用于存储短期数据。 - **内部对象**:SQL Server 使用 `tempdb` 存储某些内部操作的中间结果,如排序、哈希操作等。 - **版本存储**:`tempdb` 还包含版本存储区,用于支持行版本控制,这在实现快照隔离级别和在线索引重建等操作中非常重要[^2]。 #### TempDB 的性能优化 为了实现 `tempdb` 的最佳性能,可以遵循以下优化建议: - **多数据文件配置**:将 `tempdb` 配置为多个数据文件,可以提高并发性能。通常建议将数据文件数量设置为 CPU 核心数的 1/4 到 1/2,以减少争用。 - **预分配空间**:避免 `tempdb` 自动增长操作,因为这些操作可能会导致性能瓶颈。可以通过预分配足够的空间来减少自动增长的频率。 - **快速恢复模式**:`tempdb` 默认使用简单恢复模式,并且不支持完整恢复模式。此外,`tempdb` 的事务日志不会被持久化,因此可以将其配置为快速恢复模式。 - **监控和调优**:定期监控 `tempdb` 的空间使用情况和性能指标,确保其能够满足当前的工作负载需求。可以参考文章《如何监控 SQL Server TempDB 数据库》来获取更多详细信息[^3]。 #### TempDB 的配置建议 - **初始大小和自动增长设置**:合理设置 `tempdb` 数据文件和日志文件的初始大小,并根据实际需求调整自动增长参数,以避免频繁的自动增长操作。 - **文件位置**:将 `tempdb` 的数据文件和日志文件放置在高性能的存储设备上,以提高 I/O 性能。 - **文件组管理**:如果 `tempdb` 配置了多个数据文件,建议将它们分配到不同的物理磁盘上,以分散 I/O 负载。 ### 示例:查看 `tempdb` 的空间使用情况 以下是一个简单的 T-SQL 查询,用于查看 `tempdb` 中的空间使用情况: ```sql USE tempdb; GO SELECT (total_pages * 8) / 1024 AS TotalSpaceMB, ((total_pages - used_pages) * 8) / 1024 AS FreeSpaceMB, (used_pages * 8) / 1024 AS UsedSpaceMB FROM sys.allocation_units; ``` 此查询返回 `tempdb` 的总空间、已用空间和剩余空间(以 MB 为单位),帮助管理员评估当前的空间使用情况。 ###
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值