0

我有一个客户需要将旧的 vb.net Web 应用程序从旧服务器移到新服务器。当我让应用程序在新服务器上运行时,我们注意到它运行非常缓慢,尽管服务器更新且硬件更好。

我对应用程序进行了性能分析,主要热点是 OdbcDataAdapter.Fill() 命令。

然后我在 MySQL 中启用了通用日志并对其进行了跟踪。我发现该应用程序正在执行大量查询(例如,该程序员将对搜索中的每个结果执行多个查询),但它们似乎在某处受到限制。

这里只是一个单页请求的日志的一瞥:

130223 11:21:48   624 Connect   root@localhost on mydb
          624 Query SET NAMES utf8
          624 Query SET character_set_results = NULL
          624 Query SET SQL_AUTO_IS_NULL = 0
          624 Query set @@sql_select_limit=DEFAULT
          624 Query select count(*) from bg_doc_status where uploaded = 1 and candidateid='51233'
          624 Quit  
130223 11:21:49   625 Connect   root@localhost on mydb
          625 Query SET NAMES utf8
          625 Query SET character_set_results = NULL
          625 Query SET SQL_AUTO_IS_NULL = 0
          625 Query set @@sql_select_limit=DEFAULT
          625 Query select * from bg_doc_status where willfax=1 and candidateid='51233'
          625 Quit  
130223 11:21:50   626 Connect   root@localhost on mydb
          626 Query SET NAMES utf8
          626 Query SET character_set_results = NULL
          626 Query SET SQL_AUTO_IS_NULL = 0
          626 Query set @@sql_select_limit=DEFAULT
          626 Query Select distinct serviceid from bg_service_results where CandidateID='51233'
          626 Quit  
130223 11:21:51   627 Connect   root@localhost on mydb
          627 Query SET NAMES utf8
          627 Query SET character_set_results = NULL
          627 Query SET SQL_AUTO_IS_NULL = 0
          627 Query set @@sql_select_limit=DEFAULT
          627 Query Select count(*) from bg_candidates_selected_services where CandidateID='51233'
          627 Quit  

我们不需要谈论这个编程有多糟糕:)。这个人可以在一个查询中做很多事情。但是,MySql 似乎每秒最多执行一个查询!

如果我在工作台 SQL 编辑器中运行这些查询中的任何一个,它们每个都需要“0.000 秒”。如果我尽快按 CTRL+ENTER,日志将显示它们每秒执行几次。

有谁知道是什么导致了每秒 1 个查询的限制?它发生在开发和生产中。

我已经尝试了 32 位和 64 位的 MySQL ODBC 5.2w 驱动程序和 MySQL ODBC 5.2a 驱动程序。

我找到了解决方案: odbc.open() 占用了整整一秒。显然是 dns 查找(对于 localhost!)需要时间。将我的 web.config 中的数据库服务器地址更改为 127.0.0.1 修复了它。看起来这个人发现了同样的问题。

4

1 回答 1

2

我找到了解决方案: odbc.open() 占用了整整一秒。显然是 dns 查找(对于 localhost!)需要时间。将我的 web.config 中的数据库服务器地址更改为 127.0.0.1 修复了它。看起来这个人发现了同样的问题。

于 2013-02-23T17:57:51.113 回答