MySQL面经

  1. 数据库存储引擎的区别?
    ·InnoDB支持事务,MyISAM不支持事务;
    ·InnoDB适合频繁修改以及涉及到安全性较高的应用, MyISAM适合查询以及插入为主的应用;
    · InnoDB支持外键,MyISAM不支持外键。

  2. 怎么加行级锁?

    select * from 表名 where 字段名 for update;
    

    ⚠️字段一定要为索引

  3. 数据库有哪些索引?
    · 普通索引
    · 主键索引
    · 唯一索引
    · 组合索引
    · 全文索引

  4. 索引的原理是什么?
    B-Tree索引,B+Tree索引,哈希索引,全文索引

  5. B+Tree原理
    · B+Tree中的非叶子结点不存储数据,只存储键值;
    · B+Tree的叶子结点没有指针,所有键值都会出现在叶子结点上,且key存储的键值对应data数据的物理地址;
    · B+Tree的每个非叶子节点由n个键值key和n个指针point组成;
    在这里插入图片描述

  6. 什么情况下设置了索引但无法使用?
    A. 以“%”开头的LIKE语句
    B. OR语句前后没有同时使用索引
    C. 数据库类型出现隐式转化
    D. 在组合索引中不能有列的值为NULL,如果有,那么这一列对组合索引就是无效的。

  7. 索引的优缺点
    优势:可以快速检索,减少I/O次数,加快检索速度;根据索引分组和排序,可以加快分组和排序;
    劣势:索引本身也是表,因此会占用存储空间,一般来说,索引表占用的空间的数据表的1.5倍;索引表的维护和创建需要时间成本,这个成本随着数据量增大而增大;构建索引会降低数据表的修改操作(删除,添加,修改)的效率,因为在修改数据表的同时还需要修改索引表;

  8. 如何优化索引?
    · 最左前缀原则;
    · 带索引的模糊查询优化;
    · 为检索的条件构建全文索引,然后使用

    SELECT * FROM tablename MATCH(index_colum) ANGAINST(‘word’);
    

    · 使用短索引

  9. 事务的隔离级别有哪些?
    a. 脏读(READ_UNCOMMITED):允许一个事务去读取另一个事务中未提交的数据(读写均不加锁);
    b. 读/写提交(READ_COMMITED ):一个事务只能读取到另一个事务已经提交的数据(只对写加行级锁);
    c. 可重复读(REPEATABLE READ):使得同一条数据库记录的读/写按照一个序列化进行操作(对读和写都加行级锁);
    d. 序列化(SERIALIZABLE ):让SQL按照顺序读/写,消除数据库事务之间并发产生数据不一致的问题(表级锁)。

  10. 数据库连接池的工作机制?
    A. J2EE服务器启动时会建立一定数量的池连接,并维持不少于该数量的池连接
    B. 客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并标记为忙
    C. 若当前没有空闲的连接,池驱动程序会新建一定数量的池连接,数量取决于配置参数
    D. 当使用的池连接调用完成后,池驱动程序将连接标记为空闲,其他调用可使用该连接
    E. 当连接数量达到最大值时,池驱动程序将不再创建新连接,只能等连接空闲后再使用连接

  11. 三个范式的理解?
    1NF:要求数据库表中的每一列都是不可分割的原子数据项;
    2NF:在1NF基础上,确保数据库表中的每一列都和主键相关,而不是与主键的某部分相关(针对联合主键);
    3NF:在2NF的基础上消除传递依赖,要求非主属性直接与主键相关。

发布了25 篇原创文章 · 获赞 1 · 访问量 426

猜你喜欢

转载自blog.csdn.net/qq_44837912/article/details/103800415
今日推荐