IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MYSQL---存储引擎相关问题 -> 正文阅读

[大数据]MYSQL---存储引擎相关问题

1. 相关问题

存储引擎属于插件式引擎,面试中遇到的可能非常大,下面总结一些常见的问题。

  • 说一说了解的mysql 存储引擎及其使用场景?
  • 在什么情况下innodb 无法在线修改表结构?
  • 在无法进行在线修改表结构的情况下,要如何操作?
  • innodb 是如何实现事务的?
  • innodb 读操作是否会阻塞写操作?

2. 常用的mysql 存储引擎及使用场景

2.1 mysql 常用存储引擎

在这里插入图片描述

2.2 常见存储引擎使用场景

MYISAM 的特点

  • 非事务存储引擎 (用到事务场景不适用)
  • 以堆表方式存储 (叶子节点直接指向数据物理地址,而不是聚集索引位置,避免二次查找;单从性能看,查询效果myisam 优于innodb)
  • 使用表级锁 (读操作会阻塞写操作,写操作也会阻塞读操作;所以不适合高并发场景)
  • 支持Btree 索引,空间索引,全文索引
  • 在物理机上有两个文件 (xxx.myd【数据文件】 和 xxx.myi 文件【索引文件】)mysql 8.0 版本

MYISAM 使用场景

  • 读操作远远大于写操作的场景(不用进行二次查找特点)
  • 不需要使用事务的场景

CSV 存储引擎

  • 非事务型存储引擎
  • 数据以CSV 格式存储
  • 所有列都不能为NULL
  • 不支持索引
  • 可直接编辑数据文件修改存储的数据

CSV 使用场景

  • 做为数据交换的中间表使用

Archive 存储引擎

  • 非事务型存储引擎
  • 表数据使用zlib 压缩
  • 只支持insert 和select 操作 (日志)
  • 只允许在自增 id 上建立索引

Archive 使用场景

  • 日志和数据采集类应用
  • 数据归档存储 (不需要更新,只需要的查询)

Memory 存储引擎

  • 非事务型存储引擎
  • 数据保存在内存中 (易丢失)
  • 所有字段的长度固定
  • 支持Btree 和 hash 索引

Memory 使用场景

  • 用户缓存字典映射表
  • 缓存周期性分析数据 (也可使用redis)

innodb 存储引擎

  • 事务性存储引擎,支持ACID
  • 数据按主键聚集存储 (和堆表方式存储不同)
  • 支持行级锁及MVCC (在进行读写操作时,只会对该数据行上加锁;增加了并发能力)(MVCC:多版本并发控制)
  • 支持Btree 和 自适应 Hash 索引
  • 【5.7 之后】 支持全文和空间索引

innodb 使用场景

  • 大多数 OLTP 场景 (联机事务处理(Online Transaction Processing),表示事务性非常高的系统)

NDB 存储引擎

  • 事务性存储引擎
  • 数据存储在内存中
  • 支持行级锁
  • 支持高可用集群
  • 支持Ttree 索引

NDB 使用场景

  • 需要数据完全同步的高可用场景

3. 在什么情况下INNODB 无法在线修改表

3.1 innodb 不支持在线修改表结构的场景

在这里插入图片描述
在线ddl 存在的问题

  • 有部分语句不支持在线ddl
  • 长时间的ddl 操作会引起严重的主从延迟
  • 无法对ddl 操作进行资源限制

3.2 如何更安全的在线修改表结构

  • py-online-schema-change [OPTIONS] DSN

4. innodb 是如何实现事务的?

4.1 什么是事务

经典的例子:在银行汇款需要进行一系列操作,如果当中任何一个操作失败,则这个汇款操作就不能完成。

ACID : 原子性、一致性、隔离性(里面有分为几种)、持久性。
在这里插入图片描述

4.2 redo log 和 undo log 在事务实现中的作用

事务的实现方式, 引入了redo log 和undo log 两种日志,在任何事务型存储引擎中,都会有。
在这里插入图片描述
汇款例子演示:

卡 A 转账 卡B 500元

在这里插入图片描述

5. innodb 读是否会阻塞写?

5.1 读写应该相互阻塞吗?

  • 查询需要对资源加共享锁(S)
  • 数据修改需要对资源加排它锁(x)

在这里插入图片描述

5.2 MVCC (多版本并发控制)

简化一些过程

事务A 修改A = 500, 事务2 查询A 的值
这里事务A 用了排它锁, 然后用undo log 记录 A 原先的值,redo log 记录更新的值;
由于事务A 加了排它锁,事务B 就从undo 中查询到的A 的值, 这里就是可重复读的级别

在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-18 23:28:02  更:2022-06-18 23:28:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 0:16:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码