Tim*_*Tim 7 sql-server sql-server-2008
任何有使用 SQL 2008 经验但都在 RAM 中的人?试图使某些事情更快,并且可能会继续这样做,谢谢
Dav*_*ett 10
这取决于您所说的“全部在 RAM 中”是什么意思。
如果您想从 RAM 驱动器运行您的数据库,您会发现这不太可能(除非您有某种 RAM 驱动器卡在操作系统看来就像一个普通磁盘,即提供 SATA 或 PATA 接口)因为 SQL Server 会拒绝。它假设它写入的任何数据都足够重要以保留并且不会通过将其写入易失性存储介质而冒险。您可以通过在 VM 中运行它并从 RAM 驱动器运行该 VM 来欺骗它,但出于相同的原因,我不建议同时尝试这两种方法(如果发生断电或重启情况,您将丢失所有数据)并且由于虚拟化解决方案会出现一系列其他性能问题需要担心。
如果您的问题是缓慢的读取活动(即导致从磁盘读取的大量操作,那么只需将机器中的 RAM 量增加到大于通常的工作集或更好地大于整个数据库。这样,除非您的 SQL Server 版本强加了人为的 RAM 限制(IIRC Express Edition 不会使用超过 1Gb),否则它将使用大量内存将读取的任何内容缓存在 RAM 中,以便下次可以快速读取如果您希望在清除数据后的任何时间(即由于安装更新而重新启动后)将数据预加载到 RAM 中,那么您可以编写一个脚本来强制扫描所有索引和数据页并将其读入内存.
如果问题是由多次写入操作引起的,那么优化磁盘布局可能会有所帮助。在不了解您的数据库的更多信息的情况下,我们无法给出具体的提示,但标准的经验法则(例如尝试将您的数据文件、事务日志和 tempdb 保存在单独的物理驱动器上)可能会有所帮助。
默认情况下,SQL Server 将使用服务器中的所有可用 RAM。最佳做法是配置 SQL Server 的可用 RAM 比服务器实际拥有的 RAM 少 2-4 G(取决于安装的其他内容、您使用的 SQL CLR 数量等)。SQL Server 将使用服务器中的内存作为缓冲区缓存,以便尽可能少地从磁盘读取数据。SQL Server 可用的 RAM 越多,SQL Server 可以加载到内存中的数据就越多。在完美的工作中,SQL Server 几乎从不从磁盘读取(除了在启动时,因为数据必须在某些时候从磁盘读取),因此唯一需要的磁盘 IO 是写 IO。
在 RAM 磁盘上运行 SQL Server 就像将机器的页面文件配置在 RAM 中一样:它会打破系统的预期。
SQL Server 实际上很像一个操作系统,它有自己的进程、线程版本,有自己的内存管理器和其他东西。那么如果我们在 RAM 磁盘上运行 SQL Server 会发生什么?
第一个是最重要的。在发生故障时,RAM 磁盘上的 SQL Server 将不再具有事务一致性。其他任何事情对您来说都不重要,但我可以肯定地说,在 RAM 磁盘上运行 SQL Server 的数据库或日志文件没有任何技术上的好处可能会超过风险。
| 归档时间: |
|
| 查看次数: |
3271 次 |
| 最近记录: |