【发布时间】:2014-12-22 14:03:39
【问题描述】:
我的多线程(大约 10 个线程)应用程序的多个实例在不同的机器(大约 10 台机器)上运行。所以这个应用程序的总共 100 个线程同时处于活动状态。 这些线程中的每一个都产生 4 个输出集,每个集包含 1k-5k 行。这些集合中的每一个都被推送到单个 Mysql 机器、相同的数据库、相同的表(插入或更新操作)。所以有 4 个表消耗每个线程产生的 4 个集合。 我正在使用 mybatis 作为 ORM。与处理请求相比,这些线程在将输出写入 DB 时可能会消耗大量时间。 在这种情况下如何优化数据库写入? 1.使用mybatis的批处理 2. 将数据写入将由单个消费者线程拾取并写入数据库的文件? 3. 将每个数据集写入不同的文件并使用 4 个消费者线程从同一个数据集中挑选必须推送到同一个表的数据,从而最大限度地减少锁定? 如果可能,请提出其他更好的方法?
【问题讨论】:
标签: java mysql multithreading parallel-processing mybatis