持续更新 2021大厂技术面100道MySQL经典面试题分享

22. 数据库中间件了解过吗,jdbc,mycat?
-jdbc目前是基于jdbc驱动,无需额外的proxy,因此也无需关注proxy本身的高可用 。Mycat 是基于 Proxy,它复写了 MySQL 协议,将 Mycat伪装成一个 MySQL 数据库,而 -JDBC 是基于 JDBC 接口的扩展,是以 jar 包的形式提供轻量级服务的 。
23. MYSQL的主从延迟,你怎么解决?
主从复制分了五个步骤进行:
主从同步延迟的原因
一个服务器开放N个链接给客户端来连接的,这样有会有大并发的更新操作, 但是从服务器的里面读取的线程仅有一个,当某个SQL在从服务器上执行的时间稍长 或者由于某个SQL要进行锁表就会导致,主服务器的SQL大量积压,未被同步到从服务器里 。这就导致了主从不一致,也就是主从延迟 。
主从同步延迟的解决办法
24. 说一下大表查询的优化方案25. 什么是数据库连接池?为什么需要数据库连接池呢?
连接池基本原理:
数据库连接池原理:在内部对象池中,维护一定数量的数据库连接,并对外暴露数据库连接的获取和返回方法 。
应用程序和数据库建立连接的过程:
数据库连接池好处:
26. 一条SQL语句在MySQL中如何执行的?
先看一下Mysql的逻辑架构图吧~
查询语句:
27. 引擎中的索引策略,了解过吗?28. 数据库存储日期格式时,如何考虑时区转换问题?29. 一条sql执行过长的时间,你如何优化,从哪些方面入手?30. MYSQL数据库服务器性能分析的方法命令有哪些?31. Blob和text有什么区别?32. mysql里记录货币用什么字段类型比较好?33. Mysql中有哪几种锁,列举一下?
如果按锁粒度划分,有以下3种:
34. Hash索引和B+树区别是什么?你在设计索引是怎么抉择的?35. mysql 的内连接、左连接、右连接有什么区别?36. 说说MySQL 的基础架构图
Mysql逻辑架构图主要分三层:
37. 什么是内连接、外连接、交叉连接、笛卡尔积呢?38. 说一下数据库的三大范式39. mysql有关权限的表有哪几个呢?
MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由脚本初始化 。这些权限表分别user,db,,和host 。
40. Mysql的有几种录入格式?分别有什么区别?
有三种格式哈,,row和mixed 。
41. 引擎的4大特性,了解过吗42. 索引有哪些优缺点?
优点:
缺点:
43. 索引有哪几种类型?44. 创建索引有什么原则呢?45. 创建索引的三种方式
在执行 TABLE时创建索引
CREATE TABLE `employee` (`id` int(11) NOT NULL,`name` varchar(255) DEFAULT NULL,`age` int(11) DEFAULT NULL,`date` datetime DEFAULT NULL,`sex` int(1) DEFAULT NULL,PRIMARY KEY (`id`),KEY `idx_name` (`name`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8;
使用ALTER TABLE命令添加索引
ALTER TABLE table_name ADD INDEX index_name (column);
使用 INDEX命令创建
CREATE INDEX index_name ON table_name (column);
46. 百万级别或以上的数据,你是如何删除的?47. 什么是最左前缀原则?什么是最左匹配原则?48. B树和B+树的区别,数据库为什么使用B+树而不是B树?49. 覆盖索引、回表等这些,了解过吗?50. B+树在满足聚簇索引和覆盖索引的时候不需要回表查询数据?51. 何时使用聚簇索引与非聚簇索引
52. 非聚簇索引一定会回表查询吗?
不一定,如果查询语句的字段全部命中了索引,那么就不必再进行回表查询(哈哈,覆盖索引就是这么回事) 。
举个简单的例子,假设我们在学生表的上建立了索引,那么当进行 age fromwhere age < 20的查询时,在索引的叶子节点上,已经包含了age信息,不会再次进行回表查询 。