写了个脚本, 用来拉取远程服务器上的数据,然后存入本地,
然后我 执行 python get1.py
拉取了才5w多
脚本就卡了 不动
要好几分钟才动一下
我以为是远程数据库挂了,于是新开一个窗口执行 python get1.py 速度飞快
那就正面 不是远程 和本地数据库的问题
是终端窗口 内存用光了吗
可是我的脚本 就是要让他长期运行呀,这才拉了几万个记录,就卡成这样了
那我有好几十万的数据量 怎么办呀
大家有解决办法吗
写了个脚本, 用来拉取远程服务器上的数据,然后存入本地,
然后我 执行 python get1.py
拉取了才5w多
脚本就卡了 不动
要好几分钟才动一下
我以为是远程数据库挂了,于是新开一个窗口执行 python get1.py 速度飞快
那就正面 不是远程 和本地数据库的问题
是终端窗口 内存用光了吗
可是我的脚本 就是要让他长期运行呀,这才拉了几万个记录,就卡成这样了
那我有好几十万的数据量 怎么办呀
大家有解决办法吗
1
qq2549112 OP 经过简单排查, 发现是 查询语句 获取结果 速度很慢
查询 到了5w多, 继续查询的话,获取数据的时间会很长, 应该不可能是网络问题 因为我新开终端 再次运行这个脚本,他跑的很快 我猜测,是不是远程数据库 因为 这个连接查询的数据量太多了,所以 需要休息 太累了 |
2
20015jjw Jul 5, 2015 via Android 试试查询的时候给一个timeout呢
|
3
Gandum Jul 5, 2015 via iPad 上代码
|
4
kenken Jul 5, 2015 talk is cheap, show me the code
|
5
qq2549112 OP @Gandum
@kenken 谢谢 我的代码是这个 http://paste.ubuntu.com/11824534/ 从代码上来看 应该是没有问题 ,后来我加了个判断, 就是offset 可以整除10000的时候 就休息10秒 [也就是每次同步1w个数据,就休息10秒] , 但还是不行,还是会在5w左右的数据量 出现卡住的情况 而且每次都在 5w左右 卡住 所以我现在怀疑是远程数据库 做了什么限制 但是我不知道怎么办了 |
6
benjiam Jul 5, 2015 via Android
为什么不在5万以后断开继续
|
8
imn1 Jul 5, 2015 如果总是在固定数量出现问题,多数是
1.远端某个环节有数量限制 2.内存 3.到特定某条数据有问题 如果是数据库的问题,只能自己解决 在代码的不同运行阶段,适当加一些delete语句,把不再使用的大数据变量扔给GC自动回收 远程要用 IP 那个for可以改成表达式 最好拖数据和数据处理分开,拖到本地再处理,不要处理完再拖 多进程拖 |
9
qq2549112 OP |
12
lucky2touch Jul 5, 2015 你这需求是做增量备份?不知道原表是如何设计的,排序的消耗是很大的,除了索引之外,类似的处理方法从设计上来说还有表分区啥的。
|
13
Gandum Jul 5, 2015 via iPhone 这个代码应该没啥问题,不如每5W的时候就close,然后再重建连接试试?
|
14
Gandum Jul 5, 2015 via iPhone 反正肯定不是内存问题,python在你不引用的时候会自动进行垃圾收集
|
15
qq2549112 OP @lucky2touch 谢谢,需求是 实时的增量备份到另外一个数据库 [mysql to postgresql]
我重新发了个帖子, http://www.v2ex.com/t/203463 感谢前辈 |
16
wy315700 Jul 5, 2015 你给时间戳加一个索引看看
|
17
qq2549112 OP @Gandum 谢谢 现在我找到问题所在了,是数据库的问题 我重新发了个帖子, http://www.v2ex.com/t/203463
|