데이터베이스에 데이터를 쓰는 데 트랜잭션을 사용하는 서버가 있는데 모든 쿼리가 성공하면 롤백됩니다. 이제 같은 데이터베이스와 테이블에서 동시에 두 인스턴스의 서버 작업을 수행하려고합니다. mysql 트랜잭션 문서를 읽을 때 "트랜잭션 시작으로 인해 보류중인 트랜잭션이 커밋됩니다."라는 문구가 나타났습니다. 이것은 서버 A가 트랜잭션 A를 시작하고 트랜잭션 A가 아직 완료되지 않은 상태에서 서버 B가 트랜잭션 B를 시작하고 트랜잭션 A가 강제 실행된다는 것을 의미합니까? 이것은 나에게 이해가되지 않는다. 이 경우 트랜잭션 A가 정상적으로 완료 될 때까지 트랜잭션 B가 실행되지 않도록 어떻게 보장 할 수 있습니까? SET autocommit = 0이 문제의 대안이 될 수 있습니까?새 트랜잭션을 시작하면 현재 트랜잭션이 강제로 커밋됩니까?
0
A
답변
1
서버의 두 인스턴스가 동시에 작동하도록한다고 가정 할 때 동일한 서버에서 실행되는 두 개의 개별 세션을 의미한다고 가정합니다.
"트랜잭션 시작으로 인해 커밋 된 트랜잭션이 발생합니다."라는 문장은 동일한 세션 내에서만 보류중인 트랜잭션을 나타냅니다. 이 섹션 (그들에 대한 동의어)로 나열 http://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html
명령문 당신이이 문을 실행하기 전에 COMMIT했던 것처럼 암시 적으로, 현재 세션에서 활성화 된 트랜잭션을 종료에서.
따라서 세션 B가 세션 A가 커밋되기 전에 트랜잭션을 시작하면 세션 A가 강제로 커밋되지 않습니다.
0
mysql> CREATE TEMPORARY TABLE super(id int);
Query OK, 0 rows affected (0.04 sec)
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO super VALUE(1);
Query OK, 1 row affected (0.00 sec)
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM super;
+------+
| id |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
관련 문제
- 1. 실행 중에 오류가 발생하면 SQL Server 트랜잭션이 커밋됩니까?
- 2. 데이터베이스 트랜잭션을 사용하는 웹 메소드에서 새 트랜잭션이 허용되지 않음 오류입니다.
- 3. 트랜잭션을 강제로 다른 연결에서 커밋 하시겠습니까?
- 4. SQLite에서 새 트랜잭션이 시작된 시점 결정
- 5. ActiveRecord 트랜잭션이 전체 트랜잭션을 롤백하지 않습니다.
- 6. INSERT 데이터가 현재 트랜잭션을 무시합니다.
- 7. 프래그먼트 강제로 작업을 시작하면 앱이 닫힙니다.
- 8. EJB가 새 트랜잭션을 생성합니까?
- 9. 새 트랜잭션을 시작하기 전에 롤백을 시도해야합니까?
- 10. JPA/EclipseLink : EntityManager.getTransaction()이 새 트랜잭션을 만들거나 활성 트랜잭션을 반환합니까?
- 11. Mysql은 현재 트랜잭션을 무시한 행을 삽입합니다.
- 12. SQL 트랜잭션이
- 13. 트위스티드 adbapi 트랜잭션은 실제로 언제 커밋됩니까?
- 14. 새 트랜잭션이 이전 엔티티를 모두 분리합니까?
- 15. 언제 EntityManager가 커밋됩니까?
- 16. Lift Mapper에서 새 트랜잭션을 생성하는 방법은 무엇입니까?
- 17. swf 파일을 강제로 현재 탭의 새 창을 엽니 다.
- 18. 트랜잭션이 내 응용 프로그램에서 트랜잭션을 완료하지 않은 SKPayment
- 19. SQL은 현재 트랜잭션을 선택하고 가장 최근 트랜잭션을 참조합니다.
- 20. 트랜잭션이
- 21. 현재 트랜잭션을 전달하거나 DependentClone을 사용 하시겠습니까?
- 22. 트랜잭션이
- 23. Postgres는 트랜잭션이 중단 될 때까지 트랜잭션을 중단하고 쿼리를 무시합니다. 롤백하기 전에 트랜잭션을 처리 할 수 있습니까?
- 24. 명시 적 트랜잭션이 강제로 취소되었습니다. (HRESULT 예외 : 0x8032000F)
- 25. mybatis에 트랜잭션이 필요하도록하려면 어떻게해야합니까?
- 26. JPA 오류 : 트랜잭션이 현재 활성 상태입니다
- 27. LockModeType.PESSIMISTIC_WRITE는 제공 : 없음 트랜잭션이 현재 활성화
- 28. org.hibernate.HibernateException : 현재 트랜잭션이 진행되고 있지 않습니다.
- 29. JPA 현재 활성화 된 트랜잭션이 없음
- 30. 로더를 다시 시작하면 매번 새 스레드가 생성됩니다.