数据库相关知识点一直是java中最重要的,并且在面试过程中,也少不了对这方面的考核,为了能够让大家顺利通过java面试,我们给大家分享一些关于数据库优化面试题!希望给大家提供帮助!
1.为什么使用数据索引能提高效率?
数据索引的存储是 有序的;
在有序的情况下, 通过索引查询一个数据是无需遍历索引记录的;
极端情况下,数据索引的查询效率为二分法查询效率,趋近于log2(N);
2.Mysql 中MyISAM和InnoDB的区别有哪些?
InnoDB支持事务, MyISAM不支持;
InnoDB支持外键,而MylSAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败;
InnoDB是聚集索引,数据文件是和索引绑在一起,必须要有主键,通过主键索引效率高。
InnoDB不保存 表的具体行数,执行select count(*) from table时需要全表扫描。
Innodb不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高;
3. 数据库三范式是什么?
第一范式: 列不可再分;
第二范式: 行可以唯一区分, 主键约束;
第三范式: 表的非主属性不能依赖其他表的非主属性外键约束;
4. MySQL集群的优缺点有哪些?
优点:
1)99.999%的高可用性;
2)快速的自动失效切换;
3)灵活的分布式休系结构,没有单点故障;
4)高吞吐量和低延迟 e)可扩展性强,支持在线扩容;
缺点:
1)存在很多限制,比如:不支持外键;
2)部署、管理、配置很复杂;
3)占用磁盘空间大,内存人;
4)备份和恢复不方便;
5)重启的时候,数据节点将数据load到内存需要很长时间;
5.数据表损坏的修复方式有哪些?
使用 myisamchk 来修复,具体步骤:
1)修复前将mysql服务停止。
2)打开命令行方式,然后进入到mysql的/bin目录。
3)执行myisamchk –recover 数据库所在路径/*.MYI
使用repair table 或者 OPTIMIZE table命令来修复,REPAIR TABLE table_name 修复表 OPTIMIZE TABLE table_name 优化表 REPAIR TABLE 用于修复被破坏的表。OPTIMIZE TABLE 用于回收闲置的数据库空间,当表上的数据行被删除时,所占据的磁盘空间并没有立即被回收,使用了OPTIMIZE TABLE命令后这些空间将被回收,并且对磁盘上的数据行进行重排(注意:是磁盘上,而非数据库)。
这些都是在面试中经常出现的面试题,大家可以讲这些收藏起来,并看看这些题目都会不会?如果不会,那就要赶紧复习咯!最后大家如果想要了解更多java面试题知识,敬请关注奇Q工具网。
推荐阅读: