1

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

任何建议,将不胜感激!

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

谢谢

4

3 回答 3

1

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

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

在这样做时,您允许 IO 访问并行发生,而不是串行发生,这应该会给您的数据库带来更多性能。

于 2009-02-25T20:24:38.793 回答
1

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

毕竟你的数据库并没有那么大——我会先看看调整你的查询。您是否分析过哪些类型的查询正在访问数据库?

于 2009-02-25T20:38:36.077 回答
1

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

As Mike W pointed out, there is usually a lot you can do with query optimization with existing hardware. Isolate your slow-running queries and find ways to optimize them first. In one of our applications, we spent literally 2 months doing this and managed to improve the performance of the application, and the hardware utilization, dramatically.

于 2009-02-25T21:09:13.037 回答