MySQL刷题题库,收藏好,甩给面试官!

1.MySQL中InnoDB和MyISAM存储引擎的区别是什么?

InnoDB和MyISAM是MySQL中两种常见的存储引擎,它们的主要区别包括:

1、事务支持: InnoDB支持事务,而MyISAM不支持。

2、行级锁和表级锁: InnoDB提供行级锁,MyISAM提供表级锁。

3、外键支持: InnoDB支持外键约束,MyISAM不支持。

4、全文索引: MyISAM支持全文索引,而InnoDB在较早版本中不支持。

5、数据恢复: InnoDB提供事务日志,支持崩溃恢复。

6、存储限制: MyISAM支持较大的表,而InnoDB的表大小受到文件系统的限制。

2.MySQL中的索引类型及其使用场景。

MySQL中常见的索引类型包括:

1、B-Tree索引: 适用于全值匹配、匹配列前缀、匹配范围值、精确匹配和ORDER BY操作。

2、哈希索引: 适用于等值查询,但不支持范围查询。

3、全文索引: 用于全文搜索,主要在MyISAM引擎中。

4、空间索引: 用于地理数据存储。

5、复合索引: 包含多个列,适用于多列的查询条件。

根据不同的查询需求选择合适的索引类型可以显著提高查询效率。

3.MySQL中如何实现高效的分页查询?

在MySQL中实现高效分页查询的方法包括:

1、避免OFFSET的大数值: 使用LIMIT时,较大的OFFSET值会导致性能问题。

2、使用覆盖索引: 确保查询只需要访问索引,不需要回表。

3、查询缓存: 利用查询缓存来存储分页结果,适用于数据变化不频繁的场景。

4、记住上次查询的最后位置: 而不是使用OFFSET。

4.MySQL中的锁机制有哪些类型?

MySQL中的锁机制包括:

1、表级锁: 锁定整个表,实现简单,开销小,但并发能力弱。

2、行级锁: 锁定单独的行,开销大,但并发能力强。

3、页面锁: 锁定相邻的一组行,是表级锁和行级锁的折中。

4、意向锁: InnoDB特有,用于指示行级锁的存在。

5、共享锁和排他锁: 共享锁允许其他事务读取,排他锁不允许其他事务访问。

5.MySQL中的事务隔离级别及其特点。

MySQL支持四种事务隔离级别,每种级别都有其特点:

1、READ UNCOMMITTED(未提交读): 最低级别,允许读取未提交的数据变更,可能会导致脏读、不可重复读和幻读。

2、READ COMMITTED(提交读): 允许读取并发事务已提交的数据,可以避免脏读,但不可重复读和幻读仍然可能发生。

3、REPEATABLE READ(可重复读): MySQL默认级别。保证在同一个事务中多次读取同样数据的结果一致,但幻读可能发生。

4、SERIALIZABLE(可串行化): 最高隔离级别,强制事务串行执行,避免脏读、不可重复读和幻读,但并发性能最差。

根据应用的具体需求选择合适的隔离级别,以平衡一致性和性能。

6.MySQL如何处理死锁?

MySQL处理死锁的方法包括:

1、死锁检测: InnoDB引擎具有死锁检测机制,能够检测到死锁并回滚一部分事务来解除死锁。

2、超时机制: 设置锁等待超时时间(innodb_lock_wait_timeout),超过时间未获得锁则事务回滚。

3、避免策略: 如避免长事务,合理设计索引和查询逻辑,减少锁竞争。

4、手动干预: 分析锁等待和死锁日志,手动终止相关事务。

7.MySQL中的ACID是什么?

ACID是事务的四个基本特性:

1、原子性(Atomicity): 事务作为一个整体被执行,要么全部完成,要么全部不执行。

2、一致性(Consistency): 事务必须使数据库从一个一致性状态转换到另一个一致性状态。

3、隔离性(Isolation): 事务的执行不被其他事务干扰。

4、持久性(Durability): 一旦事务提交,其结果就是永久性的。

这些特性确保了数据库事务的可靠性和稳定性。

8.MySQL的索引覆盖是什么及其优点。

索引覆盖是指一个查询语句的所有字段都是从同一个索引中直接获取,而不需要回表查询原始数据。其优点包括:

