专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 职业指南 2023新版数据库基础面试题

2023新版数据库基础面试题

更新时间:2022-12-23 14:34:31 来源:动力节点 浏览881次

为什么我们在面试程序员的时候,一定会被问到数据库相关的面试题呢?因为数据索引是可以提高效率的,我们要知道数据索引是有序的,并且可以通过索引查询一个数据是无需遍历索引记录,非常的方便,并且在极端的情况下,数据索引的查询效率为二分法查询效率,趋近于log2(N)。所以,想要在面试官面前表现的突出一些,那么数据库相关的面试题是必须要掌握的:

数据库基础面试题

1、哈希索引的优势:

等值查询,哈希索引具有绝对优势(前提是:没有大量重复键值,如果大量重复键值时,哈希索引的效率很低,因为存在所谓的哈希碰撞问题。

2、哈希索引不适用的场景:

  • 不支持 范围查询
  • 不支持索引完成排序
  • 不支持联合索引的最左前缀匹配规则

3、什么是表分区?

表分区,是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分。从逻辑上看,只有一张表,但是底层却是由多个物理分区组成

4、表分区与分表的区别?

分表:指的是通过一定规则, 将一张表分解成多 张不同的表。比如将用户订单记录根据时间成多个表。

分表与分区的区别在于:分区从逻辑上来讲只有一张表 ,而分表则是将一张表分解成多张表。

5、表分区有什么好处?

存储更多数据。分区表的数据可以分布在不同的物理设备上,从而高效地利用多个硬件设备。和单个磁盘或者文件系统相比,可以存储更多数据

优化E询。在where语句中包含分区条件时,可以只扫描一个或多 个分区表来提高查询效率;涉及sum和count语句时,也可以在多个分区上并行处理,最后汇总结果。

分区表更容易维护。例如:想批量删除大量数据可以清除整个分区。

避免某些特殊的瓶颈,例如InnoDB的单个索引的互斥访问, ext3问价你系统的inode锁竞争等。

6、在MVCC并发控制中,读操作可以分成两类:

快照读(snapshot read):读取的是记录的可见版本(有可能是历史版本),不用加锁(共享读锁s锁也不加,所以不会阻塞其他事务的写)

当前读(currentread):读取的是记录的最新版本,并且,当前读返回的记录,都会加上锁,保证其他事务不会再并发修改这条记录

7、行级锁定的优点:

  • 当在许多线程中访问不同的行时只存在少量锁定冲突。
  • 回滚时只有少量的更改
  • 可以长时间锁定单一的行。

8、行级锁定的缺点:

比页级或表级锁定占用更多的内存。当在表的大部分中使用时,比页级或表级锁定速度慢,因为你必须获取更多的锁。 如果你在大部分数据上经常进行GROUP BY操作或者必须经常扫描整个表,比其它锁定明显慢很多。 用高级别锁定,通过支持不同的类型锁定,你也可以很容易地调节应用程序,因为其锁成本小于行级锁定。

9、MySQL优化

  • 开启查询缓存,优化查询
  • explain你的select查询, 这可以帮你分析你的查询语句或是表结构的性能瓶颈。EXPLAIN的查询结果还会告诉你你的索引 主键被如何利用的,你的数据表是如何被搜索和排序的
  • 当只要一行数据时使用limit 1, MySQL数据库引擎会在找到一条数据后停止搜索,而不是继续往后查少下一条符合记录的数据
  • 为搜索字段建索引
  • 使用ENUM而不是VARCHAR
  • Prepared StatementsPrepared Statements很像存储过程,是一种运行在后台的SQL语句集合,我们可以从使用

prepared statements获得很多好处,无论是性能问题还是安全问题。

Prepared Statements可以检查一些你绑定好的变量,这样可以保护你的程序不会受到“SQL注入式” 攻击

  • 垂直分表
  • 选择正确的存储引擎

以上就是“2023新版数据库基础面试题”,你能回答上来吗?如果想要了解更多的Java面试题相关内容,可以关注动力节点Java官网。 

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>