任何人都有使用SQL 2008的经验,但都在RAM中? 试图使某些事情更快,并可能追求这一点,谢谢
这取决于你所说的“RAM中的全部”。
如果你想从RAM驱动器运行你的数据库,你会发现这是不太可能的(除非你有一些类似普通磁盘的RAM驱动器卡,例如提供SATA或PATA接口)因为SQL Server会拒绝。 它假定它写入的任何数据都足够重要,可以通过将其写入易失性存储介质来保证并不会冒险。 你也许可以通过在虚拟机中运行虚拟机并从RAM驱动器运行该虚拟机来欺骗虚拟机,但是我不build议这样做,因为同样的原因(如果发生断电或重新启动的情况,则会丢失所有的数据)而且由于虚拟化解决scheme中的其他性能点击将会有一系列的担忧。
如果你的问题是读取活动缓慢(也就是很多操作会导致从磁盘读取数据,那么只需增加机器的RAM数量,使其大于通常的工作集合,或者比整个数据库还要好,除非你有一个版本的SQL Server强制仿真RAM限制(IIRC Express版本不会超过1Gb),它将使用大量的内存来保持它读取的内容caching在RAM中,下次它可以快速读取如果你希望在数据被清除后(例如在安装更新后重新启动后)将数据预加载到RAM中,那么你可以编写一个脚本,强制所有的索引和数据页面被扫描,然后读入内存。
如果问题是由于许多写入操作造成的,那么优化磁盘布局可能会有所帮助。 不知道更多关于你的数据库,我们不能给出具体的提示,但标准的经验法则(如尝试保持在不同的物理驱动器上的数据文件,事务日志和tempdb)可能会有所帮助。
默认情况下,SQL Server将使用服务器中所有可用的RAM。 最佳做法是将SQL Serverconfiguration为比服务器实际拥有的RAMless2-4 Gig(取决于安装的内容,使用的SQL CLR数量等)。 SQL Server将使用服务器中的内存作为缓冲区高速caching,以便尽可能less地从磁盘读取数据。 SQL Server可用的RAM越多,SQL Server可以加载到内存中的数据就越多。 在一个完美的工作中,SQL Server几乎从不从磁盘读取数据(除非启动,因为数据必须从磁盘读取),这样唯一需要的磁盘IO就是写入IO。
在RAM磁盘上运行SQL Server就像将机器的页面文件configuration在RAM中一样:这会打破系统的期望。
SQL Server实际上很像一个操作系统,它有自己的进程版本,线程,拥有自己的内存pipe理器等等。 那么,如果我们在RAM磁盘上运行SQL Server,会发生什么?
首先是最重要的。 RAM磁盘上的SQL Server在发生故障时将不再具有事务一致性。 没有别的东西对你很重要,但我可以肯定地说,在RAM磁盘上运行SQL Server的数据库或日志文件可能会超过风险没有技术上的好处。