千万级数据插入优化
关键词: 发布时间:2020-07-17 16:28:23 浏览次数:51

今日在网上抓取一些数据,表上加了个索引,刚开始抓取的时候由于表中数据量不大,插入速度还可以

image.png

在本地的虚拟机中,最早用的是laravel model单条插入,速度大约每秒几百条,但是由于要抓取的数据较多,这个速度抓完数据大约需要耗时一天左右,无法忍受;

于是改为swoole方式,单条sql插入,速度提升一倍多,但是当表的数据达到千万级时,插入速度就很慢了,如下图:


由于之前抓过数据,有些是重复存在的,但上是加了唯一索引的,当有重复数据时会因为索引的原因无法插入,后将索引删除(打算抓完数据后再补索引),速度稍有提升,但依然较慢

code:600373,抓到:4188条,插入成功:0条,耗时:16.397747039795秒
收到消息:600375
code:600375,抓到:3876条,插入成功:0条,耗时:15.042104005814秒
收到消息:600376
code:600376,抓到:4532条,插入成功:0条,耗时:18.548846960068秒
收到消息:600377
code:600377,抓到:4624条,插入成功:0条,耗时:19.749195098877秒
收到消息:600378
code:600378,抓到:4464条,插入成功:0条,耗时:17.674058914185秒
收到消息:600379
code:600379,抓到:4010条,插入成功:0条,耗时:14.016026973724秒


优化之后看到速度呈指数级上升:

收到消息:600074
code:600074,抓取耗时:0.16秒
code:600074,抓到:4708条,插入成功:4708条,耗时:0.04秒
收到消息:600222
code:600222,抓取耗时:0.21秒
code:600222,抓到:4842条,插入成功:4842条,耗时:0.04秒
收到消息:600223
code:600223,抓取耗时:0.17秒
code:600223,抓到:4792条,插入成功:4792条,耗时:0.03秒


上述方式是在laravel框架中用command结合rabbitmq方式实现的,

之前在另外一个单独项目中用原生php结合swooles单条方式插入mysql时速度可达每秒可以上万条,

不知道在laravel框架中为何只有不到上千,看来laravel框架还是太重了;


上述程序基于云服务器(1核2G)

数据库:Server version: 10.2.32-MariaDB MariaDB Server,千万级数据下用swoole写入速度还是不错的;

赞:(0)
踩:(0)
相关文章
find_in_set在集合中查找
sql查询自定义排序field函数
sql显示表结构及索引
sql修改表
添加、删除索引
sql分组
sql子查询
sql多表更新
sql建表同时插入数据
sql多表删除
热门文章
win7中将文件拷贝到虚拟机linux下
php中用uploadify上传时session丢
laravel页面静态化的方法
centos7.4 64位下swoole安装及配置
centos7.4下php7.25多线程pthreads
微信扫一扫在哪
php-fpm经常卡死
单点登录sso原理及php实现方式及de
phpexcel设置行高及列宽,背景颜色,
一个简单的laravel分表联合查询
好评文章
php7中使用mongodb的aggregate进行
windows下使用MongoDB Compass Com
phpexcel设置行高及列宽,背景颜色,
laravel 中悲观锁 & 乐观锁的使用
laravel整合dingo/api方法步骤:jwt
在php中用curl请求java接口无法获
laravel页面静态化的方法
一个简单的laravel分表联合查询
laravel对具体的路由不采用csrfTok
php7 mongodb distinct及count方法
标签
rabbitmq mysql备份 elasticsearch
站点信息
建站时间:2011年
文章数:500篇
浏览数:253628
粤ICP备18028092号-1  微信:hurong241