我正在编写一个在 UDP 上侦听传入消息的应用程序。我的主线程接收来自网络的消息后的消息,并将它们中的每一个传递给一个新线程以使用执行程序进行处理。
每个处理线程对其负责的消息进行所需的处理,并将其添加到LinkedBlockingQueue
所有处理线程之间共享的消息中。
然后,我有一个数据库工作线程,它按 10000 条消息块排空队列,并将消息块插入数据库中。
由于消息的到达率可能很高(每秒超过20000条消息),我认为使用LOAD DATA INFILE
效率更高。因此,该数据库工作线程如前所述排空队列,使用 CSV 格式创建包含所有消息的临时文件,并使用另一个执行程序将创建的文件传递给另一个线程。这个新线程LOAD DATA INFILE
使用JDBC
.
在测试我的应用程序后,我认为性能不太好,我正在寻找提高多线程级别和数据库访问级别性能的方法。
我确切地说我使用 MySQL 作为 DBMS。
谢谢