我通过具有相当高延迟(~80ms)但带宽相对较高的连接连接到MySQL(InnoDB)数据库。
我注意到查询时间会根据查询的发布方式而有很大差异。在以下示例中,我正在按主键执行单个小行的查询。查询时间为:
mysql
):〜160ms (“L2”表示启用了Hibernate二级缓存,“c3p0”表示c3p0已启用,“begin”,“get”和“commit”是查询期间调用的各种子方法的时间)
这些大致是“稳态”结果,因此L2缓存很热,并且忽略了Hibernate启动时间。我假设启用L2缓存时“get”通常为0ms,因为实际上没有得到get。
我的问题是:
mysql
命令行客户端似乎也需要2次往返才能进行简单查询。答案 0 :(得分:1)
我没有针对您的问题的建议,但有一些调试技术可以帮助您弄清楚发生了什么。如果您可以将连接参数添加到连接URL,那么JDBC驱动程序将基本上记录通过线路的所有内容:
JDBC:MySQL的://服务器/数据库profileSQL =真
http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html
您可以看到的另一种方法是通过tcpdump观察您的网络流量。来自Maatkit工具的mk-query-digest可以读取转储输出并帮助您确切了解发生了什么:
希望这有帮助。
答案 1 :(得分:0)