Java 多线程应用程序性能低下-MySQL InnoDB

Java 多线程应用程序性能低下-MySQL InnoDB,java,mysql,multithreading,database-performance,Java,Mysql,Multithreading,Database Performance,我的应用程序是一个Java1.7多线程应用程序,MySQL 5.6作为后端 应用程序从文件中读取数据,并以多线程方式将其写入相应的表中。当所有线程都在不同的表上插入记录时,性能是非常好的,但是当所有线程都开始插入同一个表时,应用程序或更确切地说插入速度就会减慢 每个线程在批处理模式下都有自己的准备语句,提交间隔为100条记录。“rewriteBatchedStatements=true”属性已在建立连接期间添加 MySQL驱动程序:com.MySQL.jdbc.Driver MySQL存储引擎:

我的应用程序是一个Java1.7多线程应用程序,MySQL 5.6作为后端

应用程序从文件中读取数据,并以多线程方式将其写入相应的表中。当所有线程都在不同的表上插入记录时,性能是非常好的,但是当所有线程都开始插入同一个表时,应用程序或更确切地说插入速度就会减慢

每个线程在批处理模式下都有自己的准备语句,提交间隔为100条记录。“rewriteBatchedStatements=true”属性已在建立连接期间添加

MySQL驱动程序:com.MySQL.jdbc.Driver MySQL存储引擎:InnoDB

如有任何有助于提高绩效的信息/建议,我们将不胜感激


谢谢…

当您遇到减速时,请执行线程转储(
kill-3
),并查看转储中的线索。很可能,您需要在减速期间(20-100)进行多次转储才能看到瓶颈。有一些Java分析器可以使检查JVM线程之间CPU分配的任务变得更容易。没有任何进一步的信息,你的猜测和我们的一样好。这个等式中的变量数量真是惊人…@VictorSorokin:我使用了profiler(VisualVM)并进行了线程转储以进行监视。我还使用MySQL服务器监控来观察流量和执行的sql,并检查来自java的sql,一旦所有线程开始访问同一个表,MySQL流量就会下降。探查器没有在任何线程上显示任何等待或阻塞。我想知道是否有任何设置,无论是在MySQL级别还是在连接过程中,以提高吞吐量。@Minesh的MySQL,我知道(几乎)什么。你最好问问dba.stackexchange。。。