工作中遇到的问题:百万条数据的查询、删除、修改效率提高的一些思考,解决方案(二)
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()
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()
相关文章推荐
- 工作中遇到的问题:百万条数据的查询、删除、修改效率提高的一些思考,解决方案(一)
- 对cookie操作的时候遇到了一些的 删除、修改、查询不了问题,看来篇文章发现不错,抓一下
- .Net开发工作中常遇到的一些问题及解决方案
- Excel的一些工作中不算是常见,但是遇到时常常不知所错的,问题,与解决方案。
- 几个查询优化小技巧,可以大大提高效率并解决一些问题
- 工作中遇到的问题--使用注解进行增加删除修改的验证
- 利用postgresql进行缓冲区内对象检测过程中遇到的sql查询效率问题解决方案记录
- mysql 关于查询时间的中工作中遇到的一些问题 有代表性的
- 工作时遇到的一些问题解决
- 数据库优化及提高大量数据的查询效率
- 如何解决使用addBatch()和executeBatch()无法批量增加删除修改数据库数据等问题
- SQL 单表查询的一些常用语句和函数及单表的插入修改删除操作
- PCL:遇到的一些问题及解决方案
- js在工作中遇到的一些问题
- mysql遇到的一些常用的查询小问题
- 工作中遇到的一些前端问题
- 工作中遇到的Hibernate的问题(HQL查询,非SQL)
- 编程中遇到的一些问题及解决方案
- web开发快速提高工作效率的一些资源
- 在ORACLE中给已有数据的表增加、修改、删除一个字段(或一个列)或者多个字段(或多个列)的问题