2009-11-19 25 views
3

我正在更新我们的一个Web应用程序中的一段遗留代码。该应用程序允许用户上传电子表格,我们将作为后台工作进行处理。数据库中有大量表的SQL Server性能

每个用户上传都会创建一个新表来存储电子表格数据,因此我的SQL Server 2000数据库中的表的数量将快速增长 - 近期有数千个表。我担心这可能不是SQL Server的优化对象。

将这个机制保持原样是最容易的,但我不想留下一个稍后会炸毁的定时炸弹。如果需要修复,最好现在修复它(显而易见的替代方法是使用将关键记录与用户批次相关联的键的一张大表)。

这种架构可能会随着表的数量增长而产生性能问题吗?如果是这样,升级到更高版本的SQL Server可以缓解问题吗?

编辑:在回答问题的一些详细信息:

这些表的
  • 每个人都有相同的模式。没有理由不能将它作为一个大表来实施;它只是没有。
  • 删除旧表格也是一个选项。他们可能需要一个月或两个月的时间,不能超过这个时间。
+1

可以添加更多详细信息,例如:电子表格(因此表格)的结构每次都相同,还是会更改;如果后者,多少?餐桌需要多久才能生存;永久的,短期的还是用户可定义的? – 2009-11-19 18:22:20

+0

完成后,您的backgroupnd作业是否可以删除表格? – HLGEM 2009-11-19 18:38:51

回答

1

我认为这肯定是一个后期会痛的问题。为什么你需要每次创建一个新表?除非有充分理由这样做,否则我不会这样做。

最好的方法是简单地创建一个ID并将所有上传的数据与一个ID关联,全部在同一个表中。这需要您做一些工作,但启动起来更安全,更易于管理。

3

拥有多个表格不是引擎的问题。目录元数据针对非常大的尺寸进行了优化。让每个用户拥有自己的表还具有一些优势,例如能够为每个表单独分配安全ACL,为每个用户内容分别统计表的数据,并且不仅仅提高了“意外”表扫描的查询性能。

虽然是维护,但问题是什么。如果您保留这个位置,您必须完全设置自动维护任务,但您不能将其作为管理员的手动任务。

+0

让我猜猜..你是一名DBA .. – 2009-11-19 19:24:07

+0

不,我是一名C++开发人员。我写了DBA和开发人员使用的东西... – 2009-11-19 20:08:47

+0

谢谢,这是我一直在寻找的技术信息。看起来这可能不是一个性能问题,但会是一个维护头痛。如果您可以提供参考re:目录元数据优化,我会将其标记为已接受。 – 2009-11-19 20:13:45

2

拥有所有这些表格对于任何数据库都不理想。上传后,Web应用程序是否使用新创建的表格?也许它会向用户反馈什么上传的内容?

您的应用程序是否将所有这些表格用于任何报告等?你提到让他们保持几个月 - 不知道为什么。如果不将内容移动到中央表格并放下个别表格。

一旦后端处理完毕,重新编码网站以将上传保存到中央表格。您可能需要两张桌子。一个UploadHeader表,用于跟踪上传批次:谁上传,何时上传等,并链接到一个详细信息表以及来自Excel上传的单个记录。

0

我会建议你将这些数据存储在一张表中。在服务器端,您可以创建一个控制台,用户/操作员可以手动启动释放表项的任务。您可以要求他们提供不再需要数据的日期范围,并且将从数据库中删除相同的日期。

您可以先行一步,并设置数据库触发器以在指定时间段后擦除条目/记录。您可以再次添加从用户/操作员/管理员可以设置这些数据有效性限制的用户界面

因此,您可以创建系统,以便垃圾数据将在指定时间后自动删除,可以由管理员再次设置,并为他们提供一个控制台,用它们可以手动删除额外的不需要的数据。

我想我太晚了党的虽然.. !! :P 反正希望它有助于一段时间后...! :)

所有最好.. !! :)