찾다
데이터 베이스MySQL 튜토리얼소규모에서 대규모로 MySQL 아키텍처의 진화에 대한 세부 정보

웹사이트(discuz)가 처음부터 일일 PV 수천만 건의 방문 횟수가 적다고 가정해 보겠습니다. mysql 서버 아키텍처의 진화를 추측해 보겠습니다.

첫 번째 단계
일일 웹사이트 방문 pv 수준은 1w 미만입니다. 한 대의 머신으로 웹과 DB를 구동하며, 아키텍처 계층 튜닝이 필요하지 않습니다(예: Memcached 캐시를 늘릴 필요가 없습니다). 이때 데이터는 매일 콜드백업을 하는 경우가 많지만, 데이터 보안을 고려하면 mysql 마스터-슬레이브를 설정하는 경우도 있다.

2단계
일일 웹사이트 방문 PV가 수만명을 돌파했습니다. 이때 단일 머신은 이미 어느 정도 로드가 되어 있습니다. 웹과 DB를 분리하고, 캐시로 memcached 서비스를 구축해야 합니다. 즉, 이 단계에서는 단일 시스템을 사용하여 mysql을 실행하여 전체 웹사이트의 데이터 저장 및 쿼리를 수행할 수도 있습니다. MySQL 마스터-슬레이브를 수행하는 경우 그 목적도 데이터 보안을 위한 것입니다.

3단계
일일 웹사이트 방문 PV가 수십만을 돌파했습니다. 단일 머신에서도 이를 지원할 수 있지만 필요한 머신 구성은 이전 머신보다 훨씬 좋습니다. 자금이 허락한다면 MySQL 서비스를 실행하기 위해 높은 구성의 머신을 구입할 수 있습니다. 그러나 이는 구성을 두 배로 늘려도 성능이 두 배로 향상된다는 의미는 아닙니다. . 따라서 이 단계에서는 mysql 서비스 클러스터링을 고려할 것입니다. 이는 여러 시스템을 사용하여 MySQL을 실행할 수 있음을 의미합니다. 하지만 MySQL 클러스터는 웹 클러스터와 다르기 때문에 데이터 일관성을 고려해야 하기 때문에 단순히 웹 클러스터링(lvs, nginx 프록시) 방식을 적용할 수는 없습니다. 가능한 아키텍처는 mysql 마스터-슬레이브, 하나의 마스터와 여러 슬레이브 입니다. 아키텍처의 견고성과 데이터 무결성을 보장하기 위해 하나의 마스터와 여러 개의 슬레이브만 있을 수 있습니다.

우리가 생각해야 할 또 다른 문제가 있습니다. 즉, 프런트 엔드 웹 계층에서 우리 프로그램은 MySQL 시스템의 IP를 지정합니다. 기계, 프로그램에서는 어떤 일이 일어나나요? discuz에는 실제로 MySQL 읽기 및 쓰기 분리를 지원하는 기능이 있습니다. 즉, 여러 머신을 사용하여 MySQL을 실행할 수 있는데, 그 중 하나는 쓰기용이고 다른 머신은 읽기용입니다. 프로그램에 읽기 및 쓰기 IP만 구성하면 프로그램이 자동으로 머신을 구별합니다. 물론, discuz와 함께 제공되는 구성을 사용하지 않는 경우 mysql-proxy라는 소프트웨어를 사용하여 읽기-쓰기 분리를 달성할 수도 있습니다. 하나의 마스터와 다중 슬레이브 모드를 지원합니다.

네 번째 단계
일일 웹사이트 방문 횟수가 수백만에 달합니다. 이전의 1-마스터-다중-슬레이브 모델은 웹 사이트 방문 횟수가 증가하면 데이터베이스를 읽는 양도 증가하기 때문에 병목 현상이 발생했습니다. 그러나 슬레이브 수가 수십 개로 증가하면, 모든 bin-log는 모든 슬레이브에 배포되어야 하기 때문에 이 프로세스 자체가 매우 번거로운 문제이며 빈번한 읽기와 결합되어 슬레이브에서 동기화되는 데이터에 큰 지연이 발생할 수 있습니다. 따라서 우리는 최적화를 할 수 있으며 MySQL의 원래 마스터 하나와 여러 슬레이브를 하나의 마스터와 하나의 슬레이브로 변경하면 슬레이브가 다른 슬레이브의 마스터 역할을 하게 됩니다. 및 후속 슬레이브 웹사이트의 모든 업무에 대해서는 책임을 지지 않으며, 빈 로그를 다른 슬레이브와 동기화하는 역할만 담당합니다. 이런 방식으로 여러 개의 슬레이브 라이브러리를 계속해서 쌓을 수 있습니다.

