数据库面试二

news/2025/3/10 14:38:16/文章来源:https://www.cnblogs.com/hj2542/p/18762644

2.存储引擎

1.InnoDB

默认的存储引擎:

互联网公司的表没有意外都是使用该引擎

特点:

1.支持事务,支持物理外键

2.天生支持行锁,手动支持表锁

3.使用聚簇(集)索引

​ 3.1:索引跟数据在同一个文件(表名.ibd)

​ 3.2: 只有主键索引是聚簇索引,其他索引都是非聚簇索引

表锁:

用于控制对整个数据库表的并发访问。当一个事务对表加锁后,其他事务在访问该表时会受到限制,具体限制取决于锁的类型。虽然 InnoDB 引擎默认以行级锁(Row-Level Locking)为主,但它仍然支持手动显式使用表锁,以满足某些特定场景的需求。

  • 表锁是对整个表的粗粒度锁定,适用于全表操作或需要强制独占的场景。
  • InnoDB 默认优先使用行级锁,仅在手动显式调用 LOCK TABLES 或执行 DDL 时使用表锁。
  • 使用表锁需谨慎,长时间持有会导致并发性能下降,甚至引发阻塞。
  • 在常规高并发场景中,应优先依赖行级锁和事务隔离级别(如 MVCC)保证数据一致性。

行锁:

(Row-Level Lock) 是一种细粒度的锁机制,用于控制对表中单行数据的并发访问。它允许多个事务同时操作同一张表的不同行,从而提升并发性能,避免因粗粒度锁(如表锁)导致的资源争用。

聚簇(集)索引:

定义

  • 数据与索引绑定:聚簇索引的叶子节点直接存储数据行,索引的键值顺序决定了表中数据的物理存储顺序。
  • 唯一性:一个表只能有一个聚簇索引(因为数据只能按一种物理顺序存储)。

核心特点

  • 主键默认是聚簇索引:在InnoDB引擎中,主键自动成为聚簇索引。
  • 高效的主键查询:通过主键检索数据时,无需二次查找,直接返回数据行。
  • 插入性能依赖主键顺序:如果主键是自增的(如AUTO_INCREMENT),插入操作只需追加数据,减少页分裂;若主键无序,可能导致频繁页分裂,降低性能。

非聚簇(集)索引:

定义

  • 索引与数据分离:非聚簇索引的叶子节点不存储实际数据行,而是存储指向数据行的指针(或主键值)。
  • 灵活性:一个表可以有多个非聚簇索引。

核心特点

  • 二级索引:在InnoDB中,非聚簇索引称为二级索引,其叶子节点存储主键值,而非数据行的物理地址。

  • 回表查询(Bookmark Lookup):通过非聚簇索引查询数据时,需先找到主键值,再通过主键到聚簇索引中查找完整数据行。

  • 覆盖索引优化:若查询字段全部包含在索引中(如SELECT id FROM table WHERE name='Alice'),可避免回表,直接返回结果。

  • 聚簇索引:数据与索引绑定,适合主键查询和范围扫描,但插入性能依赖主键顺序。

  • 非聚簇索引:数据与索引分离,适合辅助查询,需注意回表开销。

  • 核心差异:数据存储位置、索引数量限制和查询效率。

2.MyISAM

特点

1.不支持事务,不支持外键

2.只支持表锁,不支持行锁

3.使用非聚簇索引

​ 3.1:索引和数据不在一个文件

​ 3.2:数据(表名.myd)

​ 3.3:索引(表名.myi)

3.面试题

以上两种储存引擎的区别:

根据两种引擎的特点进行比较。****

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/896819.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不再头痛!算法备案自评估报告要点分析

算法备案材料包含众多报告,其中最难的莫过于《算法安全自评估报告》。本人经手过几十份该材料,今天就结合个人经验总结下自评估报告的要点及一些容易踩的坑,希望可以帮助大家。有其它问题也可以参考这篇文章了解。 一、自评估报告常见问题 1、前后矛盾 报告内部的算法、风控…

C语言中标准输出的缓冲机制

什么是缓冲区 缓存区是内存空间的一部分,再内存中,内存空间会预留一定的存储空间,这些存储空间是用来缓冲输入和输出的数据,预留的这部分空间就叫做缓冲区。 其中缓冲区还会根据对应的是输入设备还是输出设备分为输入缓冲区和输出缓冲区。 为什么需要缓冲? 直接操作硬件(…

k8s回调函数-cnblog

回调函数 Kubernetes 为容器提供了生命周期回调。 回调使容器能够了解其管理生命周期中的事件,并在执行相应的生命周期回调时运行在处理程序中实现的代码。Kubernetes 支持 PostStart 和 PreStop 事件。 当一个容器启动后,Kubernetes 将立即发送 PostStart 事件;在容器被终结…

Transfomer 中的强制教学(Teacher Forcing)

在预测阶段, 我们希望输入 "天雷滚滚我好怕怕" 和 "[cls]" 能预测出下一个token: 劈 于是我们在训练阶段,我们的输入是 "天雷滚滚我好怕怕" 和 “[cls]劈得我浑身掉渣渣”, 由于我们希望"[cls]" 能预测出 “劈” 字。 我们在损失函…

jenkins安装后可用插件版本需要高版本的jenkins才能使用

首先我们直接用清华镜像源https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/,比如我们要找Jenkins2.429对应版本 emmmm,没有429,427凑合用吧 获取这个地址,放到updatesite 进服务器,找到default.json,替换掉它,然后重启jenkins。 cp default.json default.json.ba…

​党政机关数字化转型必备:10款信创认证项目管理工具深度测评

党政机关数字化转型是适应时代发展、提升治理效能的关键举措。在这一过程中,信创认证项目管理工具发挥着至关重要的作用。它们不仅能助力项目高效推进,还能保障信息安全与合规性。以下将对10款信创认证项目管理工具进行深度测评,为党政机关在数字化转型道路上的工具选择提供…

材料焊接工艺大全-芯晨微纳(河南) -专注于激光代加工

一、材料焊接中的“焊接力” 材料焊接,准确说应该为“材料互联”,是通过物理力、化学力、机械作用力等方式将原本相互隔离的材料连为一体的过程。 物理力中的四种基本力是万有引力、电磁力、强相互作用力和弱相互作用力。具体的,按性质(根据它们的物理性质来命名和分类)分…

Zabbix 7.2 + Grafana 中文全自动安装ISO镜像

简介 ​基于Zabbix 官方的Alma Linux 8 作为基础镜像。镜像源都改为国内大学镜像站,自动联网安装Zabbix+Grafana。安装中文字体、Zabbix和Grafana也配置默认中文。Zabbix 也指定中文字体,绘图无乱码。配置时区为东八区,Zabbix配置Web时区也为东八区。Grafana自动安装zabbix源…

第十八章 项目绩效域(2025年详细解析版)

目录导学太极八卦与项目管理体系项目管理整体框架图绩效域原则和绩效域的关系18.1 干系人绩效域干系人绩效域概述定义预期目标绩效要点 :促进干系人参与目的作用促进干系人参与要做的六项活动与其他绩效域的相互作用(了解)关联为什么要促进干系人参与?为什么干系人重要?执…

PCA9306DCTR特征—400kHz I2C/SMBus电压电平转换器/S9S08DZ60F2VLCR/CC2650F128RSMR/MAX4715EXK SPST 开关

PCA9306DCTR是一款2 位双向 400kHz I2C/SMBus 电压电平转换器,可以在 1.2V 到 5V 之间实现双向电压转换而无须使用方向引脚。PCA9306DCTR是一款2 位双向 400kHz I2C/SMBus 电压电平转换器,可以在 1.2V 到 5V 之间实现双向电压转换而无须使用方向引脚。PCA9306DCTR具有低导通状…

快速理解Kubernetes 系统架构

Kubernetes 架构解析1. 整体架构:管理层 + 执行层 管理层(Master 节点)——"老板团队"API 服务器(kube-apiserver) ▶️ 公司的"前台",所有指令必须通过这里传达(如部署应用、查看状态) 调度器(kube-scheduler) ▶️ 像"项目经理",决…

001TypeScript开发实战

1、点击文件,点击打开文件夹 2、选择文件夹,打开文件夹 3、点击终端,新建终端 4、在终端内输入npm init vue@latest 按回车 5、写入项目名称 vue3-ts-cms 6、选择:这里我们先这样选择,Router(单页面应用开发)Pinia(状态管理)这次我们搭建一下7、 这里我们选择NO 可以看见…