我正在使用 Brainman ( http://code.google.com/p/odbc ) 的带有 FreeTDS 的 ODBC 驱动程序,我注意到我的初始 DB 存储过程调用很慢,而其他的也一样快。
以下是测试结果:
=== RUN TestLoadElitePartner
ELAPSED TrafficCheck: 456.0261ms
ELAPSED LoadEliteInfo: 123.0071ms
ELAPSED LiveFeed: 128.0073ms
--- PASS: TestLoadElitePartner (0.71 seconds)
PASS
第一次调用是 456 毫秒,随后的调用更加真实,每个调用大约 125 毫秒,但仍然有点慢。如果我交换调用这三个数据库查询的顺序,第一个查询总是很慢(~450 毫秒),随后的查询会更快(~125 毫秒),这可能是由于连接池。
有没有办法修复最初的通话太慢?450ms 对我来说似乎不合理。
我的数据库连接字符串直接指向 IP 地址,因此这不是 DNS 问题。我在http://freetds.schemamania.org/userguide/seemtooslow.htm上读到DNS 和日志记录是 FreeTDS 速度慢的主要问题,但我没有启用日志记录,我将直接关闭 IP。我还能做些什么来优化我的 ODBC/FreeTDS?