千万级数据插入优化
今日在网上抓取一些数据,表上加了个索引,刚开始抓取的时候由于表中数据量不大,插入速度还可以
在本地的虚拟机中,最早用的是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下
- phpexcel设置行高及列宽,背景颜色,
- rabbitmq无法启动
- intellij idea不显示git push按钮
- php7中使用mongodb的aggregate进行
- laravel页面静态化的方法
- centos7.4 64位下swoole安装及配置
- navicate连接mycat报1184错误
- curl设置超时不起作用(CURLOPT_TIM
- devops-jenkins容器为pending状态
- 好评文章
- phpexcel设置行高及列宽,背景颜色,
- php7中使用mongodb的aggregate进行
- intellij idea打开文件所在文件夹
- windows下使用MongoDB Compass Com
- win7中将文件拷贝到虚拟机linux下
- laravel 中悲观锁 & 乐观锁的使用
- 单点登录sso原理及php实现方式及de
- navicate连接mycat报1184错误
- rabbitmq无法启动
- laravel整合dingo/api方法步骤:jwt
- 我的项目
- 【github】www.github.com/hurong241
- 【码云】gitee.com/hu_rong/projects
- 【docker hub】hub.docker.com/repositories/hurong241
- 【packagist】packagist.org/users/hurong241/packages
- 站点信息
- 建站时间:2011年
- 文章数:623篇
- 浏览数:1357698