MySQL - 단순 쿼리는 때때로 무한 루프와 가져오는 행 수의 증가로 인해 어려움을 겪습니다.
P粉022140576
P粉022140576 2023-09-08 09:20:56
0
1
631

지난 4주 동안 Docker Mysql Percona 배포판(percona:8.0.32-24, 빈 my.cnf)에서 쿼리가 간헐적으로 영원히 실행되는 이유를 알아내려고 노력했습니다. 이 포스트스크립트 쿼리는 MySQL Shell의 데이터 마이닝 알고리즘을 사용하여 생성된 여러 CSV를 가져온 후 실행됩니다. 절반의 시간은 2~3초 안에 성공적으로 실행됩니다.

그렇지 않으면 올바른rows_inserted 숫자가 표시되더라도 중지되어 무한 루프(2일 이상)에 빠지고 rows_fetched 숫자가 계속 증가합니다(fig1.png). 이 쿼리를 실행하는 데 시간이 오래 걸리는 이유는 무엇이며 끊임없이 테이블을 읽는 이유는 무엇입니까(높은 행 가져오기)?

으아악

** 쿼리가 실행되기 전에 2개의 측정항목(신뢰도 및 지지도)을 삽입하세요.

으아악

INSERT 없이도 동일한 동작이 관찰됩니다.

설명문을 참조하세요(fig3.png). 무한 루프가 발생하면 다음이 관찰됩니다.

  • 显示进程列表:查询被标记为status =“执行”.

  • 显示引擎innodb状态: 거래 섹션에서 쿼리를 찾을 수 없습니다.

  • select * from sys.schema_table_statistics WHERE table_schema = 'DB_NAME'rows_fetched 출력이 무한히 늘어나는 것 같습니다. (fig1.png는 작동하지 않지만 fig4.png는 작동하며 둘 다 동일한 데이터에서 수행됩니다.)

어떤 도움이나 통찰력이라도 생명을 구할 수 있습니다.

P粉022140576
P粉022140576

모든 응답(1)
P粉645569197

PK 끝에 를 추가하세요:

으아악

322 来自 2+4*80,这意味着它仅使用一列。 (const도 마찬가지이니 참고해주세요. )

  • 2바이트 길이 필드
  • utf8mb4 문자당 최대 4바이트
  • 성명 80자

322바이트 전체가 할당된다는 의미는 아니지만, "최악의 시나리오"입니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