数据库在后台持续存在

时间:2016-12-08 16:35:38

标签: java mysql multithreading mybatis

我正在开发一个字典应用程序并使用许多外部源来收集数据。 这些数据仅在第一次从这些来源收集,然后我将其保存到我的数据库并从他们的数据库中获取。

我面临的问题是,像set,cut,put等词有100个含义和许多例子。将所有这些数据保存到mysql大约需要10秒钟。我正在使用mybatis来保存数据。正因为如此,响应时间越来越紧张。如果没有这个数据库,我可以在400-500ms内获得响应,如果我在从源文件中获取后直接显示数据。

我正在尝试找到一种在后台持久保存数据的方法。我正在使用MVC模式,因此dao层是独立的。

在dao层中使用线程作为解决方案是一个好主意吗?或者我应该使用像Kafka这样的消息传递工具来发送消息以在后台保留给定的单词?我还可以做些什么?

注意:我现在更喜欢MySQL作为数据库,稍后可能会使用redis进行缓存。

1 个答案:

答案 0 :(得分:0)

我对问题的全球回答+进一步评论:

请勿使用Mybatis foreach 批量插入。相反,您应使用 ExecutorType ReuseBatchRead the documentation)在Java迭代中对要存储的对象列表执行语句。

对于事务,在主mybatis-config xml中,配置环境:

  • transactionManager 输入 JDBC 来管理代码中的交易session = sessionFactory.openSession(); session.commit(); session.rollback();
  • transactionManager 输入 MANAGED 以让容器管理。

此外,您可以让Web应用程序发送响应,而新线程会花时间存储数据。