
经过networking的讨论,许多讨论都涉及到我的问题,但我没有看到一个适用于此的模式:
我有一个基本的.NET WinForm应用程序使用EF 3.5与MysqL。 该应用程序适用于大多数查询,但包含distinct()的任何查询都非常慢或导致“ *** 作完成或服务器没有响应之前超时时间”。 在机器重新启动后第一次运行exception。 也就是说,当重新启动应用程序时,即使在停止并重新启动MysqL服务之后,distinct()查询从现在开始仍然正常工作(即,less于1秒)。
事实上,我不能通过重新运行应用程序或重新启动MysqL规则来重现问题,EF编译或MysqLcaching是一个因素。 只有重新启动后,问题才会重新发生。 让我觉得这可能是一个.NET初始化问题或与 *** 作系统有关的其他东西。 在XP和Win 7上观察到这个问题。
任何想法都表示赞赏。 (也想法重现问题,而不重新启动机器,这是非常不切实际的:-)
使用wpf在窗口的任何地方检测文本框
我如何(重新)从.net应用程序格式化分区?
在winXP https请求错误
为什么Console.Readline没有按预期执行
UNCpath不适用于.NET?
更新:
由EF生成的查询如下所示:
SELECT distinct1.C2 FROM ( SELECT disTINCT YEAR(Extent1.Recdate) AS C2 FROM dailyrecord AS Extent1 WHERE (Extent1.STN = 430030) AND (Extent1.WBAN = 99999) ) AS distinct1;
在MysqL shell中运行这个命令首次需要大约30秒,在重新启动MysqL之后大约1秒。 重新启动后回到30秒。 看起来 *** 作系统是第一次读取整个数据库文件,但是之后没有(后续查询的HD活动很less,即使修改了查询参数)。
如何刷新 *** 作系统的读取caching来testing我的理论?
如何以编程方式从.NETregistry中删除windows产品密钥?
如何使.Net独立的.Net框架(依赖)独立的'EXE'文件从.Net
有没有一种简单的方法来确定文件的types而不知道文件的扩展名?
是否可以使用Visual Studio为.Net程序集设置Originalfilename属性?
无法findtypes或命名空间“Mono”
经过相当多的测试之后,出现了这样的情况:
根据定义,很多查询在MysqL中很慢,可能还有(m)任何DBMS,因为它们需要读取整个数据文件,如上面的“disTINCT”查询,其中“WHERE”子句包含主键的一部分,但不是整个主键(在这种情况下是4个字段的组合)。
如果在应用程序中慢速查询频繁且烦恼,则应在搜索条件(“WHERE”字段)上添加索引。 这将大大加快查询速度(最终解决了最初发布的问题),但会增加磁盘上数据的大小(.MYI文件),同时缩小.MYD文件的大小,但总体增加总数据大小。 添加索引可能会增加INSERT,UPDATE和DELETE查询的时间,因为索引也需要更新。 插入大多是在一个接一个的基础上进行的,所以性能处罚往往不明显。 与批量DELETE查询不同(见下文)。
查询的不足之处被 *** 作系统掩盖(在我的情况下是MS windows XP)。 任何需要通过记录读取整个表记录的查询在遇到第一次时非常缓慢。 但是,即使参数发生变化, *** 作系统也会缓存该文件,随后的查询将会快得多,即使查询本身发生了变化:任何需要读取整个表文件的不便查询在被 *** 作系统缓存后都会显示出来。 这使得调整您的查询变得困难,因为您需要在测试之间重新启动 *** 作系统 在拖网之后,我还没有遇到一种实际的方法来刷新windows中的读缓存。
相关的低效查询是:DELETE FROM mytable WHERE fIEld1 = value。 如果有很多记录(在我的情况下为10,000条记录需要30秒),那么即使在fIEld1上有索引,删除(在所有这些示例中使用MysqL,存储引擎MYISAM)也会很慢。 这是因为DBMS需要从(到)磁盘读取(也可能写入)整个表文件(取决于DELETE的物理执行方式)。 再次,这将被 *** 作系统掩盖:这是第一次,但速度相当快(XP机器快30倍)后续查询,因为 *** 作系统有一些魔术,这是很难(不可能?)关闭。 上面建议添加索引可能会增加删除查询的时间。
任何想法或意见感谢!
总结以上是内存溢出为你收集整理的包含“Distinct()”的EF Query首次缓慢全部内容,希望文章能够帮你解决包含“Distinct()”的EF Query首次缓慢所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)