테이블 잠금 없이 대규모 MySQL 프로덕션 테이블에서 인덱스를 생성하는 방법
문제 배경:
대형 MySQL 테이블에 인덱스를 생성하는 것은 어려운 작업일 수 있으며, 특히 중단 없는 액세스가 중요한 프로덕션 환경에서는 더욱 그렇습니다. 기존 CREATE INDEX 문을 사용하면 전체 테이블 잠금이 발생하여 모든 동시 작업이 차단될 수 있습니다.
MySQL 버전 고려 사항:
- MySQL 5.6 이상에서는 인덱스 업데이트 온라인으로 수행되므로 인덱스 생성 중에 읽기 및 쓰기 작업을 계속할 수 있습니다.
- 그러나 InnoDB 및 MyISAM 테이블을 포함하여 MySQL 5.5 이하에서는 인덱스 업데이트로 인해 테이블에 대한 쓰기가 차단됩니다.
순환 마스터 접근 방식:
MySQL 5.6 이전 버전의 경우 효과적인 접근 방식 중 하나는 순환 마스터 기술입니다.
- 보조 마스터 설정( 마스터 B) 기본 마스터(마스터 A)에서 복제.
- 마스터 B에서 스키마 업데이트를 수행합니다(업그레이드 중에 뒤쳐지도록 허용).
- 스키마 변경이 호환되는지 확인하세요. 마스터 A의 다운버전 스키마에서 명령을 복제합니다.
- 모든 클라이언트를 마스터 A에서 마스터 B로 원자적으로 전환합니다.
- 마스터 A의 스키마를 업데이트하고 이를 보조 마스터로 만듭니다.
Percona의 pt-online-schema-change 도구:
이 도구는 다음을 통해 순환 마스터 접근 방식을 자동화합니다.
- 새 테이블 만들기 업데이트된 스키마를 사용합니다.
- 트리거를 사용하여 새 테이블을 원본 테이블과 동기화합니다.
- 원본 테이블에서 행을 일괄 복사합니다.
- 원본 테이블 바꾸기
AWS RDS 고려 사항:
Amazon RDS에 호스팅된 MySQL 데이터베이스의 경우 "읽기 복제본 프로모션" 기능을 사용하여 테이블 잠금 없이 스키마가 변경됩니다. 여기에는 읽기 전용 슬레이브를 변경한 다음 새 마스터로 승격시키는 작업이 포함됩니다.
대체 기술:
- 임시 슬레이브 사용 테이블: 새 인덱스로 임시 테이블을 생성하고 원본 테이블의 데이터를 삽입한 후 원본 테이블을 임시 테이블로 바꿉니다.
- 테이블 분할: 테이블 분할 더 작은 파티션으로 분할하고, 각 파티션에 개별적으로 인덱스를 생성한 다음 파티션을 다시 병합합니다.
- 백그라운드 프로세스 사용: 테이블이 분할되는 동안 점진적으로 인덱스를 생성하는 별도의 백그라운드 프로세스를 생성합니다. 정상적인 작업에는 계속 액세스할 수 있습니다. 이 접근 방식은 모든 MySQL 버전에서 지원되지 않습니다.
위 내용은 테이블 잠금 없이 대규모 MySQL 프로덕션 테이블에 인덱스를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

mysqloffersvariouscharactersetsforstringdatatypes : 1) latin1forwesterneuropeanlanguages, 2) utf8formultulaultualsupport, 3) UTF8MB4F orextendedUnicodeincludeemojis, 4) UCS2Forfixed-widTheNcoding 및 5) asciiforbasiclatin.ChoingTherightSetensuresDatainTegrity

스트리밍 블로브는 메모리 사용량을 줄이고 성능을 향상시키기 때문에 직접 저장보다 더 좋습니다. 1) 파일을 점차적으로 읽고 처리함으로써 데이터베이스 팽창 및 성능 저하를 피합니다. 2) 스트리밍에는 더 복잡한 코드 로직이 필요하며 I/O 작업 수를 증가시킬 수 있습니다.

mysqlStringTypESmpactStorageAndperformanceAsfollows : 1) charisfixed, adlaysamestoragespace.

mysqlstringtypesincludevarchar, text, char, enum, and set.1) varcharisversatileforvariable-lengthstringsupciedlimit.2) textisidealforlargetextStorage whithoudfinedlength.3) charisfixed, witableforconsistentDatalikecodes.4)

mysqloffersvariousstringdatatatypes : 1) charfixed-lengthstrings, 2) varcharforvariable-lengthtext, 3) binaryandvarbinaryforbinarydata, 4) blobandtextforlargedata 및 5) enumandsetforcontrolledInput.achtolledinput.CheachorciCificusessandperististicatististicatististics

ToadDuserSinMySqleFeffectially, 다음에 따르면, 다음 사항을 따르십시오

toaddanewuser와 함께 complexpermissionsinmysql, followthesesteps : 1) createShereuser'NewUser '@'localhost'Identifiedby'pa ssword ';. 2) grantreadaccesstoalltablesin'mydatabase'withgrantselectonmydatabase.to'newuser'@'localhost';. 3) GrantWriteAccessto '


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경