mysql数据库事务和引擎相关概念

今天被mysql数据库问题给问住了,记录一下。

数据库事务大概分三种类型:显式事务、隐式事务、自动提交事务

显式事务--对显式事务的定义是,事务中存在显式的BEGIN TRANSACTION语句,后跟一个或多个相关的数据修改语句,并以显式的COMMIT TRANSACTION语句结束。错误检查加在COMMIT TRANSACTION语句之前,这样,如果操作有错,事务可以通过ROLLBACK TRANSACTION语句来撤消。

隐式事务--隐式事务遵循其他一些数据库产品的行为规范,只要进行数据修改,就隐式地开始一个事务。然而,在执行显式的COMMIT TRANSACTION或者ROLLBACK TRANSACTION语句,事务是不会完成的。使用SET IMPLICIT_ TRANSACTION ON命令可以在单个连接上激活隐式事务。

自动提交事务--如果数据修改语句是在没有显式或者隐式事务的数据库中执行的,就称为自动提交事务。自动提交事务中的修改模式与下一节介绍的其他事务相同。

简言之,它一次仅执行一个操作。那么哪种事务模式最好呢?这取决于应用程序。如果希望SQL Server以某种方式执行,就应明确指定,以免出现混淆。许多人都喜欢使用显式事务。如果有5个不同的操作需要执行为一个单元,就可以把它们封装在一个显式事务中,将其作为一个单元一起执行。如果不希望使用这种执行方式,只要不定义显式事务,每个语句就会互不关联地独立执行。通过阅读代码,您就可以看出多个操作是否需要在一个事务中执行。

 

数据库事务有不同的隔离级别,不同的隔离级别对锁的使用是不同的,锁的应用最终导致不同事务的隔离级别。

隔离性分为四个级别:

 1读未提交:(Read Uncommitted)

 2读已提交(Read Committed) 大多数数据库默认的隔离级别

 3可重复读(Repeatable-Read) mysql数据库所默认的级别

 4序列化(serializable)

 

,mysql数据库常用引擎大概为四种类型:MYISAM、Memory、InnoDB、Archive

mysql数据库提供了引擎查询功能,我使用的是Navicat,mysql版本为mysql8.0。结果

如下图

如果要想查看数据库默认使用哪个引擎,可以通过使用命令:

SHOW VARIABLES LIKE 'storage_engine';

来查看,查询结果为:

我的引擎为InnoDB。InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,上图也看到了,InnoDB是默认的MySQL引擎。

InnoDB主要特性有(以下来源于简书,是否为标准不确定~)

1、InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句中提供一个类似Oracle的非锁定读。这些功能增加了多用户部署和性能。在SQL查询中,可以自由地将InnoDB类型的表和其他MySQL的表类型混合起来,甚至在同一个查询中也可以混合

2、InnoDB是为处理巨大数据量的最大性能设计。它的CPU效率可能是任何其他基于磁盘的关系型数据库引擎锁不能匹敌的

3、InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB将它的表和索引在一个逻辑表空间中,表空间可以包含数个文件(或原始磁盘文件)。这与MyISAM表不同,比如在MyISAM表中每个表被存放在分离的文件中。InnoDB表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统

4、InnoDB支持外键完整性约束,存储表中的数据时,每张表的存储都按主键顺序存放,如果没有显示在表定义时指定主键,InnoDB会为每一行生成一个6字节的ROWID,并以此作为主键

5、InnoDB被用在众多需要高性能的大型数据库站点上

InnoDB不创建目录,使用InnoDB时,MySQL将在MySQL数据目录下创建一个名为ibdata1的10MB大小的自动扩展数据文件,以及两个名为ib_logfile0和ib_logfile1的5MB大小的日志文件

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值