面试难点SQL优化问题
MySQL基本是每个后台面试者必问的问题,而SQL优化又是MySQL中重之又重的一块了。如果你的SQL优化回答的好,有条理,那你入取的概率就大大提升了。比如,现在有个面试官说,现在线上有个SQL执行很慢,你怎么优化?
这种时候最好分几步回答,不要一上来就说,该怎么怎么写SQL,面试时要学会,跳出来,看全貌,装进去,看本质。慢SQL语句的几种常见诱因?
在这个时候,就可以说,面试官,您好,我觉得SQL慢出现的原因可以分为以下几种,切记,不要回答自己模糊不清的,没法自圆其说的即使知道你也别回答,不然就是给自己挖坑无索引、索引失效导致慢查询
如果表很大,而对where或者orderby后面字段没有建立索引,那这种情况查起来肯定很费力。但是有时候建立了索引,但在一些特定的场景下,索引还有可能会失效,所以索引失效也是导致慢查询的主要原因之一。失效场景很多,比如模糊查询白分号在前、查询的字段使用了函数或者做了计算操作都有可能导致索引失效。锁等待
InnoDB存储引擎支持行锁和表锁,我们要注意行锁升级为表锁的可能。在批量更新操作时,行锁就很可能会升级为表锁。
MySQL认为如果对一张表使用大量行锁,会导致事务执行效率下降,从而可能造成其它事务长时间锁等待和更多的锁冲突问题发生,致使性能严重下降,所以MySQL会将行锁升级为表锁。还有,行锁是基于索引加的锁,如果我们在更新操作时,条件索引失效,那么行锁也会升级为表锁。
除了锁升级之外,行锁相对表锁来说,虽然粒度更细,并发能力提升了,但也带来了新的问题,那就是死锁。不恰当的SQL语句
使用不恰当的SQL语句也是慢SQL最常见的诱因之一。例如,习惯使用,SELECTCOUNT(em)SQL语句,在大数据表中使用分页查询,以及对非索引字段进行排序等等。liul对于一些慢的SQL,我该怎么分析?
上面我说了一些关于SQL执行慢的原因,下面就该看看怎么分析这些SQL了找出慢SQL
开启慢查询,慢查询是分析SQL执行慢的常见手段,主要有这几个参数,slowquerylog:慢查询开启状态,slowquerylogfile:慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录),longquerytime:查询超过多少秒才记录。通过EXPLAIN分析SQL执行计划通过ShowProfile分析SQL执行性能平时写SQL时该注意什么?有什么经验可谈?
到这里,如果面试官还在听你回答,这时候,你可以适当提高一点语气,说对于一些慢SQL,有很大一部分是由于我们开发者写SQL时不注意SQL优化导致的,那么我就说一下我知道的一些注意事项(提高声音分贝,以防面试官睡着,并敲重点,告诉面试官,我准备装逼了,哈哈哈)统计时尽量使用count(),count()count(1),大于count(主键)。如果明确查找一条语句,请使用limit1;,因为找到一条符合条件的记录后就不会继续查找了。优化分页查询避免Select
用到什么字段就具体写什么字段,原因除了select查询所有字段会多出网络传输开销之外,还有更重要的一点是,select无法使用覆盖索引。尽量使用MySQL5。6以后的版本对于使用索引方面对索引字段做函数操作或者做运算操作,都不能使用上索引。
所以针对这一点,除了我们索引的字段不要加函数之外。还要注意一些隐式转换,比如,交易日志表(tradelog),tradeid的字段类型是varchar(32),字段有索引,但是当你执行selectfromtradelogwheretradeid110717;语句,你发现走的还是全索引扫描。这是因为它其实做了类型转换,相当于这么执行mysqlselectfromtradelogwhereCAST(tradidASsignedint)110717;。隐式字符编码转换
如果两张表使用的编码集不一致,比如一个是utf8mb4,一个是utf8,那么这两个字段连接后,相当于做了一次CONVERT(traideidUSINGutf8mb4),这样也用不了索引。其实字符集不同只是条件之一,连接过程中要求在被驱动表的索引字段上加函数操作,是直接导致对被驱动表做全表扫描的原因。
去年我国5G手机出货量达2。66亿部来源:人民网本报北京1月18日电(记者韩鑫)中国信息通信研究院18日发布去年12月国内手机市场运行分析报告。报告显示,2021年12月,国内市场手机出货量3340。1万部……
商务部运力紧张,价格暴涨10倍!天价运费降临9月1日起,中通、圆通、申通、百世、韵达、极兔等6家快递企业全网末端派费每票上涨0。1元。消息一经发布,引发全国热议,网友称:什么都涨,就是工资不涨来源:新浪微博……
电商的未来是京东而不是阿里(01)电商已成为覆盖全国的巨型产业2014年和朋友聊起电商,我坚持认为京东会发展壮大,而以淘宝为代表的阿里会衰落。朋友不以为然,认为淘宝覆盖面广,已是庞然大物,衰落是不现实的。……
一个云闪付走天下要把微信支付宝的壁垒都打通近期,有网友反映称,现在通过银联云闪付App可以直接扫描微信的二维码收款完成支付。使用银联云闪付向微信二维码付款后,微信会收到一条收款提示,和使用微信付款一致,并不会特意强调来……
华为鸿蒙系统摆脱APP薄弱局面!国内开发者力挺自鸿蒙系统问世后就一直处于一种尴尬的局面,安卓、iOS系统已经完善得尽善尽美,多数APP也是以这两个系统为基地开发的,这就让鸿蒙系统的APP生态环境极其薄弱,甚至还有人担心,更……
iphone12使用两个月评价iphone12入手已经有了两个月了,但是这部手机对小编的体验相比iPhone11来说差别并不是太大,只能说中规中矩。本人入手的是绿色128GB版本屏幕给小编感受最深的就……
华为手机逐渐失去民心了吗?从来没失去我这颗民心,不知你所谓的失去民心数据从何而来〔黑线〕从来不曾!!!一直在用华为,今年又买了华为手表!很好用啊,比我之前用的水果机并不差。这是个……
电风扇要变天!竞争对手强势崛起,美的老大位置还能坐多久?本文为《2021年家电爆款产品榜单》系列文章之电风扇篇。数据源自于京东、天猫、淘宝、苏宁易购、国美在线,2021年上半年电风扇品类的合计销售数据。这可能是全网最全、……
吴某凡以涉嫌强奸罪被批准逮捕,软银回应放弃国内市场1、北京朝阳检方:吴某凡以涉嫌强奸罪被批准逮捕(新浪科技)2021年8月16日,北京市朝阳区人民检察院经依法审查,对犯罪嫌疑人吴某凡以涉嫌强奸罪批准逮捕。2、投资阿……
手机多久一换最合适?这些套路你都知道吗?手机现在几乎成了日常生活的必备工具,我们都在使用手机,但不同的人使用习惯和使用频率都存在不小的差异。这就导致了一个结果:不同的人,换手机的频率也各不相同。手机重度使用者,或者追……
大数据杀熟不能再杀了,算法推荐不能乱推了通过大数据杀熟实施不合理差别待遇,利用算法诱导用户沉迷网络、过度消费当前,算法技术广泛渗入互联网应用,在给用户带来一定程度便利的同时,由算法引发的侵害用户权益问题也屡屡出现。……
老人买手机的那件事最近自己的手机坏了,打算买一个新的智能手机,就到镇上的手机店里看看。走进店里,店里的美女问我要多少钱的手机?我说要买1000元左右的手机,她推荐了一台红米9a,说这台手机999……