Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在这种情况下,如何以及在何处每秒高效地存储和检索数据?_C#_Sql Server_Read Write - Fatal编程技术网

C# 在这种情况下,如何以及在何处每秒高效地存储和检索数据?

C# 在这种情况下,如何以及在何处每秒高效地存储和检索数据?,c#,sql-server,read-write,C#,Sql Server,Read Write,嗨,专家们:)我正在将wpf与sql server一起使用 问题1:大量数据被创建,必须每秒保存到数据库中,但同时程序的多个部分写入相同的表。由于数据库方法非常昂贵,所以每秒都保存到数据库是没有效率的,您是否不同意,或者我应该怎么做?不确定什么是最好的做法,什么时候xml或文本文件更有用 问题2:我必须从问题1保存到的表中检索数据库中的数据,以便在实时图形上显示。这会导致读/写问题吗?1您可以使用缓存为了保存数据,您可以使用缓存类进行保存 链接: 2如果第二种方案没有问题,可以使用事务来确保获得

嗨,专家们:)我正在将wpf与sql server一起使用

问题1:大量数据被创建,必须每秒保存到数据库中,但同时程序的多个部分写入相同的表。由于数据库方法非常昂贵,所以每秒都保存到数据库是没有效率的,您是否不同意,或者我应该怎么做?不确定什么是最好的做法,什么时候xml或文本文件更有用


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

1您可以使用
缓存
为了保存数据,您可以使用
缓存
类进行保存

链接:

2如果第二种方案没有问题,可以使用事务来确保获得提交的数据


链接:

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

我建议:

问题1:将生成的数据分块保存到
堆栈中。从另一个线程进程执行
Stack
以将区块保存到数据库后,直到
Stack
不为空。因为没有任何保证可以在内存中保存数据后,在1秒内保存数据

问题2:将其存储在内存中,您可以实现最大可能的性能,并保持在可接受的分配内存限制内

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

  • 通过逐个
    插入加载大量数据不是一个好主意。试着看

  • 数据库可以很好地处理并发性,您可以在适当的事务中隔离写操作,以便在完成写操作时只查看数据


  • 另一个选项是拆分表

    其他函数是否只写入记录字段的子集

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

    基本的想法是把你的桌子看得更像对象。所以你有一个基表,如果它是一个类型1的东西,你添加一个1对1的链接到相关的表。类型1周围的业务函数只需要写入该表,而不需要写入实体表


    还是有可能的。

    我有一个db类,将项目发送到一个队列中写入,并且每x将队列作为事务转储到db中。问题是你不能完全查看实时数据,它总是落后于x。我删除了标记WPF,因为这个问题与WPFthanks无关。我使用LINQtoSQL,但我习惯于使用单个插入。即使我有一个100个项目的列表,并将其保存到数据库中,它仍然是单个插入。有没有办法使用linq to sql批量保存项目列表?@user1622488据我所知,不是直接保存。