0

我在一家小公司工作,我的工作之一是管理 ERP 系统 'AXAVIA' (www.axavia.com)

有 .NET 客户端和一个大小约为 10GB 的 MSSQL Server 2005 数据库。该系统在元数据模型上工作,这意味着它们只有很少的表(每个数据类型一个,一个用于关系),并且这些数据是通过即席查询计算的。高达2000批次/秒...

我猜他们并没有真正拥有数据库专家,因为他们对索引碎片一无所知,而且我已经删除了很多未使用的索引 - 现在数据库缩小了 30% 左右......

我还能做些什么来提高性能?- 我现在每晚都重建索引

  • 我认为,没有“缺失索引”,而且主键至少是“好的”
  • 文件系统是一个快速的 10 RAID - 使用 6.6 GB 内存,IO 非常少
  • 服务器是具有一个虚拟 CPU 的 VM Ware - 我想这是最好的可能性:大量小批量将受益于具有 4 核的物理 CPU?!
  • 我也在考虑分区表,但目前数据库还不够大,无法从中受益。

所以 - 还有其他想法吗?

4

3 回答 3

1

如果还没有,请将您的数据和日志文件放在单独的驱动器上。您还可以将 tempdb 移动到它自己的驱动器,并将其拆分为多个文件。在此处阅读 Brent 关于 tempdb 的文章:Brent Ozar

于 2011-02-10T22:01:52.197 回答
1

我建议您使用 Glenn Berry 的脚本来确定服务器中的问题:

https://dl.dropboxusercontent.com/u/13748067/SQL%20Server%202005%20Diagnostic%20Information%20Queries(September%202014).sql

还有许多其他潜在问题,不仅仅是缺少索引。

我将此脚本用作知识数据库来创建自己的工具来检查我的 ERP 健康状况。我可以告诉你它运作良好。

于 2014-10-05T08:04:46.123 回答
1

添加一个CPU,至少用于测试。我会说你可能会在这里遇到问题。一般来说 - 我的意思是一般来说 - 我再也没有一个核心 VMS。即使是最小的机器也有 2 个内核。即使在 Windows 级别(操作系统操作发生在第二个核心上),也使事情变得更快。

今天10GB很小。仍然没有数据库糟糕的编程不能杀死(根据你的解释,在你的情况下,很可能正在进行很多糟糕的编程)。开始全面分析为什么事情正在等待。如果他们只是为任何操作使用大量顺序 SQL 来访问服务器,那么您唯一能做的就是确保 (a) 您的等待时间尽可能短,并且 (b) 您拥有尽可能快的 CPU。在像您描述的那样的 sdatabase 中,问题出在程序中 - 基本上只有这么多您可以在数据库级别调低。

于 2014-10-05T08:11:03.060 回答