1、事务概念: 概念:在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制
1、事务概念:
概念:在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么完全成功执行,完成整个工作单元操作,要么一点也不执行。
主要特性:确保数据库的完整性。
2、事务的ACID特性
对一组SQL语句操作构成事务,数据库操作系统必须确保这些操作的原子性,一致性,隔离性,持久性.
1、 原子性(Atomicity)
事务的原子性是指事务中包含的所有操作要么全做,要么不做,也就是说所有的活动在数据库中要么全部反映,要么全部不反映,以保证数据库的一致性。
2、 一致性(Consistency)
事务的一致性是指数据库在事务操作前和事务处理后,其中数据必须满足业务的规则约束。
3、 隔离性(Isolation)
隔离性是指数据库允许多个并发的事务同时对其中的数据进行读写或修改的能力,隔离性可以防止多个事务的并发执行时,由于它们的操作命令交叉执行而导致数据的不一致性。
4、 持久性(durability)
事务的持久性是指在事务处理结束后,它对数据的修改应该是永久的。即便是系统在遇到故障的情况下也不会丢失,这是数据的重要性决定的。
3、事务的控制语句
在Oracle数据库中,没有提供开始事务处理语句,所有的事务都是隐式开始的,也就是说在oracle中,用户不可以显示使用命令来开始一个事务.oracle任务第一条修改数据库的语句,或者一些要求事务处理的场合都是事务的隐式开始。但是当用户想要终止一个事务处理时,必须显示使用commit和rollback语句结束。
根据事务ACID属性,oracle提供了如下的事务控制语句:
Set transaction 设置事物属性
Set constrains 设置事物的约束模式
约束模式是指:在事务中修改数据时,数据库中的约束立即应用于数据,还是将约束推迟到当前事务结束后应用。
Savepoint 在事务中建立一个存储的点.当事务处理发生异常而回滚事务时,可指定事务回滚到某存储点.然后从该存储点重新执行。
Release savepoint 删除存储点
Rollback 回滚事务 取消对数据库所作的任何操作
Commit 提交事务 对数据库的操作做持久的保存。
3、1设置事物的属性:
set transaction语句可用来设置事物的各种属性。该语句必须放在事务处理的第一个语句.
也就是说,必须在任何insert、update 、delete语句以及其他的事务处理。
Set transaction的语句可以让用户对事务的以下属性进行设置
指定事务的隔离层
规定回滚事务所使用的存储空间
命名事务
备注:在使用set transaction语句设置属性时,对于规定回滚事务所使用的存储空间的设置很少使用.对于命名事务也非常简单,只有在分布式事务处理中才会体现出命名事务的用途.
注意:set transaction只对当前事务有效,事务终止,事务当前的设置将会失效。
1、 数据异常
事务的隔离性定义了一个事务与其它事务的隔离程度.为了更好的理解隔离层,首先讨论一下并发事务对同一个数据库进行访问可能发生的情况.在并发事务中总体来说会发生如下3种情况
错读 |脏读
非重复读取|不可重复读
假读|幻读
错读|脏读:当一个事务修改数据时,另一事务读取了该数据,但是第一事务由于某种原因取消对数据修改,使数据返回了原状态,这是第二个事务读取的数据与数据库中数据不一致.这就叫错读。
非重复读取:是指一个事务读取数据库中的数据后,另一个事务则更新了数据,当第一个事务再次读取其中的数据时,就会发现数据已经发生了改变,这就是非重复读取。非重复读取所导致的结果就是一个事务前后两次读取的数据不相同。
假读:如果一个事务基于某个条件读取数据后,另一个事务则更新了同一个表中的数据,这时第一个事务再次读取数据时,根据搜索的条件返回了不同的行,这就是假读。
事务中遇到的这些异常与事务的隔离性设置有关,事务的隔离性设置越多,异常就出现的越少,但并发效果就越低,事务的隔离性设置越少,异常出现的越多,并发效果越高。
2、 选择隔离层
针对3中读取的数据时产生的不一致现象,在ANSI SQL标准92中定义了4个事务的隔离级别.如下图所示:
隔离层 错读|脏读 非重复读取|不可重复读 假读|幻读
READ UNCOMMITTED(非提交读) 是 是 是
READ COMMITTED(提交读) 否 是 是
Repeatable READ(可重复读) 否 否 是
Serializable(串行读) 否 否 否
Oracle支持上述四种隔离层中的两种:read committed 和serializable。除此之外oralce中还定义read only 和 read write隔离层。
Read committed 这是oracle默认的隔离层。
Serializable:设置事物的隔离层位它时,事务与事务之间完全隔开,事务以串行的方式执行,这并不是说一个事务必须结束才能启动另外一个事务,而是说这些事务的执行的结果于一次执行的事务的结果一致。
Read only和 read write 当使用read only时,事务中不能有任何修改数据库中数据的操作语句,这包括 insert、update、delete、create语句。Read only是serializable的一个子集,区别是read only 只读,而serialzable可以执行DML操作。Read write它是默认设置,该选项表示在事务中可以有访问语句、修改语句.但不经常使用.
3、 建立set transaction的语句
列举如下:
Set transaction read only
Set transaction read write
Set transaction isolation level read committed
Set transaction isolation level serializable
注意:这些语句是互斥的.即不能够同时设置两个或者两个以上的选项。
4、 结束事务:
什么情况下代表事务的结束呢?
1、 Commit 提交事务
2、 rollback 回滚事务
//只读的案例
SQL> set transaction read only;
Transaction set
SQL> select * from users where username='mj';
USERNAME PASSWORD NAME ADDRESS ZIP
-------------------- -------------------- -------------------- -------------------- -------
mj redarmy 陈红军
SQL> update users set password='123' where username='mj';
update users set password='123' where username='mj'
ORA-01456: 不能在 READ ONLY 事务处理中执行插入/删除/更新操作
//脏读的案例
SQL> set transaction isolation level read committed;
Transaction set
SQL> select * from users where username='mj';
USERNAME PASSWORD NAME ADDRESS ZIP
-------------------- -------------------- -------------------- -------------------- -------
mj redarmy 陈红军
SQL> update users set password='123' where username='mj';
1 row updated
SQL> select * from users where username='mj';
USERNAME PASSWORD NAME ADDRESS ZIP
-------------------- -------------------- -------------------- -------------------- -------
mj 123 陈红军
SQL> rollback;
以上内容归redarmy_chen创建,如需转载请附带出处,如有疑问请发送邮件至redarmy_chen@qq.com

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于索引优化器工作原理的相关内容,其中包括了MySQL Server的组成,MySQL优化器选择索引额原理以及SQL成本分析,最后通过 select 查询总结整个查询过程,下面一起来看一下,希望对大家有帮助。

