Infobright/MySQL 加载数据 infile 死锁
Posted
技术标签:
【中文标题】Infobright/MySQL 加载数据 infile 死锁【英文标题】:Infobright/MySQL load data infile deadlock 【发布时间】:2012-04-09 14:26:03 【问题描述】:我在使用多个并发 LOAD DATA INFILE 命令时遇到死锁。这是背景:
我开发了一个基于 Java 的 ETL 工具,可以将平面文件加载到 Infobright 数据库中(Infobright 是一个基于 mysql 的列式数据库)。在处理结束时,使用 LOAD DATA INFILE 命令执行加载。此过程可以处理加载到多个表中,并且每次加载都使用单独的连接并行完成(出于性能原因)。
我还编写了一个 bash 脚本,它为多个文件并行运行此工具(以节省处理部分的时间,因为 LOAD 命令无论如何都会被数据库服务器序列化)。这意味着我可以对同一个目标表(来自不同的进程)有多个 LOAD DATA 命令。
我期待的是 LOAD DATA 命令将以串行方式执行,但最终会完成。但是,我遇到了僵局。如果我执行“显示进程列表”,我可以看到我所有的 LOAD DATA 命令都处于“系统锁定”状态。
以前有没有人遇到过这样的问题并找到了解决方案?
详情: 我正在使用 Infobright Enterprise Edition v3.5.2。这是基于 MySQL 5.1.40。 我的 ETL 应用程序使用 java 1.5.0_08 和 Mysql 连接器 Java v5.1.12。 操作系统:Centos 5.6 64 位(Linux 2.6.18-238.12.1.el5)
【问题讨论】:
我还建议使用最新版本的 Infobright 4.0.6,因为在 LOAD DATA 命令中进行了一些巨大的改进,具有更好的线程以及添加行级错误检查以提供支持。 【参考方案1】:请确保您的系统上有足够的内存来运行 ETL 进程和脚本。根据对您的外部调查,确定您在只有 1GB RAM([1002M/498M, 1/0.00])的机器上运行,这非常低。尝试在普通桌面级机器(>4G RAM)和生产级机器(>32G RAM)上进行测试。
【讨论】:
请不要在您的帖子中包含签名。以上是关于Infobright/MySQL 加载数据 infile 死锁的主要内容,如果未能解决你的问题,请参考以下文章
Tomcat 6 未从 WEB-INF/lib 加载 jars
springmvc 资源在web-inf目录下,怎样加载js静态文件 出现302
Spring Boot 应用 WAR 部署到 Resin 4:有没有办法先使用 app (WEB-INF/lib) 类加载器?