首页 > 数据库 >mysql夺命100问

mysql夺命100问

时间:2024-08-24 17:36:45浏览次数:9  
标签:事务 索引 事物 update 夺命 版本 mysql 100 日志

一、事务

1、事务的四大特性ACID是什么?

原子性
一个事务中的操作要么全部成功,要么全部失败。

通过 undo log 来实现
隔离性
一个事务的修改在最终提交前,对其他事务是不可见的。

通过 读写锁+MVCC来实现
持久性
一旦事务提交,所做的修改就会永久保存到数据库中。

通过 redo log 来实现
一致性
通过 原子性、隔离性、持久性来保证
数据库必须要实现AID三大特性,才有可能实现一致性。同时 一致性也需要应用程序的支持

2、ACID靠什么保证的?

3、什么是脏读、幻读、不可重复读

4、什么是MVCC

原理:

MVCC(Multi-Version Concurrency Control,多版本并发控制

MVCC通过维护数据的多个版本来实现并发控制。每个版本与一个事务关联,让不同的事务看到不同时间点的数据视图,从而避免了大部分的锁等待,提高了并发性能,保证事物的一致性和隔离性。

InnoDB中的MVCC实现步骤:

第一步:分配事物id; 第二步:根据事物id创建讯视图,确定哪些版本对当前事物可见; 第三步:创建新版本数据,将旧版本数据写入到undolog; 第四步:提交时使用redolog日志写入到磁盘,回滚时使用undolog日志恢复到之前的状态;

关键概念:

版本管理:每个事物开始会创建一个版本记录,并分配一个事物id,记录上有隐藏字段事物id和回滚指针

读视图:事物开始时会创建一个读实图,确定哪些版本的数据对当前事物可见

 日志:undolog用于储存事物在提交前的变化,这样可以回滚到之前的版本。redolog用于持久化数据页的变化,确保在奔溃后可以恢复数据。

5、Innodb是如何实现事务的?

MySQL采用的是 WAL(Write-ahead logging, 预写式日志)机制来实现的
在使用WAL的系统中, 所有的修改都先被写入到日志中,然后 再被应用到系统中。通常包含 redo和undo两部分信息。
在 重启之后系统可以通过比较日志和系统状态来决定是 继续完成操作还是撤销操作。以一个update语句为例:

(1)Innodb在收到一个update语句后,会先根据条件找到数据所在的页,并将该页缓存在Buffer Pool中
(2)执行update语句,修改Buffer Pool中的的数据,也就是内存中的数据。
(3)针对update语句生成一个RedoLog对象,并存入LogBuffer中。
(4)针对update语句生成undoLog日志,用于事务回滚。
(5)如果事务提交,那么则把RedoLog对象进行持久化,后续还有其他机制把Buffer Pool中所修盖的数据页持久化到磁盘。
(6)如果事务回滚,则利用undolog日志进行回滚。

二、存储引擎

1、InnoDB和MyISAM的区别

三、索引

1、什么是索引覆盖?

2、什么是最左前缀原则?

3、什么是回表?

4、mysql聚簇和非聚簇索引的区别?

5、什么情况会导至索引失效?

6、Mysql的索引结构是什么样的?

7、B树和B+树的区别

8、什么是索引下推?

9、索引优点和缺点

四、锁

1、mysql锁有哪些,如何理解?

2、update是加行锁还是表锁?

3、Explain中各字段分别表示什么?

 

五、日志

1、mysql是有哪几种日志?作用分别是什么?

 

标签:事务,索引,事物,update,夺命,版本,mysql,100,日志
From: https://www.cnblogs.com/zhengwei-cq/p/18365011

相关文章

  • MySQL从入门到精通(第5-8章)
    文章目录5排序与分页5.1排序数据5.1.1排序规则5.1.2单列排序5.1.3多列排序5.2分页5.2.1实现规则5.2.2拓展6多表查询6.1笛卡尔积6.1.1笛卡尔积(或交叉连接)的理解6.1.2笛卡尔积可能存在的问题与解决6.2多表查询分类讲解6.2.1等值连接与非等值连接6.2.1.1......
  • sql server导入mysql,使用工具SQLyog
    概述需要将sqlserver的数据导入到mysql中,由于2种数据库存在各种差异,比如表字段类型就有很多不同,因此需要工具来实现。这里使用SQLyog来实现。 SQLyog安装安装过程参考文档:https://blog.csdn.net/Sunshine_liang1/article/details/84400820注意:版本不能太低,必须要有导入外......
  • 银尔达 M100P-B 4G核心板
    1.简介M100E-B系列DTU是由银尔达(yinerda)推出的工业级的单TTL串口DTU。小巧、稳定、可靠。适合设备控制,状态检测,传感器数据采集等通过4G网络与服务器通讯的场景。特性如下:1、5~12V供电;2、工作环境为-35℃-75℃;3、支持1路TTL串口,兼容3.3V电平和5V电平;4、支持基站定......
  • 银尔达 Core-Y100P 4g核心板
    大纲一、简介二、硬件规格2.1、硬件参数2.2、硬件资源介绍2.3、硬件尺寸三、NETLED状态描述四,测试硬件环境搭建五:DTU固件实例讲解六:AT固件实例讲解1.简介Core-Y100PDTU是由银尔达(yinerda)推出的工业级的单TTL串口DTU。小巧、稳定、可靠。适合设备控制,状......
  • MySQL 数据类型详解
    MySQL是一种广泛使用的关系型数据库管理系统,它支持多种数据类型以满足各种应用场景的需求。本文将详细介绍MySQL支持的数据类型、它们的使用场景以及实现原理,并通过图示帮助读者更直观地理解。目录简介数值类型整型浮点型定点型日期和时间类型字符串类型字符串二进制字......
  • HeidiSQL中一些简单mysql语句的含义(二)
    一、排序#根据年龄进行降序排序select*fromstudentorderbyagedesc;#根据年龄进行升序排序select*fromstudentorderbyageasc;#给字段起别名,as可以省略selectnoas编号,nameas姓名,ageas年龄fromstudentorderbyageasc;#查找前五条select*fr......
  • MySQL学习笔记之用户管理与权限控制(DCL)
    文章目录MySQL用户管理与权限控制用户管理(DCL-DataControlLanguage)1.查询用户2.创建用户3.修改用户密码4.删除用户权限控制(DCL-DataControlLanguage)1.查询权限2.授予权限3.撤销权限总结完整代码<br/>MySQL用户管理与权限控制用户管理(DCL-Dat......
  • 力扣热题100_贪心算法_55_跳跃游戏
    文章目录题目链接解题思路解题代码题目链接55.跳跃游戏给你一个非负整数数组nums,你最初位于数组的第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回true;否则,返回false。示例1:输入:nums=[......
  • node.js: mysql sequelize es6 ORM (updated)
     /***description:*product:WebStorm*projectvuetstest*File:dbconfig.js*ds:$*IDE:webstorm2023.1*OS:windows10*database:mysql8+sqlserver2019postgreSQL16*dev:node20+vue.js3.0+*@authorhp*@projectvuetstest*......
  • linux安装mysql5.7
    一安装前准备1、检查是否已经安装过mysql,执行命令rpm-qa|grepmysql如果已存在,则执行删除命令后边为Mysql目录rpm-e--nodepsmysql-xxxx 2、检查mysql用户组和用户是否存在,如果没有,则创建cat/etc/group|grepmysqlcat/etc/passwd|grepmysqlgroupaddmysql......