使用PreparedStatement从MySQL数据库进行数据传输的开销

用户名

这不是关于查询优化的问题。确切地说,是对从MySQL 5.5.27(Amazon RDS)获得的数据传输速率的预期进行合理性检查。

在运行特别繁重的查询时,MySQL Workbench显示的数据传输速率约为1MB / s,查询运行时间约为420秒。这总共增加了大约420M字节的数据传输。

如果将此数据保存到一个简单的文本文件中,则文件的大小最终将小于7M字节。由于ResultSet的元数据,JDBC驱动程序机制等,我当然希望看到一些开销。但是420M与7M的比例对我来说似乎是一个非常糟糕的比率。或者,这正常吗?

任何反馈都非常感谢。非常感谢!

PS。更多详细信息:
-JDBC驱动程序是mysql-connector-java-5.1.13-
数据在Amazon RDS和EC2实例之间传输-Java
1.6 PreparedStatement用于执行查询

戈德·汤普森

Wireshark是一款出色的免费开放源代码(GPL)网络分析工具,可在此类情况下发挥巨大作用。我进行了以下测试,以查看与“正常” MySQL服务器的“典型” JDBC连接可能产生多少流量。

我在jdbctest测试服务器上创建了一个以MySQL(5.5.29-0ubuntu0.12.04.2)命名的表

