C# 为什么我的一些查询在MySQL服务器上非常长(超过5000毫秒)?
我有一个使用C# 为什么我的一些查询在MySQL服务器上非常长(超过5000毫秒)?,c#,mysql,npoco,C#,Mysql,Npoco,我有一个使用NPoco的C应用程序,它在MySQL服务器上执行许多查询(version5.6.17) 这些查询的通常时间介于ms和40ms之间 然而,有时似乎有些查询占用了通常的时间加上5000 ms,我完全不明白为什么(例如5021 ms)。也总是那些已经是最重的查询具有这种行为(即通常需要40毫秒左右的查询) (我用WAMP包()安装了MySQL服务器,因为我还需要Apache服务器和PHP服务器。) 你知道我应该在哪里解决这个恼人的问题吗?你是否尝试过重复查询并分析出需要很长时间的特定类型
NPoco
的C
应用程序,它在MySQL
服务器上执行许多查询(version5.6.17
)
这些查询的通常时间介于ms
和40ms
之间
然而,有时似乎有些查询占用了通常的时间加上5000 ms
,我完全不明白为什么(例如5021 ms
)。也总是那些已经是最重的查询具有这种行为(即通常需要40毫秒左右的查询)
(我用WAMP
包()安装了MySQL
服务器,因为我还需要Apache
服务器和PHP
服务器。)
你知道我应该在哪里解决这个恼人的问题吗?你是否尝试过重复查询并分析出需要很长时间的特定类型的查询?我已经从我的C#应用程序中测量了时间。也许MySQL本身提供了一种更好的方法,但我不知道……如果您知道需要花费很长时间的查询,您可以将它们放入MySQL workbench,并将SELECT更改为a。您可能需要在数据库中添加一些额外的内容来加快速度。您可能还需要检查应用程序如何处理连接。如果你让它们打开,你可能会得到一个超时的。可能是一个异常使您的应用程序重新连接,但超时总是需要很长时间(显然,您必须等待),非常感谢您的评论。我试着解释一下,看看它说了什么。我还在应用程序中为每个线程保持一个打开的连接,你认为这可能是我的问题的原因吗?@laurentIsRunning:这取决于线程运行的时间以及线程是否处于“备用”状态。通常,连接只允许在x时间段内处于打开和空闲状态(这在数据库设置中定义)。一旦该时间到期,服务器将关闭连接。如果应用程序随后尝试使用该连接,它最终将以超时异常结束。通常最好尽快关闭连接。使用块是一个很好的技巧