다섯 번째 단계
웹사이트 일일 방문 PV가 1,000만 건에 도달했을 때 웹사이트 이전 아키텍처에는 마스터가 하나만 있었고 여기의 마스터는 병목 현상이 발생했습니다. 따라서 추가 조정이 필요합니다. 예를 들어 업무를 모듈로 나누어 사용자 관련 항목, 권한, 포인트 등을 분리하여 별도의 라이브러리를 운영한 후 이를 마스터-슬레이브, 즉 소위 서브 라이브러리로 사용할 수 있습니다. . 물론 위도를 변경하거나, 액세스량이 많거나 쓰기량이 많은 테이블을 분리하여 서버에서 실행할 수도 있습니다. 테이블을 여러 개의 작은 테이블로 나눌 수도 있습니다. 이 작업 단계에는 일부 절차적 변경이 수반되므로 사전에 개발 동료들과 소통하고 설계하는 것이 필요합니다. 간단히 말해서, 이 단계에서 해야 할 일은 하위 데이터베이스와 하위 테이블입니다.

뒷면에 쓰기
추가 개발을 위해 계속해서 큰 테이블을 작은 테이블로 나누세요. 국내 Alibaba Taobao 웹사이트는 방대한 양의 데이터를 보유하고 있으며, MySQL 아키텍처는 하위 데이터베이스 및 하위 테이블 원칙을 따릅니다. 구매자와 판매자에 따라 나눌 수 있고, 시간에 따라 나눌 수 있습니다.

위 내용은 MySQL 아키텍처가 소규모에서 대규모로 진화하는 과정을 자세히 설명한 내용이므로, 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
MySQL : 초보자가 마스터하는 필수 기술MySQL : 초보자가 마스터하는 필수 기술Apr 18, 2025 am 12:24 AM

MySQL은 초보자가 데이터베이스 기술을 배우는 데 적합합니다. 1. MySQL 서버 및 클라이언트 도구를 설치하십시오. 2. SELECT와 같은 기본 SQL 쿼리를 이해하십시오. 3. 마스터 데이터 작업 : 데이터를 만들고, 삽입, 업데이트 및 삭제합니다. 4. 고급 기술 배우기 : 하위 쿼리 및 창 함수. 5. 디버깅 및 최적화 : 구문 확인, 인덱스 사용, 선택*을 피하고 제한을 사용하십시오.

MySQL : 구조화 된 데이터 및 관계형 데이터베이스MySQL : 구조화 된 데이터 및 관계형 데이터베이스Apr 18, 2025 am 12:22 AM

MySQL은 테이블 구조 및 SQL 쿼리를 통해 구조화 된 데이터를 효율적으로 관리하고 외래 키를 통해 테이블 ​​간 관계를 구현합니다. 1. 테이블을 만들 때 데이터 형식을 정의하고 입력하십시오. 2. 외래 키를 사용하여 테이블 간의 관계를 설정하십시오. 3. 인덱싱 및 쿼리 최적화를 통해 성능을 향상시킵니다. 4. 데이터 보안 및 성능 최적화를 보장하기 위해 데이터베이스를 정기적으로 백업 및 모니터링합니다.

MySQL : 주요 기능 및 기능이 설명되었습니다MySQL : 주요 기능 및 기능이 설명되었습니다Apr 18, 2025 am 12:17 AM

