웹사이트(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)를 참고해주세요!

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

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

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

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

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

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

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


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

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

드림위버 CS6
시각적 웹 개발 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

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

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