我可以在内存中放入整个数据库吗?

9 sql-server sql-server-2005

我的数据库大小约为 1gb(根据我的数据库的 mdf 文件)。我的数据库服务器有 4GB 的内存。查看活动时计算机上的内存消耗,它的使用率约为 85%(包括操作系统等)

这是否意味着所有数据库读取活动都单独在内存中工作(即整个数据库都在内存中)?还是仍然存在必须转到磁盘的情况?

Rem*_*anu 5

是的,整个数据库很可能存储在内存中。它将以检查点间隔将脏页刷新到磁盘。但请注意,所有更新都必须写入日志,并在提交之前等待日志记录在持久存储上得到强化。这篇旧论文SQL Server 2000 I/O Basics包含您需要的所有详细信息,甚至更多。

但是你不必猜测,你可以准确地测量它,看看它是否发生。相关的性能计数器是:

  • 页面预期寿命页面在没有引用的情况下在缓冲池中停留的秒数。
  • 页面读取/秒每秒发出的物理数据库页面读取数。此统计信息显示所有数据库中的物理页读取总数。由于物理 I/O 很昂贵,您可以通过使用更大的数据缓存、智能索引和更高效的查询,或者通过更改数据库设计来最小化成本。
  • Page writes/sec 每秒发出的物理数据库页面写入数。


小智 -5

整个数据库(即数据)不会存储在内存(sql server)中。检查索引和/或键后,它将检索指向您要查找的数据在数据文件中的位置的指针,然后可能会转到光盘来检索它。如果没有键或索引,则必须扫描整个堆。

根据您运行的 SQL Server 版本,可能有一些策略可以缓存常用数据以最大程度地减少磁盘读取。

您可以获取内存中的数据库,例如 MySql Cluster 数据库......这旨在将整个数据库放入服务器集群的内存中,以实现高可用性/灾难恢复和快速数据检索。