您所在位置: 网站首页 / 文档列表 / 数据库 / 文档详情
mysql优化实战案例优化:定位问题,解决方案,优化后性能分析【实战分析】.doc 立即下载
上传人:Ja****44 上传时间:2024-09-08 格式:DOC 页数:6 大小:19KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

mysql优化实战案例优化:定位问题,解决方案,优化后性能分析【实战分析】.doc

mysql优化实战案例优化:定位问题,解决方案,优化后性能分析【实战分析】.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

PAGEPAGE6mysql优化实战案例优化:定位问题,解决方案,优化后性能分析【实战分析】在此分享一下我在开发过程中遇到的SQL优化问题,希望能对大家有所帮助,不足之处请多多指正。关于SQL优化我们关注的有三个点,分别是1.如何定位待优化的SQL,2.如何分析SQL的执行效率,3.给出优化方案。一、对于定位慢SQL,我们可以使用慢查询日志1.慢查询日志用于记录执行时间=设置的执行时间的SQL,MySQL默认关闭。2.打开慢查询日志并设置慢查询时间查看慢查询日志打开状态通过showvariableslike#39;%query%#39;命令查看慢查询日志的配置。long_query_time表示设置的慢查询时间,为10秒,表示SQL执行时间=10秒时,该条SQL会被记录到慢查询日志文件;slow_query_log表示慢查询日志的打开状态,默认为OFF,表示关闭;slow_query_log_file表示慢查询日志的文件路径;通过setglobalslow_query_log=on;命令,打开慢查询日志,通过setgloballong_query_time=1;设置慢查询时间为1秒,慢查询日志文件的路径,我们不动配置。运行命令后,我们再次查看状态,如下图所示:更改配置需要注意的是,慢查询日志的时间其实已经更改了,需要先退出客户端,重新连一下服务器,我们才能看到修改后的值。二、通过explain命令查看SQL执行效率1.首先是数据准备,我们向数据表中插入300万条数据,测试数据的生成和插入,我是通过python脚本实现的,下面我粘贴一下完整代码,大家可以参考一下#!/usr/bin/python#!coding=utf-8importpymysqlimportrandomimportstringimportsyshost=#39;127.0.0.1#39;port=3306user=#39;root#39;passwd=#39;123456#39;db=#39;demo#39;sql=#39;insertintouser(id,name,sex,age)value(%s,%s,%s,%s)#39;insert_count=sys.argv[1]conn=pymysql.connect(host,user,passwd,db,port,charset=#39;utf8mb4#39;,cursorclass=pymysql.cursors.DictCursor)cur=conn.cursor()cur.execute(#39;deletefromuser#39;)foriinrange(1,int(insert_count)):cur.execute(sql,[i,#39;#39;.join(random.sample(string.ascii_letters,6)),random.randint(0,1),random.randint(1,160)])conn.commit()cur.close()上述为完整的python脚步,大家可以根据实际情况调整,将其拷贝进文件,通过pythonfile_name.py200000,这条命令执行批量插入的动作,200000表示向数据表写入199999条数据。(ps:数据库名称demo,数据表名称:user,下图附user表结构)user表结构2.通过慢查询日志定位慢SQL慢SQL查看慢查询日志如上图所示,我们执行了一条SQL,其执行时间为1.25秒。我们设置的慢查询时间为1秒,然后,我们通过cat/var/lib/mysql/xut-slow.log命令,在慢查询日志中看到了我们执行的SQL。3.通过explain分析执行效率执行效率分析如上图,我们通过explain命令查看了这条慢SQL的执行效率,我们主要关注key这个字段,我们看到这个字段值为NULL,表示未命中索引。我们看一下user这张表的索引有哪些,如下图所示,有3个索引。user表结构注:关于explain命中执行结果的各个字段值的含义,大家可自行在网络上查询了解。三、SQL优化通过第二步的explain命令查看了SQL执行效率,我们发现语句未命中索引,所以我们最直接的思路是让其命中索引,如果查询字段未建立索引,我们可以先创建索引,创建索引的语句为altertabletable_nameaddindexindex_name(字段名称);我们发现name字段是创建了索引,但是却没有走这个索引,这是因为like做模糊查询时,我们写法是like#39;%aaaa%#39;,左边的通配符导致索引未命
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

mysql优化实战案例优化:定位问题,解决方案,优化后性能分析【实战分析】

文档大小:19KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
年会员
99.0
¥199.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用

手机号注册 用户名注册
我已阅读并接受《用户协议》《隐私政策》
已有账号?立即登录
我已阅读并接受《用户协议》《隐私政策》
已有账号?立即登录
登录
手机号登录 微信扫码登录
微信扫一扫登录 账号密码登录

首次登录需关注“豆柴文库”公众号

新用户注册
VIP会员(1亿+VIP文档免费下)
年会员
99.0
¥199.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用