数据库磁盘队列太高,可以做什么?

时间:2009-02-25 20:19:24

标签: sql performance sql-server-2000 ado

我遇到的问题是我正在使用的大型数据库驻留在一个驱动器上 - 这个数据库包含大约十几个表,其中两个主表每个大约1GB,不能缩小。我的问题是,即使使用数据库的网站空闲,数据库驱动器的磁盘队列也在96%到100%左右。可以进行哪些优化或者问题的根源是磁盘上的DB总共为16GB,几乎所有数据都是必需的 - 交易数据,客户信息和库存详情。
无论网站流量如何,磁盘队列总是高的原因是什么? 可以采取哪些措施来帮助提高这种规模的数据库的性能?

任何建议都将不胜感激!

该数据库是在Windows Server 2003上运行的MS SQL 2000数据库,其大小为16GB(磁盘大小的数据文件)。

由于

3 个答案:

答案 0 :(得分:1)

那么,你在机器上有多少内存?如果您无法将页面存储在内存中,SQL Server将不得不转到磁盘以获取其信息。如果您的内存不足,您可能需要考虑升级它。

由于数据库太大,您可能需要考虑添加两个单独的物理驱动器,然后将事务日志放在一个驱动器上,并将其他一些表分区到另一个驱动器上(您必须进行一些分析才能看到表格之间的最佳分割是。)

在这样做时,您允许IO访问并行发生,而不是串行发生,这可以为您的数据库提供更多性能。

答案 1 :(得分:1)

在购买更多磁盘并转移内容之前,您可能还会更新统计信息并检查您的查询 - 如果您正在进行大量的表扫描等等,那么您将为硬件创建不必要的工作。

你的数据库毕竟不是那么大 - 我首先考虑调整你的查询。您是否了解了哪种查询会影响数据库?

答案 2 :(得分:1)

如果您的站点空闲时磁盘活动很高,我会查找可能正在运行的其他可能影响它的进程。例如,您确定没有运行任何计划备份吗?特别是对于大型数据库,这些可能会运行很长时间。

正如Mike W指出的那样,通过现有硬件进行查询优化通常可以做很多事情。隔离慢速运行的查询并找到首先优化它们的方法。在我们的一个应用程序中,我们花费了2个月的时间来实现这一目标,并且成功地提高了应用程序的性能和硬件利用率。