我将在我的开发/测试机器上安装一个新的 SQL Server 2008 实例。我的机器有一个 7200rpm 500GB SATA 磁盘(C:OS)和一个 Intel X25-G2 80GB SSD(D:)。机器详细配置如下:
CPU:i7 860
RAM:8GB
微软说我可以选择将以下目录放在不同的磁盘中。所以我计划将用户数据库和临时数据库放在 SSD 上,其余的放在传统磁盘上。这是在快速 SSD 中获得性能提升的好选择吗?
数据根目录:C:\Program Files\Microsoft SQL Server
用户数据库目录 D:\Data
用户日志目录 C:\Logs
临时数据库目录 D:\TempDB
临时日志目录 C:\TempDB
备份目录 C:\Backups
答案1
所以这是你的个人机器而不是服务器?我会把所有数据库文件都放在 SSD 上。
实际上,SQL 很少将更改写入数据文件。更改会立即写入事务日志,然后在将来某个时间点(当 IO 子系统不忙时)通过惰性写入器写入数据文件。因此,它通常不会尝试同时写入事务日志和数据文件。这是设计使然。
TempDB 位于 RAM 中,不是吗?有一个物理备份文件,但我的理解是,SQL 基本上会先将其缓存在 RAM 中,然后再缓存其他文件。
通过将事务日志放在单独的磁盘上可以获得性能的典型情况是当您拥有相当均匀的写入/读取组合时和没有足够的 RAM 供 SQL Server 处理来自 RAM 中缓存的页面的读取,因此它不得不从磁盘读取这些页面。如果数据文件和事务日志都位于同一个物理磁盘上,就会出现磁盘争用。
不过,我觉得很难相信你会在单用户工作站上遇到这种情况。唯一的例外可能是,如果你的数据库太大,无法放入工作站的 RAM 中,并且你正在执行某种大型、复杂的数据导入,除了写入之外,还涉及大量读取。
不过,这些英特尔固态硬盘对于数据库工作来说非常棒。这是个不错的购买决定。
答案2
我刚刚发现http://technet.microsoft.com/en-us/edge/Video/hh771099 有点长,但请花点时间看完视频。有关 SQL 服务器和 SSD 磁盘使用情况的非常重要的信息。
答案3
如果有空间,请将所有 DB 文件放在 SSD 驱动器上,如之前建议的那样。
需要澄清的一点是:为了澄清一个都市传说,tempDB 通常位于磁盘上,而不是内存中。您可以强制它从内存中运行,但通常最好不要这样做。 http://support.microsoft.com/kb/115050
答案4
意识到 SSD 会随着磨损而变慢,我们有一个配备 1TB SSD 存储的生产 SQL 服务器,6 个月后 SSD 被移除并恢复为 SAS 15k 驱动器,HDD 的性能明显优于 SSD使用后- 当它们是全新的时候,根本无法比较 - SSD 在所有基准测试中都远远超过了 HDD 的性能,但 6 个月后它们就变慢了。我还没有时间写更多细节,但我会尝试在有空的时候分享几个基准测试。