首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python 插入百万数据的时间优化与 OOM 问题的解决

每个存储过程从 IT 部门的数据库获取数据大概需要 20min 的时间,总共 40min 的样子。 二 ....问题 之前一位已经离开公司的同事已经实现了一个版本的该需求的功能,思路是一个 Python 类的两个方法分别处理客户信息和机构信息,使用 MySQLdb 模块拼接一条 sql 语句便插入一条数据。...内存溢出,内存使用过大被 Linux 内核杀死导致入库的数据不完整。 三. 定位与解决 1. 时间优化 通过打印处理时间,可以很容易发现处理时间主要都消耗在数据入本地 mysql 上。...提升数据库入库的效率的一条原则就是以“insert table(XX) values(XX),(XX)…”来代替多次插入单条数据。...4246379 条数据,使用时间 26 分钟,而“2017-02-08 20:39:34”数据入 mysqldb 完成,只有了 4 分钟,从 4 小时到 4 分钟时间优化提升挺明显的。

5.8K20

MySQL 数据库插入 100w 条数据要花多久?

同一时间对一个表的写操作不应该是独占的吗?...答:在数据里做插入操作的时候,整体时间的分配是这样的: 1、多链接耗时 (30%) 2、多发送query到服务器 (20%) 3、多解析query (20%) 4、多插入操作 (10% * 词条数目...MySQL插入数据在写阶段是独占的,但是插入一条数据仍然需要解析、计算、最后才进行写处理,比如要给每一条记录分配自增id,校验主键唯一键属性,或者其他一些逻辑处理,都是需要计算的,所以说多线程能够提高效率...) 使用多值插入SQL,SQL语句的总长度减少,即减少了网络IO,同时也降低了连接次数,数据库一次SQL解析,能够插入多条数据。...执行多条SQL语句,实现数据库事务。

