MySQL数据库的存储引擎,底层存储结构,事物隔离级别,索引,日志等

news2024/10/7 10:16:25

存储引擎

在这里插入图片描述

存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表而不是基于库的,所以存储引擎也可以被称为表引擎。
默认存储引擎是InnoDB。

InnoDB

在 MySQL 5.5 之后,InnoDB 是默认的 MySQL 引擎。
1.支持事务
2.行级锁,提高并发访问性能
3.支持外键约束,保证数据的完整性和正确性

文件:xxx.ibd: xxx代表表名,InnoDB 引擎的每张表都会对应这样一个表空间文件,存储该表的表结构
(frm、sdi)、数据和索引。
参数:innodb_file_per_table,决定多张表共享一个表空间还是每张表对应一个表空间

MyISAM

MyISAM 是 MySQL 早期的默认存储引擎。
特点:
不支持事务,不支持外键
支持表锁,不支持行锁
访问速度快
文件:
xxx.sdi: 存储表结构信息
xxx.MYD: 存储数据
xxx.MYI: 存储索引

Memory

Memory 引擎的表数据是存储在内存中的,受硬件问题、断电问题的影响,只能将这些表作为临时表或
缓存使用。
特点:
存放在内存中,速度快
hash索引(默认)
文件:
xxx.sdi: 存储表结构信息

事物隔离级别

在这里插入图片描述
查看事务隔离级别:
SELECT @@TRANSACTION_ISOLATION;

并发事务

在这里插入图片描述

四大特性ACID

原子性(Atomicity):事务是不可分割的最小操作但愿,要么全部成功,要么全部失败
一致性(Consistency):事务完成时,必须使所有数据都保持一致状态
隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下
运行
持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的

索引

它是帮助MySQL高效获取数据
的数据结构,主要是用来提高数据检索的效率,降低数据库的IO成本,同时
通过索引列对数据进行排序,降低数据排序的成本,也能降低了CPU的消耗

索引的底层数据结构

MySQL的默认的存储引擎InnoDB采用的B+树的数据结构来存储索
引,选择B+树的主要的原因是:第一阶数更多,路径更短,第二个磁盘读写
代价B+树更低,非叶子节点只存储指针,叶子阶段存储数据,第三是B+树便
于扫库和区间查询,叶子节点是一个双向链表

在这里插入图片描述

B树和B+树的区别是

第一:在B树中,非叶子节点和叶子节点都会存放数据,而B+树的
所有的数据都会出现在叶子节点,在查询的时候,B+树查找效率更加稳定
第二:在进行范围查询的时候,B+树效率更高,因为B+树都在叶子节点存
储,并且叶子节点是一个双向链表

什么是聚簇索引什么是非聚簇索引

1.聚簇索引主要是指数据与索引放到一块 B+树的叶子节点保存了整
行数据,有且只有一个,一般情况下主键在作为聚簇索引的

2.非聚簇索引值的是数据与索引分开存储 B+树的叶子节点保存对应的主键,
可以有多个,一般我们自己定义的索引都是非聚簇索引

知道什么是回表查询?

回表的
意思就是通过二级索引找到对应的主键值,然后再通过主键值找到聚集索引
中所对应的整行数据,这个过程就是回表

覆盖索引是

覆盖索引是指select查询语句使用了索引,在返回的列,必须在索引中全部
能够找到,如果我们使用id查询,它会直接走聚集索引查询,一次索引扫
描,直接返回数据,性能高。
如果按照二级索引查询数据的时候,返回的列中没有创建索引,有可能会触
发回表查询,尽量避免使用select *,尽量在返回的列中都包含添加索引的字

MYSQL超大分页怎么处理 ?

超大分页一般都是在数据量比较大时,我们使用了limit分页查
询,并且需要对数据进行排序,这个时候效率就很低,我们可以采用覆盖索
引和子查询来解决
先分页查询数据的id字段,确定了id之后,再用子查询来过滤,只查询这个
id列表中的数据就可以了
因为查询id的时候,走的覆盖索引,所以效率可以提升很多

