인덱스를 사용하면 READ UNCOMMITED 트랜잭션 중에 업데이트 잠금을 가져올 수 없습니다.
mariadb 10.5.11로 업그레이드한 후 인덱스에 이상한 문제가 발생했습니다.
의 컬럼이 Type
및 (varchar)Point
점수)
on on 。Type
및 on (Tindex)Point
인인)
이제 다음과 같은 질문입니다.
SELECT X(Point) as x,Y(Point) as y,hotels.Type FROM hotels WHERE (Type in ("acco")) AND MBRContains( GeomFromText( 'LINESTRING(4.922 52.909,5.625 52.483)' ), hotels.Point)
;
결과:
쿼리 오류(1207):READ UNCOMMITED 트랜잭션 중에는 업데이트 잠금을 가져올 수 없습니다.
둘 다
SELECT X(Point) as x,Y(Point) as y,hotels.Type FROM hotels USE INDEX (Pindex) WHERE (Type in ("acco")) AND MBRContains( GeomFromText( 'LINESTRING(4.922 52.909,5.625 52.483)' ), hotels.Point)
;
그리고.
SELECT X(Point) as x,Y(Point) as y,hotels.Type FROM hotels USE INDEX (Tindex) WHERE (Type in ("acco")) AND MBRContains( GeomFromText( 'LINESTRING(4.922 52.909,5.625 52.483)' ), hotels.Point)
;
잘 작동하다mariadb 10.5.10처럼
| id | select_type | table | type | possible_keys | 키 | key_len | ref | 행 | 추가 |
| 1 | SIMPLE | hotels | range | filter |타입, Pindex | Pindex |입력 | 34 | 302 | NULL | 340 (4%) | where ; Using rowid filter |
이 문제는 현재 MDEV-26123으로 추적되고 있습니다(보고하신 것 같습니다).문제의 설명에는 마리아DB 10.2.39, 10.3.30, 10.4.20, 10.5.11, 10.6.1에서 문제가 발생했다고 기재되어 있습니다.
MariaDB 10.6.4로 업그레이드 후 문제가 발생하였습니다.데이터 이행 없이 10.6.0으로 다운그레이드 할 수 있었습니다.일단은 문제가 해결된 것 같습니다.
@@select를 선택합니다.자동 커밋
set @@filength 를 지정합니다.autocommit=0;
@@select를 선택합니다.자동 커밋
#my.cnf 자동 커밋에 추가 = 0
mariadb 10.2.40 (해결) 사용 https://developpaper.com/transaction-isolation-level-of-mariadb/
이 원인은 MDEV-25594의 코드 수정으로 보입니다.
커밋 메시지 또는 토론에서 READ UNCOMMITED 동작에 대한 변경이 의도적인 것임을 알 수 없습니다.
이에 대한 미해결 버그 리포트는 없으므로 새로운 버그 리포트를 작성할 것을 권장합니다.
언급URL : https://stackoverflow.com/questions/68245557/using-indexes-results-in-update-locks-cannot-be-acquired-during-a-read-uncommitt
'programing' 카테고리의 다른 글
'key' 및 lamda 식을 사용하는 python max 함수 (0) | 2022.10.07 |
---|---|
사용자 지정 지시 VueJ에서 모델 업데이트s (0) | 2022.10.07 |
Java 유틸리티 클래스의 명명 규칙 (0) | 2022.10.07 |
MySQL의 키, 기본 키, 고유 키 및 색인의 차이 (0) | 2022.10.07 |
Junit @Before/@After는 어떤 순서로 호출됩니까? (0) | 2022.10.07 |