SQL Server 中的事务(含义,属性,管理)
含义: 事务要有非常明确的开始和结束点,SQL Server 中的每一条数据操作语句,例如SELECT、INSERT、UPDATE和DELETE都是隐式事务的一部分。即使只有一条语句,系统也会把这条语句当做一个事务,要么执行所有的语句,要么什么都不执行。 事务开始之后,事务所
含义:
事务要有非常明确的开始和结束点,SQL Server 中的每一条数据操作语句,例如SELECT、INSERT、UPDATE和DELETE都是隐式事务的一部分。即使只有一条语句,系统也会把这条语句当做一个事务,要么执行所有的语句,要么什么都不执行。
事务开始之后,事务所有的操作都会写到事务日志中,写到日志中的事务,一般有两种:一是针对数据的操作,例如插入、修改和删除,这些操作的对象是大量的数据;另一种是针对任务的操作,例如创建索引。当取消这些事务操作时,系统自动执行这些操作的反操作,,保证系统的一致性。系统自动生成一个检查点机制,这个检查点周期的检查事务日志。如果在事务日志中事务全部完成,那么检查点事务日志中的事务提交到数据库中,并且在事务日志中做一个检查点提交标识;如果在事务日志中,事务没有完成,那么检查点不会将事务日志中的事务提交到数据库中,并且在事务日志中做一个检查点未提交的标识。事务的恢复及检查点保证了系统的完整和可恢复。
事务的属性:
事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有4个属性,称为原子性(Atomic)、 一致性(Consistent)、隔离性(Isolated)、持久性(Durable),简称ACID属性,只有这样才能构成一个事务。
原子性:
整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性:
在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
隔离性:
两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。
持久性:
在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
由于一项操作通常会包含许多子操作,而这些子操作可能会因为硬件的损坏或其他因素产生问题,要正确实现ACID并不容易。ACID建议数据库将所有需要更新 以及修改的资料一次操作完毕,但实际上并不可行。
事务管理的常用语句:
BEGIN TRANSACTION——建立一个事务
COMMITTRANSACTION——提交事务
ROLLBACK TRANSACTION——事务失败时执行回滚操作
SAVE TRANSACTION——保存事务
BEGIN TRANSACTION 和COMMIT TRANSACTION同时使用,用来表示事务的开始和结束。
事务的隔离级别:
事务具有隔离性,不同事务中所使用的时间必须要和其他事务进行隔离,在同一时间可以有很多个事务正在处理数据,但是每个数据在同一时刻只能有一个事务进行操作。如果将数据锁定,使用数据的事务就必须要排队等待,这样可以防止多个事务互相影响。但是如果有几个事务因为锁定了自己的数据,同时又在等待其他事务释放数据,则造成死锁。
为了提高数据的并发使用效率,可以为事务在读取数据时设置隔离状态,SQL Server 2012 中的事务隔离状态由低到高分为5个级别。
未授权读取
也称为读未提交(Read Uncommitted):允许脏读取,但不允许更新丢失。如果一个事务已经开始写数据,则另外一个数据则不允许同时进行写操作,但允许其他事务读此行数据。该隔离级别可以通过“排他写锁”实现。
授权读取
,也称为读提交(Read Committed):允许不可重复读取,但不允许脏读取。这可以通过“瞬间共享读锁”和“排他写锁”实现。读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。
可重复读取
可重复读取(Repeatable Read):禁止不可重复读取和脏读取,但是有时可能出现幻影数据。这可以通过“共享读锁”和“排他写锁”实现。读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。
序列化
序列化(Serializable):提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地执行,但不能并发执行。如果仅仅通过“行级锁”是无法实现事务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作的事务访问到。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP에서 eol의 의미와 코드 예제에 대한 심층적인 이해 PHP 프로그래밍에서 eol은 줄의 끝인 "EndOfLine"을 나타내는 일반적인 용어입니다. 운영 체제에 따라 줄의 끝이 다르게 표현될 수 있는데, 이는 eol이라는 개념으로 이어집니다. Windows 시스템에서는 줄 끝이 캐리지 리턴()과 줄 바꿈(), 즉 ""로 구성되지만 Unix/Linux 시스템에서는 줄 끝이 줄 바꿈()으로만 표시됩니다. 이다, "". 이러한 차이로 인해 운영 체제가 달라질 수 있습니다.

WindowsServerBackup은 WindowsServer 운영 체제와 함께 제공되는 기능으로, 사용자가 중요한 데이터 및 시스템 구성을 보호하고 중소기업 및 대기업 수준의 기업에 완벽한 백업 및 복구 솔루션을 제공하도록 설계되었습니다. Server2022 이상을 실행하는 사용자만 이 기능을 사용할 수 있습니다. 이 문서에서는 WindowsServerBackup을 설치, 제거 또는 재설정하는 방법을 설명합니다. Windows Server 백업을 재설정하는 방법 서버 백업에 문제가 있거나 백업에 너무 오랜 시간이 걸리거나 저장된 파일에 액세스할 수 없는 경우 Windows Server 백업 설정을 재설정하는 것을 고려할 수 있습니다. Windows를 재설정하려면

