嗨专家 :) 我正在使用 wpf 和 sql server
问题1:创建了大量数据并且必须每秒保存到db,但同时程序的多个部分写入同一个表。每秒保存到数据库效率不高,因为数据库方法很昂贵,您的专家不同意还是我该怎么办?不确定最好的做法是什么,xml 或文本文件什么时候会更有用?
问题 2:我必须从问题 1 保存到的表中检索数据库中的数据,以便在实时图表上显示。这会导致读/写问题吗?
嗨专家 :) 我正在使用 wpf 和 sql server
问题1:创建了大量数据并且必须每秒保存到db,但同时程序的多个部分写入同一个表。每秒保存到数据库效率不高,因为数据库方法很昂贵,您的专家不同意还是我该怎么办?不确定最好的做法是什么,xml 或文本文件什么时候会更有用?
问题 2:我必须从问题 1 保存到的表中检索数据库中的数据,以便在实时图表上显示。这会导致读/写问题吗?
一个接一个地加载大量数据inserts
并不是一个好主意。尝试查看SqlBulkCopy
数据库可以很好地处理并发性,您可以将写入隔离在适当的事务中,以便在完成写入时仅查看数据。
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
考虑到你有时间限制,你必须在 1 秒内以某种方式处理数据。
我会建议:
问题 1:将您生成的数据保存在注入到Stack<..>
. 从另一个线程进程将块Stack<..>
保存到数据库之后,直到不为空。由于没有任何保证您可以在 1 秒内将数据保存在内存中之后。Stack<..>
问题 2:已经在内存中,您可以获得最大可能的性能,保持在可接受的分配内存限制内。
在这里很难提出真正实用的建议,因为性能始终是严格特定于领域的,不能用简短的问题完全描述。但是解决方案,可以作为一个基本的指导方针。
另一种选择是拆分表。
您的其他功能是否仅写入记录字段的子集。
因此,您在两个表之间有一个 1 对 1 的映射,一个用于初始数据,另一个用于 functionA。取决于您对后端需求的分区程度,但它可以显着减少冲突。
基本思想是让您的表格更像对象。所以你有一个基表,那么如果它是一个类型 1 的东西,你添加一个 1 对 1 链接到相关表。类型 1 周围的业务功能只需要写入该表,而不需要写入实体表。
反正有可能。