当前位置:首页 » 数据仓库 » 数据库中有哪些类型的事务
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

数据库中有哪些类型的事务

发布时间: 2022-05-05 20:38:34

1. 数据库有哪些类型

数据库有两种类型,分别是关系型数据库与非关系型数据库。

数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。

关系型数据库主要有:

Oracle、DB2、Microsoft sql Server、Microsoft Access、MySQL等等。

非关系型数据库主要有:

NoSql、Cloudant、MongoDb、redis、HBase等等。

(1)数据库中有哪些类型的事务扩展阅读

非关系型数据库的优势:

1、性能高:NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。

2、可扩展性好:同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。

关系型数据库的优势:

1、可以复杂查询:可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。

2、事务支持良好:使得对于安全性能很高的数据访问要求得以实现。

2. 什么是数据库中的事务

事务就是一系列的操作,这些操作完成一项任务.只要这些操作里有一个操作没有成功,事务就操作失败,发生
回滚
事件.即撤消前面的操作,这样可以保证数据的一致性.而且可以把操作暂时放在缓存里,等所有操作都成功有提交数据库,这样保证费时的操作都是有效操作.

3. 数据库中的事务是什么

数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。
一个数据库事务通常包含了一个序列的对数据库的读/写操作。它的存在包含有以下两个目的:
为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。
当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。
当事务被提交给了DBMS(数据库管理系统),则DBMS(数据库管理系统)需要确保该事务中的所有操作都成功完成且其结果被永久保存在数据库中,如果事务中有的操作没有成功完成,则事务中的所有操作都需要被回滚,回到事务执行前的状态;同时,该事务对数据库或者其他事务的执行无影响,所有的事务都好像在独立的运行。
但在现实情况下,失败的风险很高。在一个数据库事务的执行过程中,有可能会遇上事务操作失败、数据库系统/操作系统失败,甚至是存储介质失败等情况。这便需要DBMS对一个执行失败的事务执行恢复操作,将其数据库状态恢复到一致状态(数据的一致性得到保证的状态)。为了实现将数据库状态恢复到一致状态的功能,DBMS通常需要维护事务日志以追踪事务中所有影响数据库数据的操作。

4. 数据库操作中的事务指

即是数据库事务,数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。
原子性(Atomic)(Atomicity) 事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的。如果系统只执行这些操作的一个子集,则可能会破坏事务的总体目标。原子性消除了系统处理操作子集的可能性。
一致性(Consistent)(Consistency) 事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。某些维护一致性的责任由应用程序开发人员承担,他们必须确保应用程序已强制所有已知的完整性约束。如,当开发用于转账的应用程序时,应避免在转账过程中任意移动小数点。隔离性(Insulation)(Isolation) 由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为隔离性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。当事务可序列化时将获得最高的隔离级别。在此级别上,从一组可并行执行的事务获得的结果与通过连续运行每个事务所获得的结果相同。由于高度隔离会限制可并行执行的事务数,所以一些应用程序降低隔离级别以换取更大的吞吐量。持久性(Duration)(Durability) 事务完成之后,它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。

5. 数据库中的事务是什么

事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为
ACID(原子性、一致性、隔离性和持久性)属性,
只有这样才能成为一个事务:
原子性
事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。
一致性
事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。
事务结束时,所有的内部数据结构(如
B
树索引或双向链表)都必须是正确的。
隔离性
由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,
要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,
并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。
持久性
事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。

6. 关系数据库事务模型有哪些

关系数据库事务有三种模型,分别是显式事务、隐式事务和自动事务。

1.显式事务显式事务又称拥护自定义事务,是指用显式的方式定义其开始和结束的事务,当使用starttransaction和commit语句时则表示发生显式事务。

2.隐式事务隐式事务是指每一条数据操作语句都自动地成为一个事务,事务的开始是隐式的,事务的结束有明确的标记。即当用户进行数据操作时,系统自动开启一个事务,事务的结束则需手动调用commit或rollback语句来结束当前事务,在当前事务结束后又自动开启一个新事务。

3.自动事务自动事务是指能够自动开启事务并且能够自动结束事务。在事务执行过程中,如果没有出现异常,事务则自动提交;当执行过程产生错误时,则事务自动回滚。

