Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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# Windows窗体应用程序的中端缓存_C#_.net_Windows_Winforms - Fatal编程技术网

C# Windows窗体应用程序的中端缓存

C# Windows窗体应用程序的中端缓存,c#,.net,windows,winforms,C#,.net,Windows,Winforms,我有一个简单的Windows窗体应用程序,它是用C#4.0编写的。应用程序显示了数据库中的一些记录。该应用程序具有一个由用户启动的查询选项 数据库中的记录可以称为作业 考虑两列JOBID和状态< /P> 这些被两个后台服务更新了,这两个后台服务实际上就像生产者和消费者服务一样工作。作业的状态将由后面运行的这些服务更新 现在对于用户来说,用户可以选择从数据库查询记录,例如根据状态(已提交、正在处理、已完成)查询数据。这可能会导致数千条记录,GUI在显示这些大量数据时可能会遇到一些性能问题 所以,将

我有一个简单的Windows窗体应用程序,它是用C#4.0编写的。应用程序显示了数据库中的一些记录。该应用程序具有一个由用户启动的查询选项

数据库中的记录可以称为作业 考虑两列JOBID和状态< /P> 这些被两个后台服务更新了,这两个后台服务实际上就像生产者和消费者服务一样工作。作业的状态将由后面运行的这些服务更新

现在对于用户来说,用户可以选择从数据库查询记录,例如根据状态(已提交、正在处理、已完成)查询数据。这可能会导致数千条记录,GUI在显示这些大量数据时可能会遇到一些性能问题

所以,将查询结果的块显示为页面非常重要。在用户手动刷新或进行新查询之前,不会刷新GUI

例如,由于服务不断更新作业,因此作业状态在任何时候都可能不同。页面在从数据库中获取数据时应具有数据的基本要求

我使用LINQtoSQL从数据库中获取数据。它很容易使用,但不需要中级缓存来满足这一需求。如果记录数非常多,使用进程内存缓存结果可能会将页面内存提升到极限。不幸的是,LINQ并没有为DataContext对象提供任何中端缓存功能

在C#4.0+SQL Server+Windows环境中实现分页机制的最佳方式是什么


我觉得有些备选方案需要一个复制表/DB,它可以将结果临时存储为缓存。或者使用企业应用程序库的应用程序缓存块。我相信这是大多数开发者面临的典型问题。这是解决这个问题最有效的方法。(注意:我的应用程序和数据库运行在同一个盒子上)

虽然缓存是提高性能的可靠方法,但正确实施缓存策略可能比看起来更困难。问题在于管理缓存过期,或者本质上确保缓存同步到所需的程度。因此,在考虑缓存之前,首先考虑一下是否需要它。根据我从问题中得到的信息,数据模型似乎相对简单,不需要任何连接。如果是这样,为什么不优化分页的表和索引呢?SQLServer和LINQtoSQL将轻松透明地处理数千条记录的分页

您正确地指出,一次显示太多记录对于GUI是禁止的,对于用户也是禁止的。任何用户都不希望看到比在任何给定时间填充屏幕的记录更多的记录。考虑到在用户请求之前不需要刷新数据的限制,可以安全地假设查询数量相对较低。DB与应用程序位于同一个框上的附加约束进一步巩固了不需要缓存的点。SQL server已经在内部执行缓存


所有关于性能调优的建议都指出,在尝试进行优化之前,您应该对性能进行分析和度量。正如州政府所说,过早优化是万恶之源。

谢谢你的回答,我是这方面的新手。您可以帮助优化分页的表和索引的一些链接吗?创建索引的规范是,但我建议您对以下内容进行一些web搜索:。