테이블 잠금 없이 거대한 MariaDB 프로덕션 데이터베이스에 인덱스 생성
2억 2천만 개의 레코드가 있는 테이블에 인덱스를 몇 개 추가해야 하는데 MariaDB 10.3에서 잠금 없이 실행할 수 있다면 어디에서도 찾을 수 없습니다(또는 언어를 이해하지 못할 수도 있습니다).
MySQL 5.6+에서 그것이 가능하다는 것을 알 수 있는 이 게시물을 찾았지만, 내 구글 푸는 MariaDB에 대한 내 정보를 얻지 못했습니다.
저는 pt-online-schema-change를 사용하려고 했지만, 인덱스가 없기 때문에(기본 인덱스도 아님) 옵션이 아닙니다.
ALTER ONLINE TABLE을 사용하면 가능합니다.
온라인 탭 변경LE는 LOCK=LOCK와 동일합니다.따라서 ALTER ONLINE 탭LE 문을 사용하여 ALTER TABLE 작업이 모든 동시 DML을 허용하는지 확인할 수 있습니다.
DB 엔진은 전체 테이블을 새 파일로 복사해야 하지만 다른 인덱스는 인플레이스 작업에 추가해야 하므로 추가 읽기를 통해 기본 키를 추가하는 작업이 "복사" 작업임을 알 수 있습니다.
InnoDB는 ALGRAMS가 INPLACE로 설정된 테이블에 기본 키를 추가하는 것을 지원합니다.테이블이 재구성되므로 모든 데이터가 크게 재구성되고 인덱스가 재구성됩니다.결과적으로, 수술 비용이 꽤 많이 듭니다.이 작업은 잠금 해제 전략을 지원합니다.LOCK 절을 NONE으로 설정하여 이 전략을 명시적으로 선택할 수 있습니다.이 전략을 사용하면 모든 동시 DML이 허용됩니다.
InnoDB는 ALGRAMS가 INPLACE로 설정된 테이블에 일반 인덱스를 추가하는 것을 지원합니다.테이블이 재구성되지 않습니다.이 작업은 잠금 해제 전략을 지원합니다.LOCK 절을 NONE으로 설정하여 이 전략을 명시적으로 선택할 수 있습니다.이 전략을 사용하면 모든 동시 DML이 허용됩니다.
언급URL : https://stackoverflow.com/questions/64794302/create-index-in-huge-mariadb-production-database-without-table-locking
'programing' 카테고리의 다른 글
| IE8 및 JQuery의 트림() (0) | 2023.08.17 |
|---|---|
| 현재 페이지 가져오기 (0) | 2023.08.17 |
| PL/SQL 개발자의 그리드 출력에서 numwidth를 설정하는 방법은 무엇입니까? (0) | 2023.08.17 |
| 쓰리텐 사용법안드로이드 프로젝트의 ABP (0) | 2023.08.17 |
| Powershell 함수에서 여러 항목을 반환하는 방법 (0) | 2023.08.12 |