1 Star 0 Fork 31

阿明 / Ebooks

forked from Java精选 / Ebooks 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
最新面试题2021年常见MySQL面试题及答案汇总.md 7.24 KB
一键复制 编辑 原始数据 按行查看 历史

最新面试题2021年常见MySQL面试题及答案汇总

全部面试题答案,更新日期:01月30日,直接下载吧!

下载链接:高清500+份面试题资料及电子书,累计 10000+ 页大厂面试题 PDF

MySQL

题1:如何判断 MySQL 是否支持分区?

如果mysql5.6以下版本,使用SHOW VARIABLES语句来确定MySQL数据库是否支持分区:

show variables like '%partition%';

如果查询结果显示Empty,表示不支持分区,反之have_partintioning的值为YES,表示支持分区。但是需注意的此方式只针对mysql5.6以下版本。

如果mysql5.6及以上版本,需要使用show plugins;查询命令。查询方法显示所有插件,有红色部分(如下)的话,表示支持分区。

partition                  | ACTIVE   | STORAGE ENGINE     | NULL    | GPL  

题2:MySQL 中 InnoDB 引擎 4大特性,了解过吗?

插入缓冲(insert buffer)

二次写(double write)

自适应哈希索引(ahi)

预读(read ahead)

题3:MySQL 中什么情况下设索引失效?

1、如果条件中有or,即使其中有条件带索引也不会使用,如果使用or想让索引生效,只能将or条件中的每个列都加上索引。

2、对于多列索引,不是使用的第一部分,则不会使用索引。

3、以“%”开头的LIKE语句,模糊匹配。

4、数据类型出现隐式转化,如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引。(如varchar不加单引号的话可能会自动转换为int型)

5、如果mysql估计使用全表扫描要比使用索引快,则不使用索引。

题4:MySQL 中 TEXT 数据类型的最大长度?

TINYTEXT:256 bytes

TEXT:65,535 bytes(64kb)

MEDIUMTEXT:16,777,215 bytes(16MB)

LONGTEXT:4,294,967,295 bytes(4GB)

题5:MySQL 中行级锁都有哪些优缺点?

行级锁的优点

1)在许多线程请求访问不同的行时减少冲突锁。

2)事务回滚时减少改变数据。

3)可以长时间对单一的行数据加锁。

行级锁的缺点

1)比页级或表级锁定占用更多的内存。

2)当大量表中使用行级锁时,比页级锁或表级锁占用更多的内存。

3)如果需要频繁对大部分数据使用GROUP BY分组操作或者需要频繁扫描整个表时,明显比其它锁慢很多。

4)使用高级别锁时更方便的支持各种不同的类型应用程序,因为这种锁开销比行级锁要小很多。

题6:什么是存储过程?如何调用?

存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。

可以用一个命令对象来调用存储过程。

题7:Mysql 中使用 MyISAM 和 InnoDB 如何选择?

1、是否要支持事务,如果要请选择innodb,如果不需要可以考虑MyISAM;

2、如果表中绝大多数都只是读查询,可以考虑MyISAM,如果既有读写也挺频繁,请使用InnoDB

3、系统奔溃后,MyISAM恢复起来更困难,能否接受;

4、MySQL5.5版本开始Innodb已经成为Mysql的默认引擎(之前是MyISAM),说明其优势是有目共睹的,如果你不知道用什么,那就用InnoDB,至少不会差。

题8:SQL 注入漏洞是什么原因造成的?如何防止?

造成SQL注入的原因是程序开发过程中不注意规范书写sql语句和对特殊字符进行过滤,导致客户端可以通过全局变量POST和GET提交一些sql语句正常执行。

防止SQL注入的方式:

1、开启配置文件中的magic_quotes_gpc 和 magic_quotes_runtime设置。

2、执行sql语句时使用addslashes进行sql语句转换。

3、Sql语句书写尽量不要省略双引号和单引号。

4、过滤掉sql语句中的一些关键词:update、insert、delete、select、*。

5、提高数据库表和字段的命名技巧,对一些重要的字段根据程序的特点命名,取不易被猜到的。

题9:什么是最左前缀原则?

最左前缀原则就是最左优先,在创建多列索引时,要根据业务需求,where子句中使用最频繁的一列放在最左边。

当创建一个组合索引的时候,如(k1,k2,k3),相当于创建了(k1)、(k1,k2)和(k1,k2,k3)三个索引,这就是最左匹配原则。。

题10:SQL 语句执行过久,如何优化?从哪些方面入手?

1、查看是否涉及多表和子查询,优化Sql结构,如去除冗余字段,是否可拆表等。

2、优化索引结构,看是否可以适当添加索引。

3、数量大的表,可以考虑进行分离/分表(如交易流水表)。

4、数据库主从分离,读写分离。

5、explain分析sql语句,查看执行计划,优化sql。

6、查看mysql执行日志,分析是否有其他方面的问题。

题11:-mysql-中-binlog-有几种录入格式分别有什么区别

题12:为什么要使用自增-id-作为主键

题13:在高并发情况下如何做到安全的修改同一行数据

题14:mysql-中是否支持-emoji-表情存储若不支持如何操作

题15:count(1)count(*)-与-count(列名)-有什么区别

题16:mysql-中外连接内连接与自连接有什么区别

题17:哈希索引不适用哪些场景

题18:数据库中什么是事务

题19:mysql-中-blob-和-text-有什么区别

题20:表分区与分表有什么区别

题21:业务实践中如何优化-mysql

题22:key-和-index-有什么区别

题23:分区表都有哪些限制因素

题24:如何通俗地理解三个范式-

题25:mysql-中有哪几种隔离级别

大厂面试题

大厂面试题

大厂面试题

Java
1
https://gitee.com/AminDev/ebooks.git
git@gitee.com:AminDev/ebooks.git
AminDev
ebooks
Ebooks
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891