索引失效

1.没有遵循最左匹配法则
2.模糊查询
3.如果%号在前面也会导致索引失效。
4.如果在添加索引的字段上进行了运算操作或者类型转换也都会导致索引失效

日志

undo log和redo log
其中redo log日志记录的是数据页的物理变化,服务宕机可用来同步数据,
而undo log 不同,它主要记录的是逻辑日志,当事务回滚时,通过逆操作恢复原来的数据
redo log保证了事务的持久性,undo log保证了事务的原子性和一致性

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv5/YOLOv7改进: AIFI (尺度内特征交互)助力YOLO | YOLO终结者?RT-DETR一探究竟

💡💡💡本文全网首发独家改进: AIFI (尺度内特征交互)助力YOLO ,提升尺度内和尺度间特征交互能力,同时降低多个尺度的特征之间进行注意力运算,计算消耗较大等问题 推荐指数:五星 AIFI | 亲测在多个数据集能够实现涨点 💡💡💡Yolov5/Yolov7魔术师,独家首…

Windows11无法打开Photoshop CC 2017问题解决

情况描述: Windows11上,双击Photoshop CC 2017没反应 解决办法: 此时需要启动Windows的“事件查看器”来确认问题出在哪里。可以直接通过开始菜单搜索启动,也可以通过右键点击“此电脑”->“管理”,然后找到事件查…

解密杭州亚运背后科技:核心系统100%上云,20多项全球首创智能应用

10月31日,2023杭州云栖大会,杭州亚运会信息技术中心执行指挥长、杭州亚组委广播电视和信息技术部副部长张鸽以《科技创新在亚运舞台精彩绽放》为主题,分享了杭州亚运会的智能亚运实践。 杭州亚运会打造了史上首个全覆盖的数字化服务体系&…

港府Web3宣言周年思考:合规困境中的“隐患”

出品|欧科云链研究院 作者|毕良寰 距离《有关虚拟资产在港发展的政策宣言》已过去一年,我们欧科云链研究院在分析全球几个主要国家和地区对Web3的监管政策及态度后,对港府的雄心壮志充满期待。然而,由于近期一些庞氏骗…

学习redis之前的泛泛而谈(特性介绍,应用场景,Ubuntu安装与通用命令介绍)

文章目录 前言关于分布式系统Redis特性Redis应用场景Redis5安装redis命令最核心的两个命令:get和setkeysexitsdelexpirettlredis中key的过期策略type redis数据类型的内部实现方式redis的单线程 前言 redis最重要的概念:在内存中存储数据 为什么要设计一…

MySQL(4):运算符

算术运算符 算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加()、减(-)、乘(*)、除(/)和取模(%&#…

在uni-app中使用ECharts - 配置四种不同的图表

👨‍🦰博主:小猫娃来啦 👨‍🦰文章核心:在uni-app中使用ECharts - 配置四种不同的图表 文章目录 前言安装ECharts插件引入ECharts库创建Charts实例和图表容器配置和渲染图表配置柱状图配置折线图配置饼图配…

详解final, abstract, interface关键字

一.final关键字 1.final关键字介绍 ——final关键字可以去修饰类、方法、属性和局部变量 2.final关键字的作用 1)final修饰类,这个类不能被其他类继承 2)final修饰方法,方法不能被重写 3)final修饰属性,属…

通过shiro框架记录用户登录,登出及浏览器关闭日志

背景: 公司项目之前使用websocket记录用户登录登出日志及浏览器关闭记录用户登出日志,测试发现仍然存在问题, 问题一:当浏览器每次刷新时websocket其实是会断开重新连接的,因此刷新一下就触发记录登出的日志&#xff0…

41.排序练习题(王道2023数据结构第8章综合练习)

