最近在做一个同步线上数据的需求,先从线上拉取数据,然后插入本地数据库,数据量单次是几千至一万,通过mybatis插入mysql的时候,插入两三千条没问题,但是七八千条甚至上万条就会出现代码卡在插入方法不继续往下执行的情况,我去看mysql实际上数据是全部插入进去的,代码也不报错,暂时的解决方法是进行分页插入,但是还是想知道是哪里的问题,希望得到各位大佬的指点
<p>插入时间太长,超时了吧。</p>
应该不是超时,我看了下插入一万几秒钟后数据库就有全部数据了,但是代码却不往下执行了
<p>可能内存溢出,程序挂了</p>
怎么才能准确的判断是不是内存溢出呢
<p>打印一下stack看看是卡在哪个环节了,贴一下图看看</p>
求指教
就是卡在插入语句,他不往下执行也不报错,该怎么打印呢
mysql有插入限制 需要自行分批插入
限制瓶颈有确定的值么
sql语句长度限制.my.ini中有相关配置 可以加大,不过对于不确定sql有多大的情况还是自行分批插入
<p>批量insert,比如1w的数据 分割成10份1000的数据,循环10次</p>
嗯,谢谢,这个解决方案我知道 我只是想弄清楚为啥数据成功插进数据库了,然后代码不往下执行,也不报错
<p>我刚才换成了本地库,他报内存溢出了,将本地库max_allowed_packet从默认的1M改成10M成功插入了,我们测试库不知道什么情况,数据可以成功插入,代码卡死不往下执行,连错都不报,可以断定是测试数据库的问题了,谢谢各位!</p>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。