7. 数据库的类型都有哪些

数据库有两种类型,分别是关系型数据库与非关系型数据库。

数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。

关系型数据库主要有:

Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等等。

非关系型数据库主要有:

NoSql、Cloudant、MongoDb、redis、HBase等等。

(7)数据库中有哪些类型的事务扩展阅读

非关系型数据库的优势:

1、性能高:NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。

2、可扩展性好:同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。

关系型数据库的优势:

1、可以复杂查询:可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。

2、事务支持良好:使得对于安全性能很高的数据访问要求得以实现。

8. 数据库的事务机制是什么

回答的有点多请耐心看完。
希望能帮助你还请及时采纳谢谢
1事务的原理
事务就是将一组SQL语句放在同一批次内去执行,如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行。MySQL事务处理只支持InnoDB和BDB数据表类型。

1事务的ACID原则
** 1(Atomicity)原子性**: 事务是最小的执行单位,不允许分割。原子性确保动作要么全部完成,要么完全不起作用;
2(Consistency)一致性: 执行事务前后,数据保持一致;
3(Isolation)隔离性: 并发访问数据库时,一个事务不被其他事务所干扰。
4(Durability)持久性: 一个事务被提交之后。对数据库中数据的改变是持久的,即使数据库发生故障。

1缓冲池(Buffer Pool)
Buffer Pool中包含了磁盘中部分数据页的映射。当从数据库读取数据时,会先从Buffer Pool中读取数据,如果Buffer Pool中没有,则从磁盘读取后放入到Buffer Pool中。当向数据库写入数据时,会先写入到Buffer Pool中,Buffer Pool中更新的数据会定期刷新到磁盘中(此过程称为刷脏)。

2日志缓冲区(Log Buffer)
当在MySQL中对InnoDB表进行更改时,这些更改命令首先存储在InnoDB日志缓冲区(Log Buffer)的内存中,然后写入通常称为重做日志(redo logs)的InnoDB日志文件中。

3双写机制缓存(DoubleWrite Buffer)
Doublewrite Buffer是共享表空间的物理文件的 buffer,其大小是2MB.是一个一分为二的2MB空间。
刷脏操作开始之时,先进行脏页**‘备份’**操作.将脏页数据写入 Doublewrite Buffer.
将Doublewrite Buffer(顺序IO)写入磁盘文件中(共享表空间) 进行刷脏操作.

4回滚日志(Undo Log)
Undo Log记录的是逻辑日志.记录的是事务过程中每条数据的变化版本和情况.
在Innodb 磁盘架构中Undo Log 默认是共享表空间的物理文件的Buffer.
在事务异常中断,或者主动(Rollback)回滚的过程中 ,Innodb基于 Undo Log进行数据撤销回滚,保证数据回归至事务开始状态.

5重做日志(Redo Log)
Redo Log通常指的是物理日志,记录的是数据页的物理修改.并不记录行记录情况。(也就是只记录要做哪些修改,并不记录修改的完成情况) 当数据库宕机重启的时候,会将重做日志中的内容恢复到数据库中。

1原子性
Innodb事务的原子性保证,包含事务的提交机制和事务的回滚机制.在Innodb引擎中事务的回滚机制是依托 回滚日志(Undo Log) 进行回滚数据,保证数据回归至事务开始状态.

2那么不同的隔离级别,隔离性是如何实现的,为什么不同事物间能够互不干扰? 答案是 锁 和 MVCC。
3持久性
基于事务的提交机制流程有可能出现三种场景.
1 数据刷脏正常.一切正常提交,Redo Log 循环记录.数据成功落盘.持久性得以保证

2数据刷脏的过程中出现的系统意外导致页断裂现象 (部分刷脏成功),针对页断裂情况,采用Double write机制进行保证页断裂数据的恢复.

3数据未出现页断裂现象,也没有刷脏成功,MySQL通过Redo Log 进行数据的持久化即可

4一致性
从数据库层面,数据库通过原子性、隔离性、持久性来保证一致性