WICC 코인이란 무엇입니까? WICC 코인은 WaykiChainCoin의 약자로, 블록체인 기술을 기반으로 한 디지털 화폐입니다. 효율적이고 확장 가능하며 안전한 공개 체인인 WaykiChain은 기업과 개발자에게 완전한 블록체인 인프라와 혁신적인 도구를 제공하기 위해 최선을 다하고 있습니다. WaykiChain 생태계의 핵심 토큰인 WICC 코인은 플랫폼에서 중요한 역할을 합니다. WICC 통화의 특징 1. 안전하고 신뢰할 수 있음: WaykiChain은 DPoS 합의 알고리즘을 채택하고 신뢰할 수 있는 분산 잠금 메커니즘과 합의 메커니즘을 갖추고 있어 높은 수준의 네트워크 보안을 보장합니다. 2. 효율성 및 확장성: WaykiChain은 밀리초 수준의 거래 확인 속도를 가지며 초당 수천 건의 거래를 처리할 수 있습니다.

Kuaishou는 중국 최고의 짧은 동영상 플랫폼으로서 많은 사용자를 보유하고 있으며 비공개 메시징 기능은 사용자 간의 상호 작용을 위한 중요한 채널입니다. 그러나 일부 사용자는 비공개 메시지에 콘텐츠를 표시하는 기능이 불편하다고 생각하여 이 기능을 선택적으로 끌 수 있기를 원할 수 있습니다. 1. Kuaishou 비공개 메시지의 콘텐츠 표시 기능을 끄는 방법은 무엇입니까? 1. Kuaishou 앱을 열고 개인 계정에 로그인하세요. 2. Kuaishou 메인 인터페이스에 들어가서 오른쪽 하단에 있는 "내" 버튼을 클릭하여 개인 센터에 들어갑니다. 3. 개인센터 페이지에서 아바타를 클릭하여 개인설정에 진입합니다. 4. 개인 설정 페이지에서 "개인 정보 설정" 옵션을 찾아 클릭하여 들어갑니다. 5. 개인정보 설정 페이지에서 "비공개 메시지에 콘텐츠 표시" 옵션을 찾아 클릭하여 들어갑니다. 6. 비공개 메시지 표시 내용 설정 페이지에서 '비공개 메시지 표시 내용' 기능을 꺼주세요.

MySQL 트랜잭션 처리: 자동 제출과 수동 제출의 차이점 MySQL 데이터베이스에서 트랜잭션은 모든 실행이 성공하거나 모든 실행이 실패하여 데이터의 일관성과 무결성을 보장합니다. MySQL에서는 트랜잭션을 자동 제출과 수동 제출로 나눌 수 있는데, 차이점은 트랜잭션 제출 시기와 트랜잭션에 대한 제어 범위에 있습니다. 다음에서는 자동 제출과 수동 제출의 차이점을 자세히 소개하고 설명할 특정 코드 예제를 제공합니다. 1. 표시되지 않는 경우 MySQL에서 자동으로 제출

MySQL 호스트 이름의 의미 및 구체적인 사용법 MySQL은 다양한 웹 애플리케이션에서 널리 사용되는 인기 있는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. MySQL에서 호스트 이름은 데이터베이스 서버에 연결된 호스트의 이름을 지정하는 데 사용되는 중요한 개념입니다. 이번 글에서는 MySQL 호스트네임의 의미와 실제 개발에서 어떻게 활용하는지 자세히 설명하겠습니다. MySQL 호스트 이름의 의미: MySQL에서 호스트 이름은 허용되는 연결을 지정하는 데 사용됩니다.

MySQL 트랜잭션의 원칙 및 응용 시나리오 데이터베이스 시스템에서 트랜잭션은 일련의 SQL 작업입니다. 이러한 작업은 모두 성공적으로 실행되거나 모두 실패하여 롤백됩니다. 일반적으로 사용되는 관계형 데이터베이스 관리 시스템인 MySQL은 트랜잭션 특성을 지원하며 데이터베이스의 데이터가 일관성, 격리성, 내구성 및 원자성 측면에서 보장되도록 보장할 수 있습니다. 이 기사에서는 MySQL 트랜잭션의 기본 원칙부터 시작하여 해당 애플리케이션 시나리오를 소개하고 독자가 참조할 수 있는 특정 코드 예제를 제공합니다. MySQL 트랜잭션의 원리: My

CSS의 하단 속성 구문 및 코드 예제 CSS에서 하단 속성은 요소와 컨테이너 하단 사이의 거리를 지정하는 데 사용됩니다. 상위 요소의 아래쪽을 기준으로 요소의 위치를 제어합니다. Bottom 속성의 구문은 다음과 같습니다. element{bottom:value;} 여기서 element는 스타일을 적용할 요소를 나타내고, value는 설정할 아래쪽 값을 나타냅니다. 값은 픽셀과 같은 특정 길이 값일 수 있습니다.
