mysql面试题

2019-10-26  本文已影响0人  lj72808up

1. MySQL 中 varchar 与 char 的区别?varchar(50) 中的 50 代表的涵义?

所以,实际场景下,选择合适的 varchar 长度还是有必要的。

2. int(11) 中的 11 代表什么涵义?

3. 一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 MySQL 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15?

最后,还可以跟面试官装个 x ,生产数据,不建议进行物理删除记录。

4. 为什么mysql的默认引擎是innodb

主要原因如下:

5. 为什么mysql的count()使用innodb时比使用MyISAM时慢

对于 SELECT COUNT(*) FROM table 语句,在没有 WHERE 条件的情况下,InnoDB 比 MyISAM 可能会慢很多,尤其在大表的情况下。因为,InnoDB 是去实时统计结果,会全表扫描;而 MyISAM 内部维持了一个计数器,预存了结果,所以直接返回即可。
https://blog.csdn.net/qq_15037231/article/details/81179383

6. 【重点】什么是索引?

mysql的索引, 记录了数据所在文件的行数, 根据这个行数可以直接取到数据, 不用扫表

WHERE a = 1 AND b = 1
WHERE b = 1
WHERE b = 1 ORDER BY time DESC

按照复合索引的最左前缀原则, 以顺序 b , a, time 建立复合索引,CREATE INDEX table1_b_a_time ON index_test01(b, a, time)。对于第一条 SQL ,因为最新 MySQL 版本会优化 WHERE 子句后面的列顺序,以匹配复合索引顺序。

7. 【重点】MySQL 索引的原理?

8. 【重点】请说说 MySQL 的四种事务隔离级别?

9. 【重点】Mysql的锁机制

10. Innodb 的事务与日志的实现方式

https://dev.mysql.com/doc/refman/5.7/en/innodb-locking-transaction-model.html

11. 【重要】MySQL 查询执行顺序?

  1. RBO谓词下推, 限制性where
  2. join
  3. group by
  4. having
  5. order by
  6. limit

12. 【重要】聊聊 MySQL SQL 优化?

13.【加分】什么是 MVCC ?

14. MySQL binlog 的几种日志录入格式以及区别

除了error log自动开启,其他日志都要先配置才能开启(DDL日志不提供配置, 会在需要的时候自动记录) 查看这些日志是否开启可使用如下语法, 比如看binlog是否开启

mysql> show variables like '%bin%';                           
+--------------------------------------------+----------------------+
| Variable_name                              | Value                |
+--------------------------------------------+----------------------+
| bind_address                               | 127.0.0.1            |
| binlog_cache_size                          | 32768                |
| binlog_checksum                            | CRC32                |
| binlog_direct_non_transactional_updates    | OFF                  |
| binlog_error_action                        | ABORT_SERVER         |
....      ...     ...
+--------------------------------------------+----------------------+

开启bin log可能会影响一些性能

15. MySQL 主从复制的流程是怎么样的?

16. 聊聊 MySQL 备份方式?备份策略是怎么样的?

17. Mysql Join实现

join有三种算法,分别是Nested Loop Join,Hash join,Sort Merge Join。MySQL官方文档中提到,MySQL只支持Nested Loop Join这一种join algorithm
https://blog.csdn.net/orangleliu/article/details/72850659
文中不仅讲解了最简单的SNLJ, 还讲解了join key是索引时, 使用INLJ, 非索引时使用缓存的BNLJ. 此外对比了Hash join, 这种BNLJ的进化版(虽然mysql不支持), 从双循环的SNLJ, 进化到BNLJ, 缓存外侧join的记录, 到hash join的进化, 都是在尽量减少内侧循环(内表)的全表扫描次数. 这也解释了sort merge join内表外表都只扫描一次的大数据解决方案

上一篇 下一篇

猜你喜欢

热点阅读