2020-08-31 上周完成一个查询接口,从MySQL中查数据,速度贼慢,

原因是数据5000万+,所以真正接触优化的机会来了,所以决定好好研究一下,做一个记录。

事情是这样的,mysql表中只有两个字段,企业名称,企业统一信用代码。

目标:实现百度搜索的功能,输入关键词,就出来相关词的下拉列表。

首先第一步就是要在mysql建表,并把数据写入,写入的方法使用的是kettle中的文本文件输入,表输出,实现效果是48小时2000万条。太慢了。导完数据也不知能不能实现快速查询。

下一步,

一是尝试其他写入数据的方法。

二是,安装es,尝试es查询。

三是,了解mysql的写入优化。

四是,实现百度搜索的功能。

#该文件主要实现将txt文件传入mysql数据库

import pymysql

import re

import time,datetime

#变量初始化

# connect MySQL

con = pymysql.connect(

host= "xxxxxx",

user="root" ,

passwd="xxxxxxx" ,

db= "leeno",

port=3306 ,

charset='utf8')

def insert(con,uniscid,entname):

#数据库游标!

cue = con.cursor()

try:

cue.execute(

"insert into lihua (uniscid,entname) values(%s,%s)",

[uniscid,entname])

#执行sql语句

# print("insert success") # 测试语句

except Exception as e:

print('Insert error:', e)

con.rollback()

#报错反馈

else:

con.commit()

#真正的执行语句

def read():

count=0

filename="C:\\Users\\admin\\Desktop\\456\\456.txt"

#按行读取txt文本文档

with open(filename, 'r',encoding='utf-8') as f:

datas = f.readlines()

while True:

if datas is not None:

for data in datas:

txt=re.split(r',',data)

uniscid=txt[0]

entname=txt[1]

insert(con, uniscid, entname)

count=count+1

print(count)

if data is None:break

if datas is None:break

//正式执行过程

start = datetime.datetime.now()

