이 기사의 내용은 MySQL 트랜잭션 관련 지식에 대한 자세한 소개(코드 예제)입니다. 필요한 친구들이 참고할 수 있기를 바랍니다.
MySQL 트랜잭션 및 트랜잭션 격리 수준
MySQL 트랜잭션은 주로 대규모 작업과 복잡성이 높은 데이터를 처리하는 데 사용됩니다. 예를 들어 인사관리시스템에서 사람을 삭제하면 그 사람의 기본정보도 함께 삭제되며, 우편함, 물품 등 그 사람과 관련된 정보도 함께 삭제된다. 이러한 데이터베이스 운영문은 거래를 구성한다. (추천 과정: MySQL 튜토리얼)
MySQL에서는 Innodb 데이터베이스 엔진을 사용하는 데이터베이스나 테이블만 트랜잭션을 지원합니다
트랜잭션 처리를 사용하여 데이터베이스의 무결성을 유지하고 SQL 배치를 보장할 수 있습니다. 명령문은 모두 실행되거나 모두 실행되지 않습니다
트랜잭션은 명령문 삽입, 업데이트, 삭제를 관리하는 데 사용됩니다
일반적으로 트랜잭션은 원자성, 일관성, 격리성, 내구성이라는 4가지 조건을 충족해야 합니다.
- 트랜잭션의 모든 작업은 모두 실행되거나 아무것도 실행되지 않으며 중간에서 끝나지 않습니다. 트랜잭션 실행 중 오류가 발생하면 트랜잭션 시작 전 상태로 롤백됩니다.
- 트랜잭션 시작 전과 트랜잭션 종료 후에도 데이터베이스의 무결성이 파괴되지 않습니다. 이는 기록된 데이터가 데이터의 정확성 및 연결을 포함하여 미리 설정된 모든 규칙을 완전히 준수해야 하며 후속 데이터베이스가 예약된 작업을 자발적으로 완료할 수 있음을 의미합니다
- 데이터베이스는 동시에 여러 동시 트랜잭션을 허용합니다. 시간 데이터를 읽고, 쓰고, 수정하는 기능, 격리를 통해 여러 트랜잭션이 동시에 실행될 때 교차 실행으로 인한 데이터 불일치를 방지할 수 있습니다. 트랜잭션 격리는 커밋되지 않은 콘텐츠 읽기, 커밋된 콘텐츠 읽기, 반복 가능한 읽기 및 직렬화를 포함하여 다양한 수준으로 구분됩니다.
- 트랜잭션이 종료된 후 시스템 오류가 손실되지 않더라도 데이터 수정은 영구적입니다.
- 원자성:
BEGIN 또는 START TRANSACTION. ;
명시적으로 트랜잭션 시작
COMMIT을 사용할 수도 있습니다. 둘은 동일합니다. COMMIT은 트랜잭션을 커밋하고 데이터베이스에 대한 모든 수정 사항을 영구적으로 만듭니다.
ROLLBACK과 동일한 ROLLBACK WORK를 사용할 수도 있습니다. 롤백은 사용자의 트랜잭션을 종료하고 진행 중인 모든 커밋되지 않은 수정 사항을 실행 취소합니다
SAVEPOINT 식별자 SAVEPOINT를 사용하면 트랜잭션에서 저장 포인트를 생성할 수 있으며 트랜잭션에는 여러 SAVEPOINT가 있을 수 있습니다
RELESE SAVEPOINT 식별자 ;지정된 저장점이 없는 경우 이 문을 실행하면 예외가 발생합니다
ROLLBACK TO 식별됨;거래를 표시된 지점으로 롤백
SET TRANSACTION; 트랜잭션의 격리 수준을 설정합니다. InnoDB 스토리지 엔진은 READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ 및 SERIALIZABLE의 트랜잭션 격리 수준을 제공합니다.
MySQL 트랜잭션 처리에는 두 가지 주요 방법이 있습니다.
BEGIN, ROLLBACK, COMMIT를 사용하여 구현
-
BEGIN
트랜잭션 시작
ROLLBACK트랜잭션 롤백
COMMIT트랜잭션 확인
직접 SET을 사용하여 MySQL의 자동 커밋 모드 변경
- 자동 제출을 켜려면 SET AUTOCOMMIT=1
- 트랜잭션의 네 가지 주요 특성 중 하나: 격리
- read uncommited Unread Commit
- 이 격리 수준에서는 모든 트랜잭션이 커밋되지 않은 다른 트랜잭션의 실행 결과를 볼 수 있습니다. 이 격리 수준은 실제 애플리케이션에서는 거의 사용되지 않습니다. 커밋되지 않은 데이터를 읽는 것을 더티 데이터라고 합니다
- read COMMIT
- 반복 읽기
MySQL의 기본 수준은 동일한 트랜잭션의 여러 인스턴스가 동시에 데이터를 읽을 때 동일한 데이터 행을 볼 수 있도록 보장합니다. 더티 읽기(Dirty Read)와 반복 불가능한 읽기는 방지되지만 팬텀 읽기(Phantom Read)라는 또 다른 문제가 발생합니다. 팬텀 읽기는 사용자가 특정 범위의 데이터 행을 읽을 때 다른 트랜잭션이 해당 범위에 새 행을 삽입하는 것을 의미합니다. 사용자가 해당 범위의 데이터 행을 다시 읽으면 새로운 팬텀 행이 발견됩니다. InnoDB 및 Falcon 스토리지 엔진은 MVCC(다중 버전 동시성 제어) 메커니즘을 통해 이 문제를 해결합니다. MVCC 메커니즘은 반복 읽기의 격리 수준에서 사용되며 선택 작업은 버전 번호를 업데이트하지 않지만 스냅샷 읽기(기록)입니다. 버전) ; 삽입, 업데이트 및 삭제는 현재 읽기(현재 버전)인 버전 번호를 업데이트합니다.
serialized
가장 높은 격리 수준으로 트랜잭션 주문을 강제하여 불가능하게 합니다. 서로 충돌하여 팬텀 읽기 문제를 해결합니다. 즉, 읽은 각 데이터 행에 공유 잠금을 추가합니다. 이 수준에서는 많은 시간 초과 및 잠금 경합이 발생할 수 있습니다
트랜잭션 격리 수준을 설정하세요
- 동적으로 격리 수준을 설정하세요. 명령
- READ-UNCOMMITTED - READ-COMMITED - REPEATABLE-READ - SERIALIZABLE * 例如 [mysqlId] transaction-isolation = READ-COMMITTED
- 트랜잭션 동시성 문제
SET [GLOBAL|SESSION] TRANSACTION ISOLATION LEVEL <isolation-level> 其中isolation-level可以是: - READ UNCOMMITTED - READ COMMITTED - REPEATABLE READ - SERIALIZABLE GLOBAL|SESSION表示事务隔离级别的作用范围: GLOBAL:表示对所有会话有效 SESSION:表示对当前会话有效
- 반복 불가능합니다. 읽기: 트랜잭션 A가 여러 번 읽습니다. 동일한 데이터를 얻은 후 트랜잭션 B가 데이터를 업데이트했지만 트랜잭션 A의 다중 읽기 프로세스 중에 데이터를 제출하지 않았습니다. 결과적으로 트랜잭션 A는 동일한 데이터를 여러 번 읽었으며 결과가 일치하지 않았습니다. 팬텀 읽기: 읽기 전후의 결과 데이터 항목 수가 일치하지 않습니다. 이는 트랜잭션 A를 여러 번 읽는 동안 트랜잭션 B가 테이블에 삽입 또는 삭제 작업을 수행하기 때문입니다
위 내용은 MySQL 트랜잭션 관련 지식 상세 소개(코드 예시)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이 기사는 Docker에서 MySQL 메모리 사용을 최적화합니다. 모니터링 기술 (Docker Stats, Performance Schema, 외부 도구) 및 구성 전략에 대해 설명합니다. 여기에는 Docker 메모리 제한, 스와핑 및 CGroups와 함께 포함됩니다

