>데이터 베이스 >MySQL 튜토리얼 >mysql에 제출된 읽기를 구현하는 방법

mysql에 제출된 읽기를 구현하는 방법

下次还敢
下次还敢원래의
2024-04-14 18:42:35607검색

MySQL에서 읽기 커밋 격리 수준을 구현하려면 REPEATABLE READ 또는 READ COMMITTED 수준을 설정할 수 있습니다. REPEATABLE READ는 읽은 데이터가 트랜잭션 중에 수정되지 않도록 보장하는 반면, READ COMMITTED는 읽은 데이터가 커밋된 트랜잭션에 의해 수정되지 않도록 보장합니다. MySQL은 MVCC, 행 잠금 및 잠금 승격 메커니즘을 사용하여 이 격리 수준을 구현하여 잠금 경합을 줄이고 성능을 향상시킵니다. 격리 수준을 설정하려면 다음 명령을 사용하십시오. SET TRANSACTION ISOLATION LEVEL [REPEATABLE READ | READ COMMIT

mysql에 제출된 읽기를 구현하는 방법

MySQL 읽기 커밋된 구현

읽기 커밋된 격리 수준은 트랜잭션 읽기를 보장하는 데이터베이스 격리 수준입니다. 내용은 실행 중인 다른 트랜잭션에 의해 수정되지 않습니다. MySQL에서는 REPEATABLE READ 또는 READ COMMITTED 격리 수준을 설정하여 읽기 커밋을 수행할 수 있습니다. REPEATABLE READREAD COMMITTED 隔离级别来实现。

REPEATABLE READ

REPEATABLE READ 隔离级别保证事务在运行期间读取的数据不会被其他事务修改。也就是说,事务在开始读取数据后,直到提交之前,数据不会发生变化。此隔离级别提供了较高的数据一致性,但也可能导致锁争用和性能问题。

READ COMMITTED

READ COMMITTED

REPEATABLE READ

REPEATABLE READ 격리 수준은 런타임 중에 트랜잭션이 읽은 데이터가 다른 트랜잭션에 의해 수정되지 않도록 보장합니다. 즉, 트랜잭션이 데이터 읽기를 시작한 후에는 커밋될 때까지 데이터가 변경되지 않습니다. 이 격리 수준은 더 높은 데이터 일관성을 제공하지만 잠금 경합 및 성능 문제를 일으킬 수도 있습니다.

    READ COMMITTED
  • READ COMMITTED 격리 수준은 트랜잭션에서 읽은 데이터가 다른 커밋된 트랜잭션에 의해 수정되지 않도록 보장합니다. 즉, 다른 트랜잭션이 커밋되기 전에 트랜잭션에서 읽은 데이터가 수정되었을 수 있습니다. 이 격리 수준은 잠금 경합을 낮추고 성능을 향상시키지만 반복 불가능한 읽기 문제를 일으킬 수도 있습니다.
  • 구현 세부 정보
  • MySQL은 다음 메커니즘을 통해 읽기 커밋 격리 수준을 구현합니다.
다중 버전 동시성 제어(MVCC)

: MVCC를 사용하면 트랜잭션이 데이터베이스의 다른 버전을 읽을 수 있으므로 잠금 경합이 줄어듭니다. 각 트랜잭션에는 데이터베이스에 있는 모든 행의 최신 버전을 포함하는 자체 로컬 스냅샷이 있습니다.

Row Lock

: MySQL은 행 잠금을 사용하여 두 트랜잭션이 동시에 동일한 행을 수정하는 것을 방지합니다. 트랜잭션이 행을 읽으면 공유 잠금을 획득합니다. 트랜잭션이 행을 수정하면 배타적 잠금을 획득합니다.

잠금 에스컬레이션

: 공유 잠금 보유자가 행 수정을 시도하면 잠금이 배타적 잠금으로 업그레이드됩니다. 이렇게 하면 다른 트랜잭션이 커밋한 수정 사항을 다른 트랜잭션이 읽을 수 없습니다.

🎜🎜🎜사용 예 🎜🎜🎜MySQL에서 읽기 커밋 격리 수준 설정: 🎜
<code class="sql">SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;</code>
🎜 또는 🎜
<code class="sql">SET TRANSACTION ISOLATION LEVEL READ COMMITTED;</code>
🎜 격리 수준을 선택하는 정확한 방법은 애플리케이션의 특정 요구 사항과 성능 요구 사항에 따라 다릅니다. 🎜

위 내용은 mysql에 제출된 읽기를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.