programing

인덱스를 사용하면 READ UNCOMMITED 트랜잭션 중에 업데이트 잠금을 가져올 수 없습니다.

goodcopy 2022. 10. 7. 21:45
반응형

인덱스를 사용하면 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

반응형