이 기사에서는 MySQL의 "공유 라이브러리를 열 수 없음"오류를 다룹니다. 이 문제는 MySQL이 필요한 공유 라이브러리 (.so/.dll 파일)를 찾을 수 없음에서 비롯됩니다. 솔루션은 시스템 패키지 M을 통한 라이브러리 설치 확인과 관련이 있습니다.

이 기사는 MySQL의 Alter Table 문을 사용하여 열 추가/드롭 테이블/열 변경 및 열 데이터 유형 변경을 포함하여 테이블을 수정하는 것에 대해 설명합니다.

이 기사는 Linux에 MySQL을 직접 설치하는 것과 Phpmyadmin이없는 Podman 컨테이너 사용을 비교합니다. 각 방법에 대한 설치 단계에 대해 자세히 설명하면서 Podman의 격리, 이식성 및 재현성의 장점을 강조하지만 또한

이 기사는 자체 포함 된 서버리스 관계형 데이터베이스 인 SQLITE에 대한 포괄적 인 개요를 제공합니다. SQLITE의 장점 (단순성, 이식성, 사용 용이성) 및 단점 (동시성 제한, 확장 성 문제)에 대해 자세히 설명합니다. 기음

이 안내서는 Homebrew를 사용하여 MacOS에 여러 MySQL 버전을 설치하고 관리하는 것을 보여줍니다. 홈 브루를 사용하여 설치를 분리하여 갈등을 방지하는 것을 강조합니다. 이 기사에는 설치, 서비스 시작/정지 서비스 및 Best Pra에 대해 자세히 설명합니다

기사는 인증서 생성 및 확인을 포함하여 MySQL에 대한 SSL/TLS 암호화 구성에 대해 설명합니다. 주요 문제는 자체 서명 인증서의 보안 영향을 사용하는 것입니다. [문자 수 : 159]

기사는 MySQL Workbench 및 Phpmyadmin과 같은 인기있는 MySQL GUI 도구에 대해 논의하여 초보자 및 고급 사용자를위한 기능과 적합성을 비교합니다. [159 자].


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

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

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경
