MYSQL--(1.存储引擎 *2.事务*)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MYSQL--(1.存储引擎 *2.事务*)

存储引擎:

       1.介绍

               1>在数据库管理系统当中通过使用数据引擎来实现数据的增删改,查询

               2>不同的存储引擎提供的有不同的存储机制,索引技巧等功能  MYSQL的核心,就是存储引擎

               3>同样的,用户也可以根据自己的需要进行选择,更改自己需要的存储引擎

               4>可以使用show engines 来查询当前所有的存储引擎

   2.分类介绍:

               1>先简单介绍存储引擎最常用的: MYLSAM  InnoDB  Memory

  2>全部存储引擎介绍:

       3.操作:

-- 1.查看当前的默认存储引擎
show variables like '%storage_engine%';
在MYSQL5.5之前,是以MYLSAM作为默认的存储引擎的
在5.5之后,默认引擎变成了InnoDB
 
-- 2.查看具体的某个表所使用的引擎(看显示结果当中engine后面显示的,就是存储引擎)
show create table tablename;
 
-- 3.创建某个新表时设置存储引擎
create table(....) engine=enginenamn;
 
-- 4.修改某个已经存在的表的存储引擎
alter table tablename engine=enginename;


二 事务:

       1.介绍:

               事务是通过存储引擎实现的,而且目前来看,对于MYSQL仅仅只有InnoDBc才能够支持事务的使用

       2.作用:

              1>事务能够用来保证数据库的完整性,保证大量的SQL语句的执行,要么全部执行,要么全部不执行!

               2>事务用来对于DDL,DML,DCL进行操作,比如插入,修改,删除等操作,并且默认都是自动提交的!

       3.操作:

事务操作主要有以下几个
1.打开事务 Start Transaction
  任何一条的DML操作的执行,都标志着事务的开始
  -- 可以使用.begin.作为开始语句
2.提交事务(所有语句全部正常执行)  Commit Transaction
  成功的结束,会将所有的DML操作历史记录跟底层硬盘进行一次同步
3.回滚事务(语句执行不完全) Rollback Transaction
  结束失败,将所有的DML历史操作清空
 
但是需要注意的一点是,再平常的使用当中,系统会自动将每一条的DML看作是一个事务,自动的提交,但是在有多个语句的事务当中,应当是全部完成之后成功了,才会进行提交!所以需要我们手动的关闭自动提交的指令
set autocommit=0; 禁止自动提交
set autocommit=1; 开始自动提交
 
 
create database transaction_1;
use transaction_1;
create table acount(
id int primary key,
name VARCHAR(20),
money double
);
 
insert into acount VALUES(1,'张三',1000);
insert into acount VALUES(2,'李四',2000);
 
将1账户的钱转给2账户,使用事务的方式
set autocommit=0;
-- 查看状态
select @@autocommit;
begin;
update acount set money= money-200 where name='张三';
update acount set money= money+200 where name='李四';
-- 提交事务
commit;
-- 回滚事务
rollback;
 
end;

 4.事务的特性:

1.原子性:

       其实就是整体性,必须将事务当中的所有语句当作是一个整体,不可分割,事务开始后的所有操作,要么全部执行,要么全部都不会执行

2.一致性:

       也就是事务执行前后的状态必须要保持一致!

3.隔离性:

       在一些比较大的工程当中,有许多的事务,为了避免一些错误的产生,就需要对这些事务进行隔离处理

4.持久性:

       事务在提交之前,都可以通过回滚的方式而不让数据落地!但是一但提交,是无法再回滚的,是永久性的!

5 事务的隔离级别:

 1.介绍:

               当多个事务对一个表进行操作的时候,为了避免几个事务同时对于表进行修改从而产生错误.使得最后的结果没有达到预期.因此就需要使用事务隔离 I

 2.分类:

               

               主要是四类,并且从上到下,其事务与事务之间的关联就越小,影响程度就越小

               TIPS:mysql的默认隔离级别是第三种!

    自然,不同的隔离级别,也会产生不一样的问题

               3.隔离级别相关操作:

查看隔离级别
 show variables like '%isolation%';
 
 -- 设置隔离级别(从上往下的关系程度越来越小,联系越小)
 set session transaction isolation level read unconmmitted;
 
 set session transaction isolation level read conmmitted;
 
 set session transaction isolation level repeatable read;
 
 set session transaction isolation level SERIALIZABLE;

   4.对于各个级别问题的概述*

 set session transaction isolation level read unconmmitted;
 
 -- 脏读,举一个简单的例子,上班组小王在月末发现银行卡里'获得'了工资,10000元,但是之后老板发现发错了,在小王快要消费的时候进行了rollback,实际上的数据并没有从磁盘当中进行复制读取,在提交之前,小王的账户就多了前,这就是脏读!也就是发生在数据还没有完全提交的时候
 
 set session transaction isolation level read conmmitted;
