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