내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
MySQL 클러스터를 알고 계십니까? 마스터-슬레이브 복제 프로세스를 알고 있습니까? 대용량 데이터를 어떻게 처리합니까? 이번 글은 면접 질문 소개에 초점을 맞췄고, 모든 프로그래머가 동참할 수 있었으면 좋겠습니다! ! !
온라인 환경에서는 일반적으로 Mysql 고가용성과 읽기-쓰기 분리를 달성하기 위해 1개의 마스터와 1개의 슬레이브 또는 1개의 마스터와 여러 슬레이브가 있는 Mysql 인스턴스를 배포합니다. MySQL 마스터-슬레이브 동기화는 binlog 로그를 통해 수행됩니다.
Mysql 마스터-슬레이브 클러스터 구축에 대해서는 아래 블로거의 글을 참고하시면 됩니다.
관계형 데이터를 저장하는 MySQL은 단일 테이블의 데이터 볼륨이 3천만 개를 초과하면 성능 병목 현상이 발생합니다. 마찬가지로 단일 MySQL 인스턴스가 지원하는 클라이언트 연결 및 동시성에도 이때 특정 병목 현상이 발생합니다. 구현하려면 하위 데이터베이스 및 하위 테이블 기술을 사용하는 것이 좋습니다.
예를 들어, 오늘날의 마이크로서비스는 수직으로 분할되어 있습니다. 각 마이크로서비스 모듈은 테이블을 기반으로 하며 비즈니스에 따라 서로 다른 테이블을 서로 다른 라이브러리로 분할하는 것이 특징입니다. 다양한 수준에서 데이터를 확장하고 높은 동시성으로 디스크 I0 및 데이터 볼륨 연결을 늘립니다.
필드를 기반으로 다양한 필드는 필드 속성에 따라 다양한 테이블로 분할됩니다.가능합니다. 핫 데이터와 콜드 데이터를 분리하고 IO 전환 경쟁을 줄이며 두 테이블이 서로 영향을 미치지 않습니다.
한 라이브러리의 데이터를 여러 라이브러리로 분할합니다. 다수의 단일 라이브러리와 높은 동시성으로 인한 성능 병목 현상 문제를 해결하고 시스템의 안정성과 가용성을 향상시킵니다.
한 테이블의 데이터를 여러 테이블로 분할합니다(동일한 라이브러리에 있을 수 있음). 단일 테이블의 과도한 데이터 볼륨으로 인해 발생하는 성능 문제를 최적화하고 IO 경합을 방지하고 테이블 잠금 가능성을 줄입니다.
spring-cloud에서 관리하는 spring-boot에 업종별 데이터베이스 인스턴스를 구축하고 수직 파티셔닝을 진행했습니다. 대용량 데이터의 저장에 대처하기 위해 우리 프로젝트에서도 Mycat 미들웨어를 사용하여 데이터베이스와 테이블을 구분합니다.
Mycat 설치 및 Spring-boot 통합:
데이터베이스가 테이블로 분할된 후에는 데이터가 여러 데이터베이스의 여러 테이블에 저장되므로 분산 트랜잭션에 분산 글로벌 ID, 라우팅 규칙 설정 및 노드 간 페이징 문제가 발생합니다.
이 기사에서는 MySQL 클러스터와 하위 데이터베이스 및 테이블에 대한 몇 가지 인터뷰 질문을 정리합니다.