试题1(王道8.3.3节综合练习2): 编写双向冒泡排序算法,在正反两个方向交替扫描。即第一趟把关键字最大的元素放在序列的最后面,第二趟把关键字最小的元素放在序列最前面,如此反复。 首先实现冒泡排序&…

FIFO 位宽转换

从8位转32位 module tb_fifo();reg clk,rst; initial beginclk0;forever #4.545 clk~clk; end initial beginrst1;#9.09 rst0; endreg [31:0] cnts; always (posedge clk or posedge rst) beginif(rst)begincnts < 32d0;endelsebegincnts < cnts 1b1;end endreg […

美国白宫发布总统令:鼓励AI以安全、可靠的方式发展

美国华盛顿时间10月30日&#xff0c;美国白宫官网发布了&#xff0c;关于发展安全、可靠和值得信赖的AI&#xff08;人工智能&#xff09;的拜登总统行政令。 白宫表示&#xff0c;该行政令为AI安全和保障制定了新标准&#xff0c;保护了用户的数据隐私&#xff0c;促进公平和…

英语——歌曲篇——only you

《only you》(只有你)赏析 很多人都听过The Platters(派特斯乐队)演唱的《only you》(只有你)这首歌曲&#xff0c;尤其是看过在周星驰和罗家英在《大话西游》里面演绎的"无厘头"版本后。 不过&#xff0c;又有几人知道&#xff0c;这首歌曲原来是经典浪漫影片《罗马…

C语言_常用数据类型地址的理解

常用基本数据类型&#xff1a; #include <stdio.h> #include <stdlib.h> #include <stdint.h>int main(){printf("基本数据类型:\n");printf("char: %d\n", sizeof(char));printf("int: %d\n", sizeof(int));printf("do…

1.6 基本安全设计准则

思维导图&#xff1a; 1.6 基本安全设计准则笔记 目标&#xff1a;理解和遵循一套广泛认可的安全设计准则&#xff0c;以指导保护机制的开发。 主要准则&#xff1a; 机制的经济性&#xff1a;安全机制应设计得简单、短小&#xff0c;便于测试和验证&#xff0c;减少漏洞和降…

linux系统的环境变量-搞清环境变量到底是什么

环境变量 引例环境变量常见的环境变量echoexportenvunsetset 通过代码获取环境变量使用第三个参数获取使用全局变量enviorn获取环境变量通过系统调用获取环境变量 环境变量具有全局属性main函数前两个参数的作用 引例 在linux系统中&#xff0c;我们使用ls命令&#xff0c;直接…

Python 算法高级篇:深度优先搜索和广度优先搜索的高级应用

Python 算法高级篇&#xff1a;深度优先搜索和广度优先搜索的高级应用 引言 1. 深度优先搜索&#xff08; DFS &#xff09;回顾2. 广度优先搜索&#xff08; BFS &#xff09;回顾3. 拓扑排序4. 连通性检测5. 最短路径问题6. 案例分析&#xff1a;社交网络分析7. 总结 引言 深…

剑指 Offer || 084.全排列||

题目 给定一个可包含重复数字的整数集合 nums &#xff0c;按任意顺序 返回它所有不重复的全排列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2] 输出&#xff1a; [[1,1,2],[1,2,1],[2,1,1]]示例 2&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1…

【蓝桥杯选拔赛真题07】C++小球自由落体 青少年组蓝桥杯C++选拔赛真题 STEMA比赛真题解析

目录 C/C++小球自由落体 一、题目要求 1、编程实现 2、输入输出 二、算法分析

PostgreSQL在云端:部署、管理和扩展你的数据库

随着云计算技术的迅猛发展&#xff0c;将数据库迁移到云端已经成为许多企业的首选。而在众多数据库管理系统中&#xff0c;PostgreSQL因其稳定性、灵活性和可扩展性而成为了不少企业的首选之一。 部署PostgreSQL在云端 将PostgreSQL部署在云端是一个相对简单的过程。云服务提供…