MySQL은 웹 개발에 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 주요 기능에는 다음이 포함됩니다. 1. 다른 시나리오에 적합한 InnoDB 및 MyISAM과 같은 여러 스토리지 엔진을 지원합니다. 2.로드 밸런싱 및 데이터 백업을 용이하게하기 위해 마스터 슬레이브 복제 기능을 제공합니다. 3. 쿼리 최적화 및 색인 사용을 통해 쿼리 효율성을 향상시킵니다.

SQL의 목적 : MySQL 데이터베이스와 상호 작용합니다SQL의 목적 : MySQL 데이터베이스와 상호 작용합니다Apr 18, 2025 am 12:12 AM

SQL은 MySQL 데이터베이스와 상호 작용하여 데이터 첨가, 삭제, 수정, 검사 및 데이터베이스 설계를 실현하는 데 사용됩니다. 1) SQL은 Select, Insert, Update, Delete 문을 통해 데이터 작업을 수행합니다. 2) 데이터베이스 설계 및 관리에 대한 생성, 변경, 삭제 문을 사용하십시오. 3) 복잡한 쿼리 및 데이터 분석은 SQL을 통해 구현되어 비즈니스 의사 결정 효율성을 향상시킵니다.

초보자를위한 MySQL : 데이터베이스 관리를 시작합니다초보자를위한 MySQL : 데이터베이스 관리를 시작합니다Apr 18, 2025 am 12:10 AM

MySQL의 기본 작업에는 데이터베이스, 테이블 작성 및 SQL을 사용하여 데이터에서 CRUD 작업을 수행하는 것이 포함됩니다. 1. 데이터베이스 생성 : createAbasemy_first_db; 2. 테이블 만들기 : CreateTableBooks (idintauto_incrementprimarykey, titlevarchar (100) notnull, authorvarchar (100) notnull, published_yearint); 3. 데이터 삽입 : InsertIntobooks (Title, Author, Published_year) VA

MySQL의 역할 : 웹 응용 프로그램의 데이터베이스MySQL의 역할 : 웹 응용 프로그램의 데이터베이스Apr 17, 2025 am 12:23 AM

웹 응용 프로그램에서 MySQL의 주요 역할은 데이터를 저장하고 관리하는 것입니다. 1. MySQL은 사용자 정보, 제품 카탈로그, 트랜잭션 레코드 및 기타 데이터를 효율적으로 처리합니다. 2. SQL 쿼리를 통해 개발자는 데이터베이스에서 정보를 추출하여 동적 컨텐츠를 생성 할 수 있습니다. 3.mysql은 클라이언트-서버 모델을 기반으로 작동하여 허용 가능한 쿼리 속도를 보장합니다.

MySQL : 첫 번째 데이터베이스 구축MySQL : 첫 번째 데이터베이스 구축Apr 17, 2025 am 12:22 AM

MySQL 데이터베이스를 구축하는 단계에는 다음이 포함됩니다. 1. 데이터베이스 및 테이블 작성, 2. 데이터 삽입 및 3. 쿼리를 수행하십시오. 먼저 CreateAbase 및 CreateTable 문을 사용하여 데이터베이스 및 테이블을 작성한 다음 InsertInto 문을 사용하여 데이터를 삽입 한 다음 최종적으로 SELECT 문을 사용하여 데이터를 쿼리하십시오.

MySQL : 데이터 저장에 대한 초보자 친화적 인 접근 방식MySQL : 데이터 저장에 대한 초보자 친화적 인 접근 방식Apr 17, 2025 am 12:21 AM

MySQL은 사용하기 쉽고 강력하기 때문에 초보자에게 적합합니다. 1.MySQL은 관계형 데이터베이스이며 CRUD 작업에 SQL을 사용합니다. 2. 설치가 간단하고 루트 사용자 비밀번호를 구성해야합니다. 3. 삽입, 업데이트, 삭제 및 선택하여 데이터 작업을 수행하십시오. 4. Orderby, Where and Join은 복잡한 쿼리에 사용될 수 있습니다. 5. 디버깅은 구문을 확인하고 쿼리를 분석하기 위해 설명을 사용해야합니다. 6. 최적화 제안에는 인덱스 사용, 올바른 데이터 유형 선택 및 우수한 프로그래밍 습관이 포함됩니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

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

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기