반응형
마리아에서 많은 업데이트를 사용하여 SQL 스크립트 진행률 모니터링DB
다음과 같은 수백만 개의 업데이트 문이 있는 스크립트를 실행하고 있습니다.
UPDATE data SET value = 0.9234 WHERE fId = 47616 AND modDate = '2018-09-24' AND valueDate = '2007-09-01' AND last_updated < '2018-10-01';
fId, modDate 및 valueDate는 데이터 테이블의 복합 기본 키의 세 가지 구성 요소입니다.
처음에 이 프로그램을 실행했습니다.AUTOCOMMIT=1
하지만 제가 생각하기엔 더 빨라질 것 같아서요AUTOCOMMIT=0
그리고 거래를 25개의 블록으로 묶었습니다.
자동 커밋 모드에서는SHOW PROCESSLIST
출력에 UPDATE 문이 표시되므로 fId 외래 키를 통해 스크립트가 어디까지 진행되었는지 알 수 있습니다.
하지만 자동 커밋 없이, 지금 실행되는 것을 보면서, 나는 아무것도 보지 못했습니다.SHOW PROCESSLIST
바로 이것:
610257 schema_owner_2 201.177.12.57:53673 mydb Sleep 0 NULL 0.000
611020 schema_owner_1 201.177.12.57:58904 mydb Query 0 init show processlist 0.000
그Sleep
상태는 시스템의 다른 사용자가 업데이트를 차단하는 것을 편집증적으로 만듭니다. 하지만 실행하면SHOW OPEN TABLES
문제가 있는지 확실하지 않습니다.
MariaDB [mydb]> SHOW OPEN TABLES;
+----------+----------------+--------+-------------+
| Database | Table | In_use | Name_locked |
+----------+----------------+--------+-------------+
| mydb | data | 2 | 0 |
| mydb | forecast | 1 | 0 |
| mydb | modification | 0 | 0 |
| mydb | data3 | 0 | 0 |
+----------+----------------+--------+-------------+
내 대본이 영원히 기다릴까요?자동 커밋 모드로 돌아가야 합니까?어디까지 진행되었는지 알 수 있는 방법이 있습니까?업데이트를 위해 데이터를 검사할 수 있을 것 같지만, 그것을 종합하는 것은 힘들 것 같습니다.
- 실제로 데이터를 확인하여 진행 상황을 확인합니다.
- 당신이 하고 있다고 생각합니다.
COMMIT
? - 아무것도 보지 않는 것이 합리적입니다 -- 각각.
UPDATE
몇 밀리초가 걸릴 것이다; 있을 것이다.Sleep
사이의 시간UPDATEs
. Time
존재0
그것이 진행되고 있다는 당신의 단서입니다.- 앞으로 어떤 단서도 없을 겁니다
PROCESSLIST
얼마나 멀리 갔는지에 대한 것. - 추가할 수 있습니다.
SELECT SLEEP(1), $fid;
$165(또는 무엇이든)가 마지막인 루프에서UPDATEd
행 ID.그러면 진행 속도가 25개 행당 1초씩 느려지기 때문에 100개 또는 500개 그룹으로 구성해야 합니다.
언급URL : https://stackoverflow.com/questions/52628184/monitoring-progress-of-a-sql-script-with-many-updates-in-mariadb
반응형
'programing' 카테고리의 다른 글
페이지 온로드 시 자바스크립트 아약스 호출 (0) | 2023.09.07 |
---|---|
.load()(성공 함수 포함) (0) | 2023.09.02 |
Apache2 Maria DB가 있는 웹 서버에서 오류가 발생했습니다. 요청한 URL을 찾을 수 없습니다. (0) | 2023.09.02 |
해당 열의 값 또는 하위 배열을 포함하는 모든 레코드를 가져오는 방법은 무엇입니까? (0) | 2023.09.02 |
PHP : 사용자 정의 오류 처리기 - 구문 분석 및 치명적 오류 처리 (0) | 2023.09.02 |