-- 这种级别会产生不可重复读:指的是对于A事务来说,在B事务执行过DML的一些语句之后,B事务提交之前,跟B事务提交之后,A读取出来的数据是不一样的,不是重复的,因此被称作不可重复读
 
 set session transaction isolation level repeatable read;
 -- 这种隔离级别会产生可重复读,相对于不可重复度,可重复读,无论在B事务提交前还是后,A读取的值是一样的,但是也有问题,A提交前后的值不一样,有不可重复读的存在!
 
 set session transaction isolation level SERIALIZABLE;
 -- 没有事务之间的问题,因为这种的隔离方式将所有的事务单独区分开了,一个事务只能够看着另外一个事务做完事情之后才能够进行,因此其效率比较的低下

                                                  OVER!感谢观看

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
28天前
|
SQL 关系型数据库 MySQL
MySQL锁机制:并发控制与事务隔离
本文深入解析了MySQL的锁机制与事务隔离级别,涵盖锁类型、兼容性、死锁处理及性能优化策略,助你掌握高并发场景下的数据库并发控制核心技巧。
|
2月前
|
存储 监控 Oracle
MySQL事务
MySQL事务具有ACID特性,包括原子性、一致性、隔离性和持久性。其默认隔离级别为可重复读,通过MVCC和间隙锁解决幻读问题,确保事务间数据的一致性和并发性。
MySQL事务
|
3月前
|
存储 SQL 关系型数据库
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
|
14天前
|
关系型数据库 MySQL 数据库
MySql事务以及事务的四大特性
事务是数据库操作的基本单元,具有ACID四大特性:原子性、一致性、隔离性、持久性。它确保数据的正确性与完整性。并发事务可能引发脏读、不可重复读、幻读等问题,数据库通过不同隔离级别(如读未提交、读已提交、可重复读、串行化)加以解决。MySQL默认使用可重复读级别。高隔离级别虽能更好处理并发问题,但会降低性能。
|
3月前
|
安全 关系型数据库 MySQL
mysql事务隔离级别
事务隔离级别用于解决脏读、不可重复读和幻读问题。不同级别在安全与性能间权衡,如SERIALIZABLE最安全但性能差,READ_UNCOMMITTED性能高但易导致数据不一致。了解各级别特性有助于合理选择以平衡并发性与数据一致性需求。
148 1
|
5月前
|
存储 SQL 关系型数据库
MySQL存储引擎简介
在选择相应的存储引擎时,需要充分考虑实际业务场景、性能需求和数据一致性要求,从而为数据管理提供最佳支持。
306 17
|
10月前
|
存储 缓存 关系型数据库
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
MySQL的存储引擎是其核心组件之一,负责数据的存储、索引和检索。不同的存储引擎具有不同的功能和特性,可以根据业务需求 选择合适的引擎。本文详细介绍了MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案。
1668 57
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
|
10月前
|
SQL 安全 关系型数据库
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
事务是MySQL中一组不可分割的操作集合,确保所有操作要么全部成功,要么全部失败。本文利用SQL演示并总结了事务操作、事务四大特性、并发事务问题、事务隔离级别。
4237 56
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
|
7月前
|
存储 关系型数据库 MySQL
MYSQL支持的存储引擎有哪些, 有什么区别
MYSQL存储引擎有很多, 常用的就二种 : MyISAM和InnerDB , 者两种存储引擎的区别 ; ● MyISAM支持256TB的数据存储 , InnerDB只支持64TB的数据存储 ● MyISAM 不支持事务 , InnerDB支持事务 ● MyISAM 不支持外键 , InnerDB支持外键
|
9月前
|
SQL 关系型数据库 MySQL
MySQL事务日志-Undo Log工作原理分析
事务的持久性是交由Redo Log来保证,原子性则是交由Undo Log来保证。如果事务中的SQL执行到一半出现错误,需要把前面已经执行过的SQL撤销以达到原子性的目的,这个过程也叫做"回滚",所以Undo Log也叫回滚日志。
358 7
MySQL事务日志-Undo Log工作原理分析

推荐镜像

更多