我正在使用本地SQL Server实例作为其数据源的SQL Server Analysis Services中构build一个多维数据集。 数据源中的大部分数据是一个大的事实表(〜200GB),对于本地硬盘来说太大了,所以我将该数据库的.mdf和.ldf文件移动到了外部USB硬盘上。 我想将这些文件保存在外部硬盘驱动器上,但将处理后的多维数据集存储在本地硬盘驱动器上。 我的希望是,虽然它会使多维数据集处理变慢,但在客户端连接时,多维数据集查询仍然很快
而当我可以处理立方体,这工作:多维数据集查询仍然是快速的,因为多维数据集查询不打慢速的外部USB硬盘驱动器。 我遇到的问题是,当我去处理多维数据集,我得到像这样的错误:
“OLE DB错误:OLE DB或ODBC错误:在等待页(1:1785)的缓冲锁存types2时发生超时,数据库ID 5; 42000
去事件日志,我看到这样的错误:
在数据库[X](5)的文件[U:\ sqldata \ X.mdf]中,SQL Server遇到29351次I / O请求发生超过15秒的时间。 OS文件句柄是0x0000000000000164。 最新的长I / O的偏移量是:0x00002f4b664000
这似乎正在发生,因为USB硬盘缓慢。 我不介意处理花费很长时间所需的查询,但似乎SQL Server对I / O请求有严格的限制。 有没有解决的办法?
您可以使用跟踪标志830closures此行为,更多信息请查阅msdn上的这篇文章
dbcc traceon(830, -1)
或者如果要永久打开,请将其作为启动参数:添加/ T830作为服务启动参数。
看到你有这么便宜的磁盘和你正在运行的SQL Server 2008,看看打开整个数据库的页面压缩,你将有一个小的CPU开销,但我想说在你的情况亲是超过缺点。
你也可以检查磁盘碎片? 这可能会加快一点。
(显然,实际上磁盘碎片整理,而不是只是检查它,会加快速度….)
由于您运行的是SQL Server 2008,所以我build议您在Datawarehouse表上使用数据压缩(如果确实使用的是DW,我从您的措辞中假定)。 有可能使用这种技术将您的事实表放置在更高速度的驱动器上。
确保您已经从任何防病毒检查中排除了数据库文件,这可能会导致大文件的性能下降。