1、减少IO操作: 由于数据可以直接从索引中获取,减少了对数据表的访问。

2、提高查询效率: 索引通常比数据行小,读取索引更快。

3、减少磁盘空间的使用: 因为避免了数据文件的访问。

4、优化查询计划: 使得数据库优化器可以选择更有效的执行计划。

使用索引覆盖是提高数据库查询性能的有效手段之一。

9.MySQL中的GROUP BY与ORDER BY有什么区别?

GROUP BY和ORDER BY在MySQL中用于不同的目的:

1、GROUP BY: 用于根据一个或多个列对结果集进行分组,通常与聚合函数(如SUM、COUNT等)一起使用,用于生成分组后的汇总数据。

2、ORDER BY: 用于对查询结果按照一个或多个列进行排序。可以指定升序(ASC)或降序(DESC)。

简而言之,GROUP BY用于数据分组,ORDER BY用于数据排序。

10.MySQL中的慢查询日志及其如何使用。

MySQL的慢查询日志是用来记录执行时间超过设定阈值的SQL语句。使用方法包括:

1、开启慢查询日志: 通过设置slow_query_log参数为1来开启。

2、设置阈值: 通过long_query_time设置执行时间阈值,超过这个值的查询将被记录。

3、日志分析: 使用工具如pt-query-digest分析慢查询日志,找出性能瓶颈。

慢查询日志是优化数据库性能的重要工具。

全部评论

相关推荐

秋招上岸字节sp有三段实习 换过五家公司做过java 做过go 做过前端对实习有一点自己的感悟1 实习重要嘛?我认为实习是必须的,想要秋招稳稳找到不错的工作,2-3段实习是绝对需要的如果没有实习经历你就只能写项目经历 但由于大家都有实习 面试官会自然而然把你的项目经历当作玩具项目,有些大神0实习拿offer的毕竟少数2 为什么需要实习?同等学历下 实习越好 越有机会进面实习高两个档次 约等于 学校高一个档次两段大厂211  > 两段小厂985 (不绝对)面试官是招人进来干活的 211 985 学历已经够门槛了 就更多地看工作能力 面试官会觉得实习过的人有过工作经验,带起来更好带3 实习选大厂还是中厂?大厂核心部门 > 中厂核心部门 > 大厂边缘部门但其实这并不绝对 因为你直到真正进去做事之前 你都不知道你做的事情有没有价值所以我建议 🈶️大厂实习 无脑大厂4 实习真的不要太老实有人说我实习一直在打杂,我简历上就真的只写打杂的活,最后的结果就是根本没有面试机会,这是很不对的做法我建议大家入职开始就偷文档,看看古早的代码干了什么,记住一句话:“你的mentor干了什么,你就干了什么”5 不要all in实习我身边有很多今年秋招等到九月底,发现没有转正名额才走秋招的,所以大家不要过度相信部门hc你要记住,想要你的没有hc也会去帮你争取,不想要这个位子就算空着也是没有hc6 离开不代表你不够优秀当你决定去找实习,并且真的干了之后,你就已经比别人优秀很多了,往往实习生的留或走有多方面的因素,可能是真的hc不足,可能是觉得你交流不够,但这都不能否定你的优秀7 一人一城也不证明你很忠诚我有个朋友 在一家公司实习了九个月,秋招不给转正offer 来年就算转正也比校招进去的白菜低3k如果当你觉得你已经摸清了公司的业务,并且每天干的活开始大量重复的时候,我建议你可以开始准备找下一份实习了不同的公司能帮助你积攒对于职场的认识,同时不断提高和各种人周旋的能力,也能帮你了解不同公司的技术栈和文档8 我有实习 但为什么还是没有面试这个时候往往要看是不是简历出了问题 很多人实习做的都是crud 因此真的就只写crud 或者写的很简单 让面试官没有问的欲望你要记住这么一个口诀“问题场景 + 方法调研 + 落地实施 + 兜底策略 + 总结复盘”夸张点说,你简历上的任何一个技术点,如果面试官问道,你不能和面试官吹三分钟牛逼 那可以认为这个技术点是没用的
想实习转正,又想准备秋招...
点赞 评论 收藏
分享
评论
1
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务