2事务的隔离级别
Mysql 默认采用的 REPEATABLE_READ隔离级别 Oracle 默认采用的 READ_COMMITTED隔离级别

脏读: 指一个事务读取了另外一个事务未提交的数据。
不可重复读: 在一个事务内读取表中的某一行数据,多次读取结果不同
虚读(幻读): 是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。

2基本语法
-- 使用set语句来改变自动提交模式
SET autocommit = 0; /*关闭*/
SET autocommit = 1; /*开启*/

-- 注意:
--- 1.MySQL中默认是自动提交
--- 2.使用事务时应先关闭自动提交

-- 开始一个事务,标记事务的起始点
START TRANSACTION

-- 提交一个事务给数据库
COMMIT

-- 将事务回滚,数据回到本次事务的初始状态
ROLLBACK

-- 还原MySQL数据库的自动提交
SET autocommit =1;

-- 保存点
SAVEPOINT 保存点名称 -- 设置一个事务保存点
ROLLBACK TO SAVEPOINT 保存点名称 -- 回滚到保存点
RELEASE SAVEPOINT 保存点名称 -- 删除保存点
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*
课堂测试题目

A在线买一款价格为500元商品,网上银行转账.
A的银行卡余额为2000,然后给商家B支付500.
商家B一开始的银行卡余额为10000

创建数据库shop和创建表account并插入2条数据
*/

CREATE DATABASE `shop`CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `shop`;

CREATE TABLE `account` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(32) NOT NULL,
`cash` DECIMAL(9,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8

INSERT INTO account (`name`,`cash`)
VALUES('A',2000.00),('B',10000.00)

-- 转账实现
SET autocommit = 0; -- 关闭自动提交
START TRANSACTION; -- 开始一个事务,标记事务的起始点
UPDATE account SET cash=cash-500 WHERE `name`='A';
UPDATE account SET cash=cash+500 WHERE `name`='B';
COMMIT; -- 提交事务
# rollback;
SET autocommit = 1; -- 恢复自动提交
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
3事务实现方式-MVCC
1什么是MVCC
MVCC是mysql的的多版本并发控制即multi-Version Concurrency Controller,mysql的innodb引擎支持MVVC。MVCC是为了实现事务的隔离性,通过版本号,避免同一数据在不同事务间的竞争,你可以把它当成基于多版本号的一种乐观锁。当然,这种乐观锁只在事务级别为RR(可重复读)和RC(读提交)生效。MVCC最大的好处,相信也是耳熟能详:读不加锁,读写不冲突,极大的增加了系统的并发性能。

2MVCC的实现机制
InnoDB在每行数据都增加两个隐藏字段,一个记录创建的版本号,一个记录删除的版本号。

在多版本并发控制中,为了保证数据操作在多线程过程中,保证事务隔离的机制,降低锁竞争的压力,保证较高的并发量。在每开启一个事务时,会生成一个事务的版本号,被操作的数据会生成一条新的数据行(临时),但是在提交前对其他事务是不可见的;对于数据的更新(包括增删改)操作成功,会将这个版本号更新到数据的行中;事务提交成功,新的版本号也就更新到了此数据行中。这样保证了每个事务操作的数据,都是互不影响的,也不存在锁的问题。

3MVCC下的CRUD
SELECT:
当隔离级别是REPEATABLE READ时select操作,InnoDB每行数据来保证它符合两个条件:
** 1 事务的版本号 大于等于 创建行版本号**
** 2 行数据的删除版本 未定义 或者大于 事务版本号**
【行创建版本号 事务版本号 行删除版本号】

INSERT:
InnoDB为这个新行 记录 当前的系统版本号。

DELETE:
InnoDB将当前的系统版本号 设置为 这一行的删除版本号。

UPDATE:
InnoDB会写一个这行数据的新拷贝,这个拷贝的版本为 当前的系统版本号。它同时也会将这个版本号 写到 旧行的删除版本里。
————————————————
版权声明:本文为CSDN博主“@Autowire”的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zs18753479279/article/details/113933252

9. “数据库中的事务”是什么

事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,
只有这样才能成为一个事务:
原子性
事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。

一致性
事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。
事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。

隔离性
由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,
要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,
并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。
持久性
事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。