-1

嗨专家 :) 我正在使用 wpf 和 sql server

问题1:创建了大量数据并且必须每秒保存到db,但同时程序的多个部分写入同一个表。每秒保存到数据库效率不高,因为数据库方法很昂贵,您的专家不同意还是我该怎么办?不确定最好的做法是什么,xml 或文本文件什么时候会更有用?

问题 2:我必须从问题 1 保存到的表中检索数据库中的数据,以便在实时图表上显示。这会导致读/写问题吗?

4

4 回答 4

1
  1. 一个接一个地加载大量数据inserts并不是一个好主意。尝试查看SqlBulkCopy

  2. 数据库可以很好地处理并发性,您可以将写入隔离在适当的事务中,以便在完成写入时仅查看数据。

于 2012-10-04T09:47:41.247 回答
0

1 你可以使用Caching为了持久化你的数据,你可以用Cache类保存

链接:http: //msdn.microsoft.com/en-us/library/system.web.caching.cache.add.aspx

2 您对第二种情况没有问题,您可以使用 Transaction 以确保您获得提交的数据。

链接:http: //msdn.microsoft.com/en-us/library/system.transactions.transaction.aspx

于 2012-10-04T09:45:52.393 回答
0

考虑到你有时间限制,你必须在 1 秒内以某种方式处理数据。

我会建议:

问题 1:将您生成的数据保存在注入Stack<..>. 从另一个线程进程将Stack<..>保存到数据库之后,直到不为空。由于没有任何保证您可以在 1 秒内将数据保存在内存中之后。Stack<..>

问题 2:已经在内存中,您可以获得最大可能的性能,保持在可接受的分配内存限制内。

在这里很难提出真正实用的建议,因为性能始终是严格特定于领域的,不能用简短的问题完全描述。但是解决方案,可以作为一个基本的指导方针。

于 2012-10-04T09:45:59.850 回答
0

另一种选择是拆分表。

您的其他功能是否仅写入记录字段的子集。

因此,您在两个表之间有一个 1 对 1 的映射,一个用于初始数据,另一个用于 functionA。取决于您对后端需求的分区程度,但它可以显着减少冲突。

基本思想是让您的表格更像对象。所以你有一个基表,那么如果它是一个类型 1 的东西,你添加一个 1 对 1 链接到相关表。类型 1 周围的业务功能只需要写入该表,而不需要写入实体表。

反正有可能。

于 2012-10-04T10:12:30.757 回答