print("开始时间:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())))

read()

#执行read函数

con.close()

#关闭连接

end = datetime.datetime.now()

print("结束时间:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())))

print("总用时:" + str(end - start))

注意上面的代码,是循环执行insert语句,一条条插入的。刚开始插入速度200条/秒。

怎么优化呢?

经过下面的过程

1.换服务器了,32G+4核

2.Load data local infile 卡住不显示导入数据速度

3.Kettle 写入新服务器的sql,每秒速度1500条,还是太慢

4.考虑 将 数据 转成 insert into 的sql文件,5000万条数据转成50个sql文件,利用souce sql文件 的方式,看下速度如何

其他写入数据的方法:

import pymysql

from impala.dbapi import connect

import time,datetime

import pandas as pd

start = datetime.datetime.now()

print("开始时间:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())))

data = []

filename1 = "C:\\Users\\admin\\Desktop\\123\\uniscidename_20200828_091852.txt"

i=0

with open(filename1, 'r',encoding='utf-8') as file_to_read:

while True:

lines = file_to_read.readline()

if not lines:

break

pass

uniscid=lines.split(",")[0].strip("\n")

entname = lines.split(",")[1].strip("\n")

str1 = "insert into TAX_ENTNAME_UNISCID (uniscid,entname) values"+"('" + uniscid + "','"+entname+"');"

# print(str1)

data.append(str1)

i=i+1

if (i%1000000==0 and lines is not None ):

df = pd.DataFrame(data)

df.to_csv("C:\\Users\\admin\\Desktop\\123\\"+time.strftime("%Y%m%d%H%M%S", time.localtime(time.time()))+".sql",sep='\n',header=False,index=False)

i = 0

data=[]

if(i<1000000 and lines is None):

df = pd.DataFrame(data)

df.to_csv("C:\\Users\\admin\\Desktop\\123\\" + time.strftime("%Y%m%d%H%M%S",time.localtime(time.time())) +"LAST"+ ".sql",sep='\n',header=False,index=False)

break;

end = datetime.datetime.now()

print("结束时间:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())))

print("总用时:" + str(end - start))

5000万条数据,每个企业名称查询时间 约 1分钟。

所以,打算换成elaticsearch,可是我是个小白。

下一步要实现的是

安装配置es

安装配置 kibana

安装配置logstash

利用logstash 全量或者增量导入mysql中的数据库

将数据展示在kibana

测试查询速度

mysql2013年8月怎么打出来_2020年8月31日,上周完成了一个查询接口来检查mysql的数据,速度很慢,20200831,从,MySQL,中查,贼...相关推荐

  1. mysql 按月和年累加_2020年5月播出的电视剧汇总,按时间先后顺序排列

    小伙伴们好,五月份来了,这个月的电视剧怎么说呢,柳林觉得可以用马蜂窝来形容了,这个月一共有多少部剧,柳林数了一下,差不多有四十部电视剧,就问你看不看得过来.本文是柳林后的原创文章,小伙伴们收藏好,这个 ...

  2. 2020下半年新机最新消息_2020年12月新机发布时间表_2020年12月手机发布会有哪些...

    现在是2020年的11月份,距离2020年的过去还有一个多月,在这段时间中还会有很多新机发布,其中2020年12月有哪些新机将会发布呢,小编在这里列了一个时间表,大家不妨看一看. 2020年12月新机 ...

  3. a股历史30年的大盘价_2020年7月30日大盘走势分析

    2020年7月30日大盘走势分析 严正声明:分析下面小程序炒股广告与本公众号zyh218642无关,纯属第三方平台自然生成,不要点开,谨防上当受骗. 7月份大盘走势分析 7月份大盘的多空压力与支撑位置 ...

  4. G少爷上证技术分析 8月31日

    Gieno  G少爷上证技术分析 8月31日 上周五仍然有一个向下(↓)の趋势,可以看到Slow Stochastic cross和MACD间の相互支撑~ 从整体上看,市场应该会在10月份左右试探38 ...

  5. ios王者荣耀服务器维护31号,王者荣耀iOS版3月31日无法更新怎么办 王者荣耀iOS玄雍危机版本无法更新解决方法...

    王者荣耀iOS版3月31日无法更新怎么办?3月31日王者荣耀玄雍危机版本更新,但不少iOS版的玩家发现自己无法更新,不知道是怎么回事,下面小编为大家带来了王者荣耀iOS玄雍危机版本无法更新解决方法,要 ...

  6. s19王者荣耀苹果服务器维护,王者荣耀3月31日更新失败解决方法 S19IOS更新失败怎么办...

    王者荣耀在3月31日上线了新的S19赛季内容,相信不少玩家都很期待这次的更新吧.这次的游戏作为一个比较大的版本更新,有一些问题也在所难免,最近就有很多玩家表示王者荣耀ios版更新失败了.遇到这样的情况 ...

  7. 用户月活跃度在哪里可以查_2020年12月计算机等级考试报名时间,另外11月6号可以查9月考试成绩...

    点击4S工作室,轻松关注!! 考试时间 2020年12月5日-12月6日 最后一次考Office 2010 2020年12月NCRE并非全国统一考试,只有这几个省开考: 天津.上海.福建.湖南.重庆. ...

  8. resnet50能用cpu跑吗_2020年12月1日更新。性价比最高入门游戏CPU--intel 10100F装机配置推荐。...

    牙膏厂终于发布了入门级性价比最高的十代CPU,inte i3 10100F.10100F采用LGA1200芯片接口,四核八线程,主频3.6GHz,睿频可以到4.3Ghz.TDP功耗65w,支持双通道D ...

  9. access 动态 top 条件_2020年10月抖音直播营销报告_行业动态

    这个月,我们不仅享受了中秋.国庆双节的8天超长假期,还迎来了双十一电商购物节的预热洗礼,那么10月期间抖音直播有什么需要留意的营销新趋势吗? CC数据基于2020年10月1日-10月27日追踪到的数据 ...

最新文章

  1. Ubuntu 安装VMware Tools 报Read-only file system问题解决
  2. CSS3学习系列之颜色
  3. nc65右键生成菜单_DbSchema生成表单和报表,原来如此简单
  4. Nginx 配置 SSL 及 HTTPS 协议通信过程
  5. 倒计时按钮_办公小技巧:轻松玩转PPT秒针倒计时
  6. gitea无法连接mysql_Git push ERROR: Repository not found fatal:无法连接远程数据库
  7. mysql的jar包文件在哪找_数据库的jar在哪找
  8. lighty2.0沙箱版本的协议和配置分析采用ragel 成功案例
  9. 安卓(Android)的原生系统真的那么好用吗
  10. 大数据和 AI 驱动创新实例分享
  11. 微信小程序微商城(五):动态API实现商品详情页(下)
  12. 戴尔服务器虚拟 介质,使用Dell R710 IDRAC挂载虚拟介质
  13. 【绝对管用】彻底的卸载干净oracle 11g
  14. 装机软件测试工资,实际性能测试及总结_DIY攒机装机不求人-中关村在线
  15. 各大搜索引擎收录地址
  16. C语言/C++常见习题问答集锦之哆啦A梦
  17. ath9k网卡驱动相关
  18. SpringCloud重试机制配置
  19. 动能方案|智能门锁超低功耗读卡方案
  20. 如何用Unity制作“最高得分”

热门文章

  1. Python 之父为什么嫌弃 lambda 匿名函数?
  2. 2018 百越杯 pwn(Boring Game Write up)
  3. Netty Channel源码分析
  4. python接口自动化5-Json数据处理
  5. Linux命令(30):tar命令-归档工具
  6. 为分支机构和移动人员实施路由的导图
  7. 画布之轮播图片HTML5,Axure原型设计之轮播图
  8. id文本框适应文字_国家宣布!快递要大降价?个人ID将取代邮政编码
  9. android自定义文件选择,关于安卓自定义本地文件选择库的实现
  10. python判断密码是否正确_第一个python程序-判断登陆用户名和密码是否正确