이 글을 쓰는 출발점은 제가 직장에서 데이터를 다루며 쌓아온 경험을 기록하는 것입니다. 글을 쓰면서 모든 지점에서 최적화 시 최적화의 필요성과 같은 다른 배경 지식이 파생된다는 것을 알게 되었습니다. 느린 쿼리, 설명 및 기타 관련 기능에 대해 어느 정도 이해하고 있어야 합니다. 예를 들어 Elasticsearch를 도입하려면 데이터 동기화 문제 해결, Elasticsearch 지식 학습 등이 필요합니다. 기사가 길어서 모든 사항을 자세히 설명하는 것은 불가능합니다. 비디오 튜토리얼처럼 저는 제한된 지식을 바탕으로 몇 가지 일반적인 사항을 요약할 뿐입니다. 그럼에도 불구하고 이미 글의 길이가 매우 깁니다. 특정 사항에 관심이 있는 경우 Baidu/Google에 가서 개별 세부 사항에 대한 심층적인 지식을 얻으시기 바랍니다.
글이 꽤 길기 때문에 관심 있으신 분들은 한 번 읽어보시면 좋을 것 같습니다. [추천 학습: "mysql 동영상 튜토리얼"]
데이터베이스 기술은 지금까지 수동 관리 단계, 파일 시스템 단계, 데이터베이스 시스템 단계를 거쳤습니다.
소프트웨어 시스템이 없던 초기에는 수동 회계와 구두 합의라는 수동 관리 단계를 거쳐 현실 세계에서 특정 사업을 운영하는 것이 가능했지만 이런 형태는 오래전부터 존재해왔으며 상대적으로 비효율적이었습니다. 해결책. . 다음 단계에서는 컴퓨터 기술의 발달로 수동회계를 엑셀 테이블로 대체하는 파일 시스템 단계가 있었는데, 이는 어느 정도 생산성을 향상시켰다. 조작이 간단하고 효율성이 높은 데이터베이스 시스템인 소프트웨어 시스템 단계에서는 생산성이 다시 향상되었으며, 현실 세계의 특정 문제가 데이터로 추상화되고, 데이터의 흐름과 변화를 통해 현실 세계의 비즈니스가 표현됩니다. 소프트웨어 시스템에서 데이터 저장소는 일반적으로 관계형 데이터베이스와 여러 비관계형 데이터베이스로 구성됩니다.
데이터베이스는 시스템 비즈니스와 밀접한 관련이 있습니다. 이를 위해서는 제품 관리자가 비즈니스를 설계할 때 데이터 저장 및 쿼리 프로세스를 이해해야 합니다. 비즈니스 변경이 데이터베이스에 어떤 영향을 미칠지 명확합니다. 새로운 참조 자료를 참조해야 하는지 여부. 예를 들어 제품 관리자가 설계한 업무는 단일 테이블 볼륨이 수백만 개에 달하는 여러 MySQL 테이블에 대한 통계 분석 및 데이터 요약을 수행하는 것입니다. MySQL 다중 테이블 쿼리를 직접 사용하면 느린 쿼리가 발생하여 msyql이 발생하게 됩니다. 이 경우 해결책은 제품 측면에서 타협하거나 기술 스택을 변경하는 것입니다.
시스템 아키텍처 및 데이터베이스 솔루션에서는 회사의 팀 역량에 더 적합한 것을 선택해야 합니다. 시스템 초기 단계에서는 지폐 기능을 갖춘 간단한 데이터베이스 최적화가 가장 비용 효율적인 솔루션이 될 것입니다. mysql 데이터베이스 지폐 기능이 무력할 때 핵심 기능을 갖춘 핵심 소프트웨어 서비스를 도입하는 것이 가장 비용 효율적인 솔루션이 될 것입니다. 문제가 발생했을 때 적절한 솔루션을 선택하는 방법은 귀하의 가치를 반영할 때입니다.
가난한 소년이 부자 소녀와 사랑에 빠진다. 단기적인 달콤함은 실제 계급 불평등을 따라잡을 수 없다. 해피엔딩은 가난한 소년의 환상과 야오 선생님의 TV 시리즈에만 존재한다.
제한된 비용으로 데이터 저장 성능을 향상시키는 방법이 이 글의 핵심 아이디어입니다.
모든 사람이 일상 업무에서 다음 콘텐츠를 자주 접하게 될 것이라고 생각합니다.
관계형 데이터베이스는 2차원 테이블과 테이블 간의 연결로 구성된 데이터 조직으로 소프트웨어에 대한 트랜잭션 데이터 일관성, 데이터 지속성 등의 기능을 제공하며 소프트웨어 시스템의 핵심 저장소입니다. 서비스는 개발 및 인터뷰 중에 가장 자주 접하게 되는 데이터베이스입니다. 일부 소규모 아웃소싱 프로젝트의 경우 MySQL은 모든 비즈니스 요구 사항을 충족하기에 충분합니다. 이는 우리가 자주 접하게 되는 것이며 실제로는 트릭으로 가득 차 있습니다. 다음 장에서 그 트릭에 대해 자세히 논의하겠습니다.
장점:
문제
MySQL 데이터베이스는 관계형 데이터 저장 소프트웨어로서 장점과 단점이 뚜렷하므로 소프트웨어에 포함되는 데이터의 양이 일반적으로 시스템이 지속적으로 증가하고 비즈니스 복잡성이 계속 증가하면 MySQL 데이터베이스의 기능을 향상하여 모든 문제를 해결할 수는 없으며 대신 다른 스토리지 소프트웨어를 도입하고 다양한 유형의 NoSQL을 사용하여 지속적인 문제를 해결해야 합니다. 소프트웨어 시스템 데이터의 양이 늘어나고 비즈니스가 복잡해집니다. 홍보에 문제가 없습니다.
관계형 데이터베이스는 다양한 시나리오에서 관계형 데이터베이스를 최적화한 것입니다. 어떤 종류의 NoSQL을 도입한다고 해서 모든 것이 괜찮을 것이라는 의미는 아닙니다. 즉, 시장에서 NoSQL의 유형과 적용의 어려움을 완전히 이해하고 선택해야 한다는 의미입니다. 적절한 시나리오에서는 적절한 스토리지 소프트웨어를 사용하는 것이 좋습니다.
비즈니스에서는 특정 테이블의 내용을 쿼리하는 경우가 많지만 쿼리 결과는 대부분 변경되지 않으므로 Memcached 및 Redis와 같은 Key-value가 등장했습니다. 시스템에서 널리 사용됩니다. Redis는 Memcached보다 더 많은 데이터 구조와 지속성을 가지고 있어 KV형 NoSQL 중에서 가장 널리 사용됩니다.
전체 텍스트 검색 시나리오에서는 쿼리와 같은 MySQLB+ 트리 인덱스의 쿼리 최적화가 인덱스에 도달할 수 없습니다. 모든 유사 키워드 쿼리는 수만 개의 데이터가 있는 테이블에서 전체 테이블 검색입니다. 여전히 지원 가능하지만, 비즈니스 코드가 제대로 작성되지 않아 트랜잭션에서 Like 쿼리가 호출되면 데이터를 저장할 때 쿼리가 느려집니다. 역인덱스를 핵심으로 하는 ElasticSearch는 전체 텍스트 검색 시나리오를 완벽하게 충족할 수 있습니다. 동시에 ElasticSearch는 대용량 데이터도 매우 잘 지원하며, 문서화 및 생태도 매우 우수한 검색 제품입니다. 유형.
문서 유형 NoSql은 반구조화된 데이터를 문서로 저장하는 NoSql 유형을 의미합니다. 일반적으로 문서 유형 NoSql은 데이터를 JSON 또는 XML 형식으로 저장하므로 스키마가 없습니다. 스키마의 특성상 데이터를 마음대로 저장하고 읽을 수 있으므로 문서 기반 NoSql의 등장으로 관계형 데이터베이스 테이블 구조의 불편한 확장 문제가 해결되었습니다. 저자는
을 사용한 적이 없습니다. 특정 규모의 기업의 경우 비즈니스에 실시간 및 유연한 데이터 요약이 포함되는 경우가 많습니다. 이러한 종류의 비즈니스는 사전 계산 솔루션으로 해결하기에 적합하지 않습니다. 사전에 계산하고 요약하는 계획을 사용하여 사업을 작성했지만, 요약된 데이터의 양이 증가함에 따라 요약된 데이터를 축적하는 마지막 단계가 점차적으로 매우 느려지는 것이 이 시나리오의 산물입니다. 빅데이터 시대의 가장 대표적인 기술 중 하나가 바로 HBase인데, HBase의 적용이 매우 무거워서 실행하려면 완전한 Hadoop 생태계 세트가 필요한 경우가 많습니다. 명령문용 MySql 쿼리와 호환됩니다. 요약 + 컬럼 저장 소프트웨어의 강력한 쿼리 기능은 다양한 실시간 및 유연한 데이터 요약 서비스를 지원하기에 충분합니다.
2021년을 시점으로 대부분의 시스템은 초기 단계에서 다음과 같은 계획으로 시작합니다. 다음으로 이 경우에는 약간의 조정을 하게 됩니다.
시간이 지날수록 하드웨어 업그레이드로 얻는 이점은 줄어듭니다. 시간과 인력이 부족할 때 가장 빠른 최적화 솔루션입니다. 소프트웨어 최적화로 인해 얻을 수 있는 이점은 미래에 더 높지만 필요한 기술 인력의 수준도 미래에 더 높습니다. 시간과 인력이 허용된다면 이는 가장 비용 효율적인 최적화 솔루션입니다. 하드웨어와 소프트웨어 최적화는 상호 배타적이지 않습니다. 필요한 경우 둘 다 동시에 MYSQL 성능의 상한에 접근할 수 있습니다.
1단계
2단계
3단계
OLTP는 주로 기록에 사용됩니다. 사용자 행동과 같은 특정 유형의 비즈니스 이벤트가 발생하면 시스템은 사용자가 언제, 어디서 무엇을 했는지 기록합니다. )의 데이터가 데이터베이스에 추가, 삭제 및 수정됩니다. 업데이트 처리 작업에는 높은 실시간 성능, 강력한 안정성 및 적시에 성공적인 데이터 업데이트가 필요합니다. 일반적인 비즈니스 시스템은 모두 OLTP이며 사용되는 데이터베이스입니다. MySlq, Oracle 등과 같은 트랜잭션 데이터베이스입니다. OLTP는 쿼리 속도 향상과 서비스 안정성 향상이 최적화의 핵심입니다
store_id_guide_id
(store_id,<code> Guide_id
) BTREEstore_id_guide_id
(store_id
,guide_id
) USING BTREEstore_id_guide_id
(store_id
,guide_id
store_id_guide_id
( store_id,guide_id
) BTREE 사용show processlist;SELECT * FROM information_schema.INNODB_TRX; //长事务SELECT * FROM information_schema.INNODB_LOCKs; //查看锁SELECT * FROM information_schema.INNODB_LOCK_waits; //查看阻塞事务
Elasticsearch의 반전 인덱스 소개 전체 텍스트 검색이 가능하지만 데이터 구조의 유연성이 낮습니다.
OLAP은 데이터에 대한 의사결정 분석에 사용됩니다. OLTP 트랜잭션 처리 시나리오입니다. 빅데이터 분석의 응용 프로그램입니다. 위에서 언급한 오프라인 데이터 웨어하우스 아이디어는 특정 기술 스택이 아닙니다. OLAP 분석 및 처리 아이디어를 반영할 수 있는 솔루션은 OLAP입니다.
초기 데이터 웨어하우스 구축은 주로 의사결정 분석 요구 사항에 따라 ERP, CRM, SCM 및 기타 데이터와 같은 기업 비즈니스 데이터베이스를 모델링하고 데이터 웨어하우스 엔진에 요약하는 것을 의미합니다. 그 적용은 주로 보고서를 기반으로 합니다. 경영진 및 사업 인력의 의사 결정을 지원하는 목적(중장기 전략 결정) IT 기술이 인터넷과 모빌리티로 발전함에 따라 데이터 소스는 점점 더 풍부해지고 있습니다. 웹 사이트 로그, IoT 장치 데이터, APP 매장 데이터 등 원래 비즈니스 데이터베이스를 기반으로 비정형 데이터가 나타납니다. 이는 이전의 구조화된 데이터보다 몇 배 더 큽니다.
OLAP이 직면한 비즈니스가 어떻게 변화하더라도 분석 분야 결정 -> 비즈니스 데이터를 컴퓨팅 라이브러리에 동기화 -> 데이터 정리 모델링 -> 데이터 웨어하우스와 동기화 -> 단계는 불가분의 관계에 있습니다. ;외부에 노출
계산 소스 데이터베이스는 데이터 정리를 위해 특별히 사용되며, 그 목적은 데이터 정리 중에 비즈니스 데이터베이스의 성능에 영향을 미치지 않도록 하는 것입니다. 계산원본 데이터베이스의 데이터를 업무별, 차원별로 정리하여 데이터의 활용성과 재사용성을 높이고, 최종 실시간 상세 데이터를 획득하여 데이터 웨어하우스로 전송하고, 데이터 웨어하우스에서 제공하는 서비스 최종 의사결정 분석 데이터.
DEMO 계획
생산 계획
각 링크의 소프트웨어는 동일한 기능을 가진 소프트웨어로 대체 가능합니다. 팀이 소프트웨어 구현 계획에 대해 가장 자신 있는 경우 계획은 OLAP입니다.
최적화는 단계별로 역량을 축적하고 여러 차례의 반복을 통해 현실적으로 이루어져야 하며 하루아침에 달성할 수는 없습니다. 자신의 기반, 비즈니스 시나리오 및 향후 개발 기대치를 기반으로 여러 라운드의 반복을 수행합니다.
반복의 원칙은 먼저 소프트 최적화와 하드 최적화를 통해 단일 소프트웨어 서비스의 효율성을 높이는 것입니다. 향후 개발 기대치를 기준으로 최적화 비용이 수익보다 낮을 때 시장에 나와 있는 성숙한 솔루션을 참조하여 도입합니다. 결합된 혁신을 위해 새로운 소프트웨어를 사용할 때, 유기적인 통합을 통해서만 참조된 소프트웨어가 만나면 1+1>2, 2+1>3의 효과를 얻을 수 있습니다. 병목 현상이 발생하면 이 과정을 반복하세요.
위의 내용은 모두 기사의 내용입니다. 내용에서 제안한 최적화 포인트와 솔루션은 반드시 개인적인 작업의 모범 사례는 아닙니다. 토론하고 교환하는 것을 환영합니다. ㅋㅋㅋ
위 내용은 매우 좋아하는 공유: 프로덕션에 부합하는 MySQL 최적화 아이디어의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!