您的位置:首页 > 其它

工作中遇到的问题:百万条数据的查询、删除、修改效率提高的一些思考,解决方案(二)

2015-04-21 13:44 696 查看
1、在数据库中为需要where的字段建立索引:

create index mesh_idex on road_2015(mesh);(create index 索引名 on 表名(字段名))

在数据库中按照mesh字段建立索引后,对于15905283条数全部的version字段按照mesh字段进行update的单进程耗时为32分钟。

2、使用多进程:

python多线程:

#第个进行程的执行函数

def in_one_thread(partition, job_conf):

...

...

def do_first_diff_multi_thread(job_conf, name_dict):

logger.notice_log("now begin first diff job!")

mid_data_path = job_conf["mid_data_path"]

if os.path.exists(mid_data_path):

shutil.rmtree(mid_data_path)
os.makedirs(mid_data_path)

thread_num = 6

city_list = sorted(name_dict.keys())

###对全部城市按照线程进行任务分区

partition_num = len(name_dict)/thread_num

thread_list = []

for i in range(thread_num):

####如果是最后一组,就将多余的城市分到最后一组

if i == thread_num - 1:

partition = city_list[i*partition_num:]

proc = Process(target=in_one_thread, args=(partition, job_conf,))

thread_list.append(proc)

continue

partition = city_list[i*partition_num: (i+1)*partition_num]
#####这一步极为重要进程函数的调用
proc = Process(target=in_one_thread, args=(partition, job_conf))
thread_list.append(proc)

###启动全部进程

for p in thread_list: p.start()

###等待全部进程反回

for p in thread_list: p.join()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: