求指点, PHP 脚本操作 MYSQL 数据库批量插入数据问题

2017-05-26 12:03:17 +08:00
 2ME

原来都没注册一直默默刷帖.. 今天遇到了解决不了的问题来求助大神
第一次发帖如果有没说清楚的地方麻烦指出来楼下会补充编辑

新手初级 PHP 程序员遇到了效率问题

需求: 有一个源数据库为 A 库 若干个需要插入数据的数据库统称为 B 库 最少 100 个这样子
现在需要从 A 库取数据插入 B 库,每个 B 库每天从 A 库取 1000 条进行插入操作
也就是循环 100 次脚本 每次往 B 库插入 1000 条
脚本是在本地跑 写完了之后测试脚本往本地的一个数据库插入数据要 15S 左右 后期数据累计多了 20S 左右
但是今天实际往生产数据库插入数据测试了一下跑一个库要 15min 左右,后期数据多了肯定会更慢
时间完全不能接受,这样算下来跑 100 个库就起码要 24 小时了

插入数据不是简单的数据取出来就插进去就算了 有验证重复的过程 主表插入数据 其他表也会插入相关数据
本来是验证最花时间 现在验证过程已经经过处理了 跑一次 B 库只会和 B 库做一次数据交互
所以效率影响基本可以忽略不计 主要是插入数据时候影响的效率
数据是单条插入 因为主数据插入后获得主键用来后面修改数据以及插入其他表数据
用事务批量插入的话不可行

求 V2 的程序员给给调整意见 有需要补充信息的话会在下面补充

说升级服务器或者修改表结构之类的就算了.. 我没那么高权限 我能做的就是尽力去实现领导需求

2162 次点击
所在节点    程序员
5 条回复
2ME
2017-05-26 13:22:51 +08:00
目前有个想法是插入到本地数据库把数据库 然后读 B 库的最后一个 ID 再把本地数据库的读出来 循环赋值主键 然后用事务插入 B 库 不知道是否可行
2ME
2017-05-26 14:05:26 +08:00
好像忘了说 数据库服务器在美帝 - -
chouchangcn
2017-05-26 15:43:11 +08:00
异地读数据当然是网络延迟的原因。。。
2ME
2017-05-26 16:10:45 +08:00
@chouchangcn = = 我是本地读数据存到异地数据库
chouchangcn
2017-05-28 09:53:18 +08:00
@2ME 你这每次建立数据库的链接不需要时间么。。自己分析看看嘛。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/363970

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX