广州微信网站建设公司小程序源码怎么搭建
news/
2025/9/27 7:17:09/
文章来源:
广州微信网站建设公司,小程序源码怎么搭建,企业做网站和开展电子商务的好处,建设银行的网站是什么MySQL数据库面试题#xff1a;如何定位慢查询#xff1f; 面试官#xff1a;MySQL中#xff0c;如何定位慢查询#xff1f; 候选人#xff1a;嗯~#xff0c;我们当时做压测的时候有的接口非常的慢#xff0c;接口的响应时间超过了2秒以上#xff0c;因为我们当时的系…MySQL数据库面试题如何定位慢查询 面试官MySQL中如何定位慢查询 候选人嗯~我们当时做压测的时候有的接口非常的慢接口的响应时间超过了2秒以上因为我们当时的系统部署了运维的监控系统Skywalking 在展示的报表中可以看到是哪一个接口比较慢并且可以分析这个接口哪部分比较慢这里可以看到SQL的具体的执行时间所以可以定位是哪个SQL出了问题。如果项目中没有这种运维的监控系统其实在MySQL中也提供了慢日志查询的功能可以在MySQL的系统配置文件中开启这个慢日志的功能并且也可以设置SQL执行超过多少时间来记录到一个日志文件中我记得上一个项目配置的是2秒只要SQL执行的时间超过了2秒就会记录到日志文件中我们就可以在日志文件找到执行比较慢的SQL了。
面试官那这个SQL语句执行很慢如何分析呢 候选人如果一条SQL执行很慢的话我们通常会使用MySQL自带的执行计划EXPLAIN来查看这条SQL的执行情况。通过EXPLAIN可以查看到SQL的执行计划包括索引使用情况、表扫描次数、表连接方式等。具体可以从以下几个方面进行分析
索引使用情况查看key和key_len检查是否命中了索引。如果使用了索引可以判断索引是否有失效的情况。查询类型查看type字段判断是否存在全索引扫描或全盘扫描可以进一步优化SQL。回表查询查看extra字段判断是否出现了回表的情况如果出现了可以尝试添加索引或修改返回字段来修复。
面试官了解过索引吗什么是索引 候选人嗯索引在项目中还是比较常见的它是帮助MySQL高效获取数据的数据结构主要用于提高数据检索的效率降低数据库的IO成本。同时通过索引列对数据进行排序降低数据排序的成本也能降低了CPU的消耗。
面试官索引的底层数据结构了解过嘛? 候选人MySQL的默认存储引擎InnoDB采用的是B树的数据结构来存储索引。选择B树的主要原因有三个方面第一B树的阶数更多路径更短第二磁盘读写代价更低非叶子节点只存储指针叶子节点存储数据第三B树便于扫库和区间查询叶子节点是一个双向链表。
面试官B树和B树的区别是什么呢 候选人B树和B树都是多路搜索树但在实际应用中有一些区别
存储数据位置在B树中非叶子节点和叶子节点都会存放数据而B树的所有数据都出现在叶子节点。范围查询效率在进行范围查询时B树效率更高因为B树的所有数据都在叶子节点存储并且叶子节点是一个双向链表更适合范围查询。
面试官什么是聚簇索引什么是非聚簇索引? 候选人好的~聚簇索引主要是指数据与索引放到一块B树的叶子节点保存了整行数据有且只有一个。一般情况下主键作为聚簇索引的索引字段。
非聚簇索引是数据与索引分开存储B树的叶子节点保存对应的主键可以有多个。一般我们自己定义的索引都是非聚簇索引。
面试官知道什么是回表查询嘛? 候选人嗯其实跟刚才介绍的聚簇索引和非聚簇索引是有关系的。回表的意思就是通过二级索引找到对应的主键值然后再通过主键值找到聚簇索引中所对应的整行数据这个过程就是回表。
【备注如果面试官直接问回表则需要先介绍聚簇索引和非聚簇索引】
面试官知道什么叫覆盖索引嘛? 候选人嗯~清楚的。覆盖索引是指SELECT查询语句使用了索引在返回的列必须在索引中全部能够找到。如果我们使用id查询它会直接走聚簇索引查询一次索引扫描直接返回数据性能高。
如果按照二级索引查询数据时返回的列中没有创建索引有可能会触发回表查询。尽量避免使用SELECT *尽量在返回的列中都包含添加索引的字段。
面试官MySQL超大分页
怎么处理 候选人嗯超大分页一般是在数据量比较大时我们使用了LIMIT分页查询并且需要对数据进行排序。这个时候效率就很低。我们可以采用覆盖索引和子查询来解决。
先分页查询数据的id字段确定了id之后再用子查询来过滤只查询这个id列表中的数据就可以了。因为查询id的时候走的覆盖索引所以效率可以提升很多。
面试官索引创建原则有哪些 候选人嗯索引的创建需要谨慎毕竟添加索引也会导致新增改的速度变慢。通常情况下我们会从以下几个方面考虑
数据量表中数据量超过10万以上考虑创建索引。查询频率添加索引的字段是查询比较频繁的字段例如作为查询条件、排序字段或分组的字段。复合索引使用复合索引来创建尽量使用覆盖索引将返回的列都包含在添加索引的字段中。类型选择字段的类型选择也要结合字段内容来选择合适的类型例如数值类型和字符串类型。索引数量控制索引的数量也要控制避免过多的索引导致查询性能下降。
面试官什么情况下索引会失效 候选人嗯索引失效的情况比较多我说一些自己的经验。常见的失效情况有
最左前缀原则如果索引的最左前缀没有被用到索引会失效。模糊查询如果%号在前面索引会失效。运算操作或类型转换如果在添加索引的字段上进行了运算操作或者类型转换索引会失效。范围查询在复合索引中如果左边的字段使用了范围查询右边的条件索引会失效。字段类型字段类型的选择也会影响索引是否失效。
所以通常情况下想要判断这条SQL是否有索引失效的情况可以使用EXPLAIN执行计划来分析。
面试官SQL的优化经验 候选人嗯这个在项目还是挺常见的当然如果直说SQL优化的话我们会从以下几方面考虑
建表优化在定义字段时结合字段的内容来选择合适的类型根据实际情况选择数值类型或字符串类型等。索引使用合理使用索引选择适当的字段作为索引字段尽量使用覆盖索引来提高查询性能。SQL编写优化SQL语句的编写避免模糊查询的使用尽量在返回的列中包含添加索引的字段。主从复制与读写分离考虑主从复制和读写分离来分担数据库的读写压力。分库分表如果数据量较大可以考虑分库分表来优化查询性能。
面试官创建表的时候你们是如何优化的呢 候选人这个我们主要参考的阿里出的那个开发手册《嵩山版》。例如在定义字段时需要结合字段的内容来选择合适的类型如果是数值类型选择TINYINT、INT、BIGINT等类型根据实际情况选择。如果是字符串类型也是结合存储的内容来选择CHAR和VARCHAR或者TEXT类型等。遵循开发手册的规范可以提高表的查询性能和存储效率。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/919135.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!