多进程对 MySQL update的影响
今天要做数据清洗的时候,要更新一个数据库字段,考虑到用多进程去更新数据库,也许程序会跑得快一些,结果开了64个进程,
结果是其他程序更新的时候,速度非常慢,最后发现的原因是,数据库中有64个SQL语句执行更新,这样就导致了对数据库进行增删改查的速度很慢。
这是一个血的教训,所有以后的操作尽量少用多进程更新数据库。即使是想用多进程进行SQL update,可以少开几个进程,提升效果比较明显
粘贴查来代码,以供以后学习参考
#-*-coding:utf-8-*- from common.contest import *
import time def spider(item): print "正在清晰地url是:", item['item_url'] item_url = item['item_url']
item_lotnum1 = item['item_lotnum']
item_sold = item['item_sold']
artron_session_url = item['artron_session_url']
artfoxlive_session_url = item['artfoxlive_session_url']
print item_lotnum1
print item_sold try:
item_lotnum2 = "@@@" + item_lotnum1 + "@@@"
item_lotnum = re.findall('@@@000(.*?)@@@',item_lotnum2)[0]
except:
try:
item_lotnum2 = "@@@" + item_lotnum1 + "@@@"
item_lotnum = re.findall('@@@00(.*?)@@@', item_lotnum2)[0]
except:
try:
item_lotnum2 = "@@@" + item_lotnum1 + "@@@"
item_lotnum = re.findall('@@@0(.*?)@@@', item_lotnum2)[0]
except:
item_lotnum = item_lotnum1 item_sold_cur_spider = ""
if '流拍' in item_sold:
item_sold = -2
item_sold_cur_spider = -2
elif '撤拍' in item_sold:
item_sold = -3
item_sold_cur_spider = -3 elif '落槌价' in item_sold:
item_sold1 = str(item_sold).replace('落槌价', '').replace(':', '').replace(',', '').replace(':', '').replace(' ', '').replace(' ', '')
item_sold = re.findall('\d+', item_sold1)[0]
item_sold_cur_spider = re.findall('[^\d]+', item_sold1)[0] else:
pass print item_sold
print item_sold_cur_spider
print artron_session_url
print artfoxlive_session_url item_lotnum = item_lotnum.replace('@','')
print item_lotnum sql = 'update spider_yachang_2017_2_update_sold_price set item_sold_price_spider2 = %s, item_sold_cur_spider2 = %s
where session_url=%s and item_lotnum= %s '
data = (str(item_sold), str(item_sold_cur_spider), str(artron_session_url), str(item_lotnum))
update_data1(sql, data=data) if __name__ == "__main__":
time1 = time.time()
sql = """
SELECT
*
FROM
oversea_artfoxlive_2017_2_detail_info
""" resultList = select_data(sql)
print len(resultList)
pool = multiprocessing.Pool(64)
for item in resultList:
# print "正在爬取的位置是:",resultList.index(item)
# spider(item)
pool.apply_async(spider, (item,))
pool.close()
pool.join()
多进程对 MySQL update的影响的更多相关文章
- mysql update受影响的行数为0或查询结果为空时
当执行update语句时,如果受影响的行数是0,返回的也是true. $conn = new mysqli(); $sql = "update ..."; $query = $co ...
- 记录一下MySql update会锁定哪些范围的数据
目录 1.背景 2.前置知识 2.1 数据库的隔离级别 2.2 数据库版本 2.3 数据库的存储引擎 2.4 锁是加在记录上还是索引上 2.5 update...where加锁的基本单位是 2.6 行 ...
- MySQL update语句和insert插入语句写法完全不一样啊,不要搞混
1.mysql update 语句: update user set name = 'xiaoming',age = 18 where uid = 3000; 更新记录时update操作也不需要写ta ...
- Mysql update error: Error Code: 1175. You are using safe update mode and you tried to update a table
Mysql update error: Error Code: 1175. You are using safe update mode and you tried to update a table ...
- MySQL UPDATE
MySQL UPDATE 查询 如果我们需要修改或更新MySQL中的数据,我们可以使用 SQL UPDATE 命令来操作.. 语法 以下是 UPDATE 命令修改 MySQL 数据表数据的通用SQL语 ...
- mysql update语句
UPDATE ClientBankInfo SET status = 3 WHERE sn IN (SELECT sn FROM zjzc.ClientBankInfo WHERE cardNo IN ...
- Mysql update语句赋值嵌套与在表列中数据后面增加数据
1.Mysql update语句赋值嵌套select 点击(此处)折叠或打开 update a set col=(select col from a where id='5') where id&g ...
- Mysql update in报错 [Err] 1093 - You can't specify target table 'company_info' for update in FROM clause
Mysql update in报错 解决方案: [Err] 1093 - You can't specify target table 'company_info' for update in FRO ...
- MySQL UPDATE 查询
MySQL UPDATE 查询 如果我们需要修改或更新MySQL中的数据,我们可以使用 SQL UPDATE 命令来操作.. 语法 以下是 UPDATE 命令修改 MySQL 数据表数据的通用SQL语 ...
随机推荐
- Callable、Future&阻塞队列&阻塞栈
Callable.Future 简单应用 在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写.或者干脆绕过这道坎,走别的路了.现在Java终于有可返回值的任务( ...
- 【MySQL】MySQL统计NULL字段处理
select A.user_id,ifnull(sum(ifnull(A.ex_cpu,0)),0) AS a0, ifnull(sum(ifnull(A.ex_mem,0)),0) AS a1, i ...
- [Algorithm] Radix Sort Algorithm
For example we have the array like this: [, , , , , ] First step is using Counting sort for last dig ...
- 剑指offer面试题12-打印1到最大的n位数
题目: 输入一个数字n,按顺序打印出从1最大的n位十进制数.比方输入3,则打印出1.2.3最大的三位数即999 这道题的主要陷阱就在大数的处理,仅仅要将这个考虑进去,用字符串来表示.就好说了. 那差点 ...
- Cocos2d-x 3.0多线程异步资源载入代码
// AppDelegate.cpp bool AppDelegate::applicationDidFinishLaunching() { - - FlashScene* scene = Flash ...
- java编程思想 第四版 第六章 个人练习
欢迎加群:239063848 进群须知:本群仅用于技术分享与交流.问题公布与解答 禁止闲聊.非诚勿扰 练习1:(1)在某个包中创建一个类,在这个类所处的包的外部创建该类的一个实例. import mi ...
- STL - Unorderedset - 自定义哈希函数
1. hash工具类 hashval.hpp #ifndef _Core_HashVal_H_ #define _Core_HashVal_H_ #include <functional> ...
- php之快速入门学习-18(PHP 面向对象)
PHP 面向对象 在面向对象的程序设计(英语:Object-oriented programming,缩写:OOP)中,对象是一个由信息及对信息进行处理的描述所组成的整体,是对现实世界的抽象. 在现实 ...
- 使用QQ截图右键菜单
(1)登录QQ: (2)同时按住Shift+Ctrl+Alt+A四个键,然后点击右键: (3)松开Shift键(只松开Shift键,其他键不要松开).惊喜出现了吧!
- spring常用注解以IOC理解
使用注解来构造IoC容器 用注解来向Spring容器注册Bean.需要在applicationContext.xml中注册<context:component-scan base-package ...