1.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java Excel百万数据快速插入数据库思路

    思路假设数据有100万。要将数据快速插入到数据库,首先得减少读取数据的时间开支。减少插入数据时,时间上的开支。数据量过大容易产生OOM思路一:单线程逐行解析,单线程逐行插入。...(推荐)数据获取对于百万级数据的获取,本人一般采用alibabat提供的easyexcel工具。...,最简单的方法就是直接读取,通过单线程的方式逐行解析,时间上的开销预计在10分钟左右(不推荐)第二种方法便是采用多线程的方式(推荐),即利用线程池的方式去获取。...数据插入建议使用MyBatis-Plus框架,其提供了数据库多行数据插入的方法,可减少IO,同时开启JDBC批量插入&rewriteBatchedStatements=true对于数据插入比较简单的方法就是直接通过简单...Sql逐条插入采用多线程的方式分批插入,如果每一批1w数据的话,大概1分钟左右就能处理完。

    31710

    你向 Mysql 数据库插入 100w 条数据用了多久?

    同一时间对一个表的写操作不应该是独占的吗?...答:在数据里做插入操作的时候,整体时间的分配是这样的: 1、多链接耗时 (30%) 2、多发送query到服务器 (20%) 3、多解析query (20%) 4、多插入操作 (10% * 词条数目...MySQL插入数据在写阶段是独占的,但是插入一条数据仍然需要解析、计算、最后才进行写处理,比如要给每一条记录分配自增id,校验主键唯一键属性,或者其他一些逻辑处理,都是需要计算的,所以说多线程能够提高效率...) 使用多值插入SQL,SQL语句的总长度减少,即减少了网络IO,同时也降低了连接次数,数据库一次SQL解析,能够插入多条数据。...执行多条SQL语句,实现数据库事务。

    1.3K20

    你向 Mysql 数据库插入 100w 条数据用了多久?

    多线程插入(单表) 问:为何对同一个表的插入多线程会比单线程快?同一时间对一个表的写操作不应该是独占的吗?...答:在数据里做插入操作的时候,整体时间的分配是这样的: 链接耗时 (30%) 发送query到服务器 (20%) 解析query (20%) 插入操作 (10% * 词条数目) 插入index (10%...MySQL插入数据在写阶段是独占的,但是插入一条数据仍然需要解析、计算、最后才进行写处理,比如要给每一条记录分配自增id,校验主键唯一键属性,或者其他一些逻辑处理,都是需要计算的,所以说多线程能够提高效率...多线程插入(多表) 分区分表后使用多线程插入。...3) 使用多值插入SQL,SQL语句的总长度减少,即减少了网络IO,同时也降低了连接次数,数据库一次SQL解析,能够插入多条数据。

    1.4K20

    你向 MySQL数据库插入 100w 条数据用了多久?

    多线程插入(单表) 问:为何对同一个表的插入多线程会比单线程快?同一时间对一个表的写操作不应该是独占的吗?...答:在数据里做插入操作的时候,整体时间的分配是这样的: 1、多链接耗时 (30%) 2、多发送query到服务器 (20%) 3、多解析query (20%) 4、多插入操作 (10% * 词条数目...MySQL插入数据在写阶段是独占的,但是插入一条数据仍然需要解析、计算、最后才进行写处理,比如要给每一条记录分配自增id,校验主键唯一键属性,或者其他一些逻辑处理,都是需要计算的,所以说多线程能够提高效率...多线程插入(多表) 分区分表后使用多线程插入。...) 使用多值插入SQL,SQL语句的总长度减少,即减少了网络IO,同时也降低了连接次数,数据库一次SQL解析,能够插入多条数据。

    44420

    你向 Mysql 数据库插入 100w 条数据用了多久?

    ▌目录 多线程插入(单表) 多线程插入(多表) 预处理 SQL 多值插入 SQL 事务( N 条提交一次) ▌多线程插入(单表) 问:为何对同一个表的插入多线程会比单线程快?...同一时间对一个表的写操作不应该是独占的吗?...答:在数据里做插入操作的时候,整体时间的分配是这样的: 链接耗时 (30%) 发送 query 到服务器 (20%) 解析 query (20%) 插入操作 (10% * 词条数目) 插入 index...MySQL 插入数据在写阶段是独占的,但是插入一条数据仍然需要解析、计算、最后才进行写处理,比如要给每一条记录分配自增 id,校验主键唯一键属性,或者其他一些逻辑处理,都是需要计算的,所以说多线程能够提高效率...(3) 使用多值插入 SQL,SQL 语句的总长度减少,即减少了网络 IO,同时也降低了连接次数,数据库一次 SQL 解析,能够插入多条数据。

    2.4K10

    场景题:百万数据插入Redis有哪些实现方案?

    那么今天咱们就来看一道,在面试中国平安时遇到的一道场景题:将百万数据插入到 Redis,有哪些实现方案?...但是,当需要插入百万数据时,也面临着一些挑战:内存压力:大量数据可能会占用大量内存,需要合理规划内存使用。性能瓶颈:如果插入操作不当,可能会导致性能下降,甚至影响系统的正常运行。...2.实现方案概述百万数据插入 Redis 的整体执行流程如下:3.前置工作:预处理和压缩在开始执行数据插入之前,可以先进行以下操作:数据预处理:在写入之前对数据进行必要的预处理,比如去除重复数据、转换数据格式等...4.插入方案百万级数据插入 Redis 可以采取的方案有以下几个:批处理数据分片使用 Lua 脚本异步加载接下来,我们分别看来。...小结将百万数据插入到 Redis 是一个具有挑战性的任务,但通过合理选择实现方案和进行性能优化,可以高效地完成任务。以上实现方法都有各自的优缺点,开发者可以根据实际情况选择最适合的方案。

    17610

    性能爆表:SpringBoot利用ThreadPoolTaskExecutor批量插入百万级数据实测!

    开发目的: 提高百万级数据插入效率。 采取方案: 利用ThreadPoolTaskExecutor多线程批量插入。...countDownLatch.countDown();// 很关键, 无论上面程序是否异常必须执行countDown,否则await无法释放 } } } 创建多线程批量插入具体业务方法...testMultiThread() { List logOutputResults = getTestData(); //测试每100条数据插入开一个线程...: 根据id分组,查看是否有id重复的数据,通过sql语句检查,没有发现重复入库的问题 检查数据完整性:通过sql语句查询,多线程录入数据完整 测试结果 不同线程数测试: 总结 通过以上测试案列...,同样是导入2000003 条数据,多线程耗时1.67分钟,单线程耗时5.75分钟。

    1.1K10

    MySQL插入Date类型数据,时间早8小时解决方案

    前言 最近在学习使用Java整合微信支付,一开始没注意,做了查询超时未支付的订单的定时任务以后,我新创建的订单立马就会被超时关闭,去看了一下数据库的订单信息,时间整整差了8小时,导致我写的逻辑直接被判断超时...,我用的数据库是MySQL8.0哈。...然后我就去根源,去MySQL数据库查看了一下时间,好家伙,数据库的时间直接就是少了8小时的。...然后我把数据库的默认时区修改以后重启就好了 解决方案 我的MySQL8.0是直接安装在Docker里面在,所以直接修改了my.cnf [mysqld]全剧配置就好了,如下两种方案 方案二执行完以后记得重启...MySQL服务器/容器 SELECT NOW(); // 查看当前数据库时间 SHOW VARIABLES LIKE '%time_zone%'; // 查看当前数据库连接使用的时区 SET

    1.8K10

    100w条数据 | 插入Mysql你要用多长时间?

    同一时间对一个表的写操作不应该是独占的吗?...答:在数据里做插入操作的时候,整体时间的分配是这样的: 1、多链接耗时 (30%) 2、多发送query到服务器 (20%) 3、多解析query (20%) 4、多插入操作 (10% * 词条数目...MySQL插入数据在写阶段是独占的,但是插入一条数据仍然需要解析、计算、最后才进行写处理,比如要给每一条记录分配自增id,校验主键唯一键属性,或者其他一些逻辑处理,都是需要计算的,所以说多线程能够提高效率...) 使用多值插入SQL,SQL语句的总长度减少,即减少了网络IO,同时也降低了连接次数,数据库一次SQL解析,能够插入多条数据。...执行多条SQL语句,实现数据库事务。

    2.3K90

    排序-线性排序,如何做到百万级数据秒级排序,时间复杂度O(n)?

    我们经常接触的冒泡排序,快速排序,归并排序等,这些排序时间复杂度大多是n^2或者N(logN),他们都是基于比较的排序(就是排序过程中数据两两做比较),那你有知道和了解几种线性排序的算法吗?...他们的时间复杂度都是O(n),下面的几个问题你会了吗? 问题 1000万订单数据金额如何O(n)复杂度排序? 100万考生成绩如何O(n)复杂度秒级排序?...然后每个桶中的元素再进行排序,这样最后所有桶中的元素按桶的顺序排列,则所有元素有序,我们假设n个元素,m个桶,那么每个桶中放入(n/m=k)个元素,每个桶中元素的排序可以用之前我们分享过的快速排序,则桶排序的时间复杂度是...m * k(logk),我们把k用n/m进行等价替换,所以时间复杂度就编程了 n* log(n/m),当m非常接近n时,那么桶排序的时间复杂度就是O(n)了。...桶排序:是一种外部排序,适用于数据量比较均匀,数据范围不是很大的排序数据。

    2.6K20

    性能测试项目中遇到的问题和解决方法

    问题一: 做接口性能测试时,单用户时响应时间是50ms左右,而测10个用户并发时响应时间达到了260ms,虽然没有超出指标,但正常情况下单用户和10个用户并发时响应时间不应该相差那么大。 ?...,说明tcp不能正常释放,会造成响应时间增加。...3、查看磁盘使用情况 因为测试环境调试时是info级别,发压力的时候会产生大量日志,占空间特别大,每清理一次过不了多久又快满了。 ?...场景里有两个接口在测试时插入大量数据,跑一个晚上就能插入几百万条数据。而另外两个接口是分别查询这两个接口对应的表里的数据,数据越多,返回的结果越大,所以响应时间呈上升趋势。...3、重测该场景,考虑到测试时间有限,最优处理能力跑24小时不能正常触发fullgc回收,就用极限压力去测,反正目的是观察内存回收情况,如果能正常回收了则能证明不存在内存溢出情况。 ?

    1.8K70
    领券