当我将数据库放入远程服务器时,为什么我的java应用程序会变慢?

时间:2017-03-10 20:19:34

标签: java mysql hibernate

我编写了JavaFX应用程序并将其连接到Windows PC中的本地数据库。一切都运行良好,但当我将数据库复制到远程服务器并尝试连接时,应用程序变得更慢。 我试图在PC和服务器之间嗅探MySql会话,并决定它不是网络问题,因为PC查询和服务器响应最后一个数据包到达之间的时间仅为0.2秒,而应用程序需要4-5秒才能显示结果这件事。 我知道更好的方法是在远程服务器上运行Web服务,但在更改应用程序之前我需要知道,为什么应用程序变慢?

这是hibernate cfg文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://serverURLhere:3306/second_attempt_hibernate</property>
        <property name="connection.username">usernameHere</property>
        <property name="connection.password">passwHere</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
        <property name="hibernate.connection.autocommit">false</property>
        <property name="show_sql">true</property>
        <property name="hbm2ddl.auto">update</property>
        <mapping class="models.Employee"/>
        <mapping class="models.Documents"/>
        <mapping class="models.DocTypes"/>
        <mapping class="models.DocStatuses"/>
        <mapping class="models.MailOrder"/>
        <mapping class="models.MailOrderStatuses"/>
    </session-factory>
</hibernate-configuration>

1 个答案:

答案 0 :(得分:1)

相反,我会感到非常惊讶。

您没有指定您所指的事件是什么,因此很难给您提供建议。

我会记录很多事件并尝试查看哪些操作最贵。

数据库初始化肯定会花费0.2秒,您正在使用<property name="hbm2ddl.auto">update</property>对数据库进行验证和更新,这可能很有用,但需要时间。

优化可能是编程中最困难的任务之一,因此尽可能多地隔离问题并单独测试它们以给予每个问题适当的权重。