-
数据库存储引擎的区别?
·InnoDB支持事务,MyISAM不支持事务;
·InnoDB适合频繁修改以及涉及到安全性较高的应用, MyISAM适合查询以及插入为主的应用;
· InnoDB支持外键,MyISAM不支持外键。 -
怎么加行级锁?
select * from 表名 where 字段名 for update;
⚠️字段一定要为索引
-
数据库有哪些索引?
· 普通索引
· 主键索引
· 唯一索引
· 组合索引
· 全文索引 -
索引的原理是什么?
B-Tree索引,B+Tree索引,哈希索引,全文索引 -
B+Tree原理
· B+Tree中的非叶子结点不存储数据,只存储键值;
· B+Tree的叶子结点没有指针,所有键值都会出现在叶子结点上,且key存储的键值对应data数据的物理地址;
· B+Tree的每个非叶子节点由n个键值key和n个指针point组成;
-
什么情况下设置了索引但无法使用?
A. 以“%”开头的LIKE语句
B. OR语句前后没有同时使用索引
C. 数据库类型出现隐式转化
D. 在组合索引中不能有列的值为NULL,如果有,那么这一列对组合索引就是无效的。 -
索引的优缺点
优势:可以快速检索,减少I/O次数,加快检索速度;根据索引分组和排序,可以加快分组和排序;
劣势:索引本身也是表,因此会占用存储空间,一般来说,索引表占用的空间的数据表的1.5倍;索引表的维护和创建需要时间成本,这个成本随着数据量增大而增大;构建索引会降低数据表的修改操作(删除,添加,修改)的效率,因为在修改数据表的同时还需要修改索引表; -
如何优化索引?
· 最左前缀原则;
· 带索引的模糊查询优化;
· 为检索的条件构建全文索引,然后使用SELECT * FROM tablename MATCH(index_colum) ANGAINST(‘word’);
· 使用短索引
-
事务的隔离级别有哪些?
a. 脏读(READ_UNCOMMITED):允许一个事务去读取另一个事务中未提交的数据(读写均不加锁);
b. 读/写提交(READ_COMMITED ):一个事务只能读取到另一个事务已经提交的数据(只对写加行级锁);
c. 可重复读(REPEATABLE READ):使得同一条数据库记录的读/写按照一个序列化进行操作(对读和写都加行级锁);
d. 序列化(SERIALIZABLE ):让SQL按照顺序读/写,消除数据库事务之间并发产生数据不一致的问题(表级锁)。 -
数据库连接池的工作机制?
A. J2EE服务器启动时会建立一定数量的池连接,并维持不少于该数量的池连接
B. 客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并标记为忙
C. 若当前没有空闲的连接,池驱动程序会新建一定数量的池连接,数量取决于配置参数
D. 当使用的池连接调用完成后,池驱动程序将连接标记为空闲,其他调用可使用该连接
E. 当连接数量达到最大值时,池驱动程序将不再创建新连接,只能等连接空闲后再使用连接 -
三个范式的理解?
1NF:要求数据库表中的每一列都是不可分割的原子数据项;
2NF:在1NF基础上,确保数据库表中的每一列都和主键相关,而不是与主键的某部分相关(针对联合主键);
3NF:在2NF的基础上消除传递依赖,要求非主属性直接与主键相关。
MySQL面经
猜你喜欢
转载自blog.csdn.net/qq_44837912/article/details/103800415
今日推荐
周排行