sybase是基于客户/服务器体系结构的数据库,是一个开放的、高性能的、可编程的数据库,可使用事件驱动的触发器、多线索化等来提高性能。

visual foxpro数据库文件是管理数据库对象的系统文件。在VFP中,用户数据是存放在“.DBF”表文件中;VFP的数据库文件(“.DBC”)中不存放用户数据,它只起将属于某一数据库的 数据库表与视图、连接、存储过程等关联起来的作用。

数据库系统由4个部分构成:1、数据库,是指长期存储在计算机内的,有组织,可共享的数据的集合;2、硬件,是指构成计算机系统的各种物理设备,包括存储所需的外部设备;3、软件,包括操作系统、数据库管理系统及应用程序;4、人员,包括系统分析员和数据库设计人员、应用程序员(负责编写使用数据库的应用程序)、最终用户(利用接口或查询语言访问数据库)、数据库管理员(负责数据库的总体信息控制)。

microsoft sql server是Microsoft公司推出的关系型数据库管理系统,是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理,具有使用方便可伸缩性好与相关软件集成程度高等优点。SQL Server数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使用户可以构建和管理用于业务的高可用和高性能的数据应用程序。

数据库的“完整性”是指数据的正确性和相容性。完整性是指数据库中数据在逻辑上的一致性、正确性、有效性和相容性。完整性对于数据库系统的重要性:1、数据库完整性约束能够防止合法用户使用数据库时向数据库中添加不合语义的数据;2、合理的数据库完整性设计,能够同时兼顾数据库的完整性和系统的效能;3、完善的数据库完整性有助于尽早发现应用软件的错误。

结构层次是“数据库→数据表→记录→字段”;字段构成记录,记录构成数据表,数据表构成了数据库。数据库是一个完整的数据的记录的整体,一个数据库包含0到N个表,一个表包含0到N个字段,记录是表中的行。

mysql查询为什么会慢,关于这个问题,在实际开发经常会遇到,而面试中,也是个高频题。遇到这种问题,我们一般也会想到是因为索引。那除开索引之外,还有哪些因素会导致数据库查询变慢呢?


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version
