중화사전망 - 서예자전 - Python 을 사용하여 MySQL 데이터베이스에 데이터를 대량 삽입하고 list 를 사용하는 방법
Python 을 사용하여 MySQL 데이터베이스에 데이터를 대량 삽입하고 list 를 사용하는 방법
Binlog 는 이벤트로 구성됩니다. 이벤트는 트랜잭션이 아니며 한 트랜잭션에 여러 이벤트가 포함될 수 있습니다. 이 이벤트는 데이터베이스 수정 사항을 설명합니다.
이제 우리는 Binlog 의 구조를 알고 있으며 Binlog 의 데이터를 수정해 볼 수 있습니다. 예를 들어, 앞의 예에서 Binlog 는 레코드를 삭제했으며 이 레코드를 복구하려고 할 수 있습니다. Binlog 에는 레코드를 삭제하는 행 삭제 이벤트 (DELETE_ROWS_EVENT) 가 있습니다. 이 이벤트의 데이터 구조는 행을 삭제하는 이벤트 유형이 32 이고 쓰기 행의 이벤트 유형이 30 이라는 점을 제외하면 쓰기 행의 이벤트 (WRITE_ROWS_EVENT) 와 동일합니다. 우리는 해당 Binlog 위치를 배치합니다. 앞의 "Binlog 이벤트 표시" 에서 DELETE_ROWS_EVENT 가 378 위치에서 시작하는 것을 볼 수 있습니다. 이는 binlog 파일의 실제 위치 (바이트) 입니다. 이벤트 구조에서 이벤트의 다섯 번째 바이트에서 type_code 를 볼 수 있습니다. 파이썬 애플릿을 써서 383 번째 (378+5 = 383) 바이트를 30 으로 바꿀 수 있습니다. 물론 이진 편집 도구를 사용하여 변경할 수도 있습니다.
Binlog 에서 큰 거래 찾기
행 모드의 Binlog 는 각 변경 사항에 대해 로그를 기록하기 때문에 간단한 SQL 은 Binlog 에 where 가 없는 update 또는 delete 문과 같은 거대한 트랜잭션을 생성하고, 전체 테이블의 모든 레코드를 수정하며, 각 레코드를 Binlog 에 한 번 기록하여 거대한 트랜잭션 레코드를 생성할 수 있습니다. 이런 큰일은 왕왕 번거로운 원천이다. 내 고객 중 한 명이 Binlog 가 이틀 동안 굴러갔지만 아무 일도 일어나지 않았다고 나에게 불평했다. Binlog 를 분석한 결과, 1.4G 기록이 생성되고 66 만 개의 기록이 수정되었다는 것을 알게 되었습니다! 다음은 Binlog 에서 큰 트랜잭션을 찾는 간단한 파이썬 애플릿입니다. 우리는 mysqlbinlog 가 구문 분석하는 Binlog 에서 각 트랜잭션이 BEGIN 으로 시작되고 COMMIT 으로 끝난다는 것을 알고 있습니다. BENGIN 앞에 "# at" 의 위치를 찾아 COMMIT 뒤에 "# at" 의 위치를 확인해 보겠습니다. 이 거래의 크기는 이 두 위치를 빼서 계산할 수 있다. 다음은 파이썬 프로그램의 예입니다.
Binlog 에서 대량 거래 삭감
큰 트랜잭션의 경우 MySQL 은 이를 여러 이벤트 (하나는 트랜잭션, 하나는 이벤트) 로 분할합니다. 이벤트 크기는 binlog-row-event-max-size 매개 변수에 의해 결정되며 기본값은 8K 입니다. 그래서 우리는 몇 가지 사건을 좀 더 작은 거래로 나눌 수 있다.
행 모드에서는 레코드의 한 필드만 업데이트하더라도 변경 전후의 각 필드 값이 기록됩니다. 이 동작은 세 개의 값이 있는 binlog_row_image 매개변수로 제어됩니다. 기본값은 FULL 입니다. 즉, 필드가 변경되지 않았더라도 해당 열에 대한 모든 수정 사항이 기록됩니다. 이렇게 하면 갑골문 플래시백과 같은 기능을 실현할 수 있다. 나는 개인적으로 향후 MySQL 버전이 이런 Binlog 기반 기능을 절대 내놓지 않을 것으로 예상한다.
Binlog 의 구조와 Python 이라는 스위스 군용 칼을 알면 많은 기능을 할 수 있다. 예를 들어, 어떤 테이블이 가장 많이 수정되었는지 계산할 수 있습니다. Binlog 를 세그먼트로 자른 다음 재결합하여 MySQL 데이터베이스를 유연하게 수정하고 마이그레이션할 수도 있습니다.
- 관련 기사
- GB, GL, BL, BG, BG 는 무슨 뜻인가요?
- 우리 아이는 올해 4 월 초 9 시 새벽 3 시에 태어났습니다. 제 이름은 송곳니입니다. 고수에게 1 년 이름을 지어 달라고 부탁하다. 높은 점수에 보상이 있다. 모르면 함부로 낙서하지 마라. 감사합니다.
- 컴퓨터 번역 소프트웨어에는 어떤 무료 실용적인 번역 소프트웨어 추천이 있습니까?
- 위상해
- 직장인의 사전
- 한자만 서예를 할 수 있습니까?
- 한 가족의 필수품은 무엇입니까? 특정 지점
- 여자아이에게 이름을 붙인 단어에 어떤 최고의 이름이 있는지 아세요?
- 마스크 문자의 단어 조합이란 무엇입니까?
- 포크의 발음은 무엇입니까?