이 글의 내용은 MySQL에서 빅 테이블이 무엇인지에 관한 것입니다. 무슨 큰일이야? 그것을 처리하는 방법? 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
비교적으로 어떤 상황에서 데이터베이스 테이블을 "대형 테이블"이라고 부를 수 있나요?
테이블의 데이터가 수천만 행을 초과하면 데이터베이스에 영향을 미칩니다.
테이블 데이터 파일의 크기가 크고 테이블 데이터 파일이 10G를 초과하는 경우(데이터 값이 상대적으로 큰 경우) 하드웨어 대비)
느린 쿼리: 특정 기간 내에 필요한 데이터를 필터링하기 어렵습니다
(예: 표시 순서, 소수의 소스, 낮은 차별성, 많은 양의 디스크 IO, 감소된 디스크 효율성, 느린 쿼리 )
1. 인덱스 생성에 오랜 시간이 걸림
MYSQL 버전 < 인덱스는 테이블을 잠급니다
MYSQL 버전>= 5.5 테이블은 잠기지 않지만 메인 슬레이브 지연이 발생합니다
2. 테이블 구조를 수정하려면 테이블을 오랫동안 잠가야 합니다
위험:
잠금됩니다. 긴 마스터-슬레이브 지연 발생
정상적인 데이터 작업에 영향을 미침
데이터베이스의 큰 테이블을 처리하는 방법
기본 키 선택 테이블 분할
분할 후 파티션 간 데이터 쿼리 및 통계 2. 대용량 테이블의 이력 데이터 보관
장점:
프런트엔드 및 백엔드 비즈니스 부담 감소 영향
어려움:
보관 선택 시점
보관 작업 수행 방법
트랜잭션이란 무엇인가요?
트랜잭션은 분리할 수 없는 최소 작업 단위로 간주되어야 합니다. 전체 트랜잭션의 모든 작업은 성공적으로 제출되거나 모두 실패합니다. 트랜잭션의 경우 이러한 작업 중 일부만 수행하는 것은 불가능합니다.
예:
1. 금융계좌 잔액이 2,000위안 이상인지 확인합니다.2. 금융계좌 잔액에서 2,000위안을 뺍니다.
3. 활성 예금 계좌에 2,000위안을 추가합니다. 전체 트랜잭션 모든 커밋이 성공하거나 모두 실패하고 롤백됩니다.
트랜잭션 일관성
일관성은 트랜잭션이 데이터베이스를 하나의 일관성 상태에서 다른 일관성 상태로 변환한다는 것을 의미합니다. 트랜잭션이 시작되기 전과 트랜잭션이 끝난 후에도 데이터베이스의 데이터 무결성이 파괴되지 않습니다.
격리를 위해서는 한 트랜잭션에 의한 데이터베이스의 데이터 수정 사항이 제출되기 전에 다른 트랜잭션에 표시되지 않아야 합니다.
SQL 표준에 정의된 네 가지 유형의 수준(낮음에서 높음으로 격리)(동시성 높음에서 낮음)
커밋되지 않은 읽기(READ UNCOMMITED)
커밋된 읽기(READ COMMITED)반복 읽기( REPEATABLE READ)
직렬화 가능( 직렬화 가능)트랜잭션의 지속성
트랜잭션이 제출되면 수정 사항은 데이터베이스에 영원히 저장됩니다. 시스템이 충돌하더라도 제출된 수정된 데이터는 손실되지 않습니다.
뭔가 큰일이야?
많은 데이터를 실행하고 운영하는 데 시간이 오래 걸리는 트랜잭션
너무 많은 데이터를 잠가서 많은 차단 및 잠금 시간 초과가 발생함
롤백에 시간이 오래 걸림실행 시간이 길어 마스터가 발생하기 쉬움 -slave Delay
대규모 거래를 처리하는 방법은 무엇입니까?
트랜잭션에서 불필요한 SELECT 작업을 제거하세요
위 내용은 mysql에서 큰 테이블이란 무엇입니까? 무슨 큰일이야? 그것을 처리하는 방법?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!