CREATE TABLE `jdbctest` (
  `id` int(11) DEFAULT NULL,
  `textcol` varchar(6) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

我用100,000行的表格填充了它

    id  textcol
------  -------
     1  ABCDEF
     2  ABCDEF
     3  ABCDEF
...
100000  ABCDEF

在每个id4个字节每个值6个字节的情况下textcol,检索所有100,000行应表示1 MB数据量级。

我启动了Wireshark,开始了跟踪,并运行了以下使用mysql-connector-java-5.1.26的Java代码:

import java.sql.*;

public class mysqlTestMain {
    static Connection dbConnection = null;

    public static void main(String[] args) {
        try {
            String myConnectionString = "";
            myConnectionString =
                    "jdbc:mysql://192.168.1.3:3306/mytestdb";
            dbConnection = DriverManager.getConnection(myConnectionString, "root", "whatever");
            PreparedStatement stmt = dbConnection.prepareStatement("SELECT * FROM jdbctest");
            ResultSet rs = stmt.executeQuery();
            int i = 0;
            int j = 0;
            String s = "";
            while (rs.next()) {
                i++;
                j = rs.getInt("id");
                s = rs.getString("textcol");
            }
            System.out.println(String.format("Finished reading %d rows.", i));
            rs.close();
            stmt.close();
            dbConnection.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

控制台输出确认我已经检索了所有100,000行。

查看Wireshark跟踪的摘要,我发现:

Packets captured: 1811
Avg. packet size: 992.708 bytes
Bytes: 1797795

按方向细分是

                   packets    bytes
                   -------    -----
from me to server      636    36519
from server to me     1175  1761276

因此看来,要检索约1 MB的数据,我从MySQL服务器收到了1.72 MB的总网络流量。下载的约72%的开销(或包括双向流量在内的约76%)当然远不及您的(费率*时间)计算所建议的约5900%的开销。

我强烈怀疑MySQL Workbench报告的〜1 MB / s速率不是整个时间的总体平均传输速率。确定特定情况下开销的最佳方法是使用Wireshark之​​类的工具并自己进行测量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用PreparedStatement从MySQL数据库进行数据传输的开销

来自分类Dev

通过Gstreamer中的RTSP进行数据传输

来自分类Dev

WebSockets与XHR进行数据传输

来自分类Dev

通过VPN与Internet进行数据传输?

来自分类Dev

Azure SQL数据库中的数据传输

来自分类Dev

如何在PostgreSQL和MySQL中获取数据库数据传输统计信息?

来自分类Dev

非匹配结构化MySQL数据库之间的数据传输

来自分类Dev

使用翻新+ RxJava在请求之间进行数据传输

来自分类Dev

使用JavaScript在网页之间进行数据传输

来自分类Dev

使用Google Cloud端点进行数据传输优化

来自分类Dev

使用Unity进行简单的iOS蓝牙数据传输

来自分类Dev

这是更大的开销:每次创建一个新的套接字或维护一个套接字以进行数据传输

来自分类Dev

使用PHP将Json数据传输到MySQL

来自分类Dev

在Perl Chat Server中同时进行数据传输?

来自分类Dev

发现服务对于通过wifip2p进行数据传输是必需的

来自分类Dev

启动CUDA内核序列并在它们之间进行数据传输

来自分类Dev

Excel不将数据传输到Access数据库

来自分类Dev

如何执行数据传输API?

来自分类Dev

读取串行数据传输时出错

来自分类Dev

如何在Rails上的ruby中进行活动以读取json文件然后将数据传输到数据库

来自分类Dev

如何进行以 ACLK 为中心的数据传输

来自分类Dev

使用PHP的后端方法进行emberjs数据传输时感到沮丧

来自分类Dev

使用python进行网络抓取并将数据传输到excel中

来自分类Dev

是否可以通过USB电缆在两台Ubuntu计算机之间进行数据传输?

来自分类Dev

Pfaff Creative 2170绣花机,通过提供的USB电缆进行数据传输-不起作用

来自分类Dev

从 EC2 到 ECS 存储库的数据传输是数据传输 OUT 吗?

来自分类Dev

通过准备数据传输数据

来自分类Dev

如何使用QNetworkAccessManager找出数据传输延迟

来自分类Dev

使用NGINX调整数据传输成本

Related 相关文章

  1. 1

    使用PreparedStatement从MySQL数据库进行数据传输的开销

  2. 2

    通过Gstreamer中的RTSP进行数据传输

  3. 3

    WebSockets与XHR进行数据传输

  4. 4

    通过VPN与Internet进行数据传输?

  5. 5

    Azure SQL数据库中的数据传输

  6. 6

    如何在PostgreSQL和MySQL中获取数据库数据传输统计信息?

  7. 7

    非匹配结构化MySQL数据库之间的数据传输

  8. 8

    使用翻新+ RxJava在请求之间进行数据传输

  9. 9

    使用JavaScript在网页之间进行数据传输

  10. 10

    使用Google Cloud端点进行数据传输优化

  11. 11

    使用Unity进行简单的iOS蓝牙数据传输

  12. 12

    这是更大的开销:每次创建一个新的套接字或维护一个套接字以进行数据传输

  13. 13

    使用PHP将Json数据传输到MySQL

  14. 14

    在Perl Chat Server中同时进行数据传输?

  15. 15

    发现服务对于通过wifip2p进行数据传输是必需的

  16. 16

    启动CUDA内核序列并在它们之间进行数据传输

  17. 17

    Excel不将数据传输到Access数据库

  18. 18

    如何执行数据传输API?

  19. 19

    读取串行数据传输时出错

  20. 20

    如何在Rails上的ruby中进行活动以读取json文件然后将数据传输到数据库

  21. 21

    如何进行以 ACLK 为中心的数据传输

  22. 22

    使用PHP的后端方法进行emberjs数据传输时感到沮丧

  23. 23

    使用python进行网络抓取并将数据传输到excel中

  24. 24

    是否可以通过USB电缆在两台Ubuntu计算机之间进行数据传输?

  25. 25

    Pfaff Creative 2170绣花机,通过提供的USB电缆进行数据传输-不起作用

  26. 26

    从 EC2 到 ECS 存储库的数据传输是数据传输 OUT 吗?

  27. 27

    通过准备数据传输数据

  28. 28

    如何使用QNetworkAccessManager找出数据传输延迟

  29. 29

    使用NGINX调整数据传输成本

热门标签

归档