MySQL 데이터베이스 최적화에 대한 지식은 무엇입니까?

PHPz
풀어 주다: 2023-05-31 16:04:06
앞으로
1240명이 탐색했습니다.

데이터베이스 최적화는 시스템의 병목 현상을 파악하고 MySQL 데이터베이스의 전반적인 성능을 향상시키는 동시에 사용자의 응답 속도를 향상시키기 위해 합리적인 구조 설계와 매개 변수 조정이 필요합니다. 또한 사용자가 시스템에서 더 많은 부하를 제공할 수 있도록 시스템 리소스를 최대한 절약하는 것도 필요합니다.

1. 최적화 개요

MySQL 데이터베이스 최적화에 대한 지식은 무엇입니까?

2. 최적화

저자는 최적화를 소프트 최적화와 하드 최적화의 두 가지 범주로 구분합니다. 소프트 최적화는 일반적으로 데이터베이스 운영을 포함하고, 하드 최적화는 서버 하드웨어 및 매개변수 설정 운영을 포함합니다.

2.1 소프트 최적화

2.1.1 쿼리문 최적화

1. 먼저 EXPLAIN이나 DESCRIBE(약어: DESC) 명령어를 이용하여 쿼리문의 실행 정보를 분석할 수 있다.

2.예:

DESC SELECT * FROM`user`

디스플레이:

MySQL 데이터베이스 최적화에 대한 지식은 무엇입니까?

인덱스 개수, 쿼리 데이터 읽기 데이터 등의 정보가 표시됩니다.

2.1.2 하위 쿼리 최적화

MySQL에서는 하위 쿼리 대신 JOIN을 사용해 보십시오. 하위 쿼리에는 중첩 쿼리가 필요하므로 임시 테이블을 생성하고 삭제하면 시스템 오버헤드가 커지지만 조인 쿼리는 생성되지 않습니다. 임시 테이블이므로 중첩된 하위 쿼리보다 더 효율적입니다.

2.1.3 인덱스 사용하기

인덱싱은 데이터베이스 쿼리 속도를 향상시키는 가장 중요한 방법 중 하나입니다. 인덱스 사용에 대한 세 가지 주요 주의 사항은 다음과 같습니다. 저자의 기사를 참조하세요. 1. LIKE 키워드는 '%'로 시작하는 문자열과 일치하며 인덱스를 사용하지 않습니다.数据库索引>

2. 쿼리가 인덱스를 사용하기 전에 OR 키워드의 두 필드 모두 인덱스를 생성해야 합니다.

3. 다중 열 인덱스를 사용하려면 가장 왼쪽 일치를 충족해야 합니다.

2.1.4 분해 테이블

필드가 많은 테이블의 경우 일부 필드의 사용 빈도가 낮다면 해당 필드를 분리하여 새 테이블을 만들어야 합니다.
2.1.5 중간 테이블

다수의 연결을 쿼리하는 테이블의 경우 쿼리 중에 소요되는 연결 시간을 줄이기 위해 중간 테이블을 생성할 수 있습니다.
2.1.6 중복 필드 추가

중간 테이블을 만드는 것과 마찬가지로 중복성을 추가하는 것도 연결 쿼리를 줄이는 것입니다.
2.1.7 분석표, 체크리스트, 최적화표

테이블 분석은 주로 테이블 내의 키워드 분포를 분석하고, 테이블 확인은 주로 테이블에 오류가 있는지 확인하며, 테이블 최적화는 주로 삭제나 업데이트로 인한 테이블 공간 낭비를 없애는 작업입니다.
1. 분석 테이블: ANALYZE TABLE 사용자와 같은 ANALYZE 키워드를 사용하세요.

MySQL 데이터베이스 최적화에 대한 지식은 무엇입니까?

Op: 수행된 작업을 나타냅니다.
  1. Msg_type: 상태, 정보, 메모, 경고, 오류를 포함한 정보 유형입니다.
  2. Msg_text: 정보를 표시합니다.
2. 테이블 확인 : CHECK TABLE 사용자 [옵션]
등 CHECK 키워드를 사용하세요. 옵션은 MyISAM에만 유효하며 총 5개의 매개변수 값이 있습니다:

빠른: 라인을 스캔하지 말고 연결 상태가 좋지 않은지 확인하지 마세요.
  1. FAST: 제대로 닫히지 않은 테이블만 검사합니다.
  2. 변경됨: 마지막 확인 이후 변경된 테이블과 올바르게 닫히지 않은 테이블만 확인합니다.
  3. MEDIUM: 행을 스캔하여 삭제된 연결이 유효한지 확인하고 각 행에 대한 키워드 체크섬을 계산할 수도 있습니다. 확장: 가장 포괄적인 검사, 각 줄의 키워드에 대한 포괄적인 검색입니다.
  4. 3. 테이블 최적화: OPTIMIZE [LOCAL|NO_WRITE_TO_BINLOG] TABLE user;

    와 같은 OPTIMIZE 키워드를 사용하세요. LOCAL|NO_WRITE_TO_BINLOG는 로그에 쓰지 않음을 의미합니다. 최적화된 테이블은 VARCHAR, BLOB 및 TEXT에만 유효합니다. OPTIMIZE TABLE 문을 통해 파일 조각화를 제거할 수 있으며 실행 중에 읽기 전용 잠금이 추가됩니다.
2.2 하드 최적화
2.2.1 3피스 하드웨어 세트
1. 멀티 코어 및 고주파 CPU를 구성합니다. 멀티 코어는 여러 스레드를 실행할 수 있습니다.

2. 대용량 메모리를 구성하고 메모리를 늘려 캐시 용량을 늘려 디스크 I/O 시간을 줄이고 응답 속도를 향상시킵니다.

3. 고속 디스크 구성 또는 합리적으로 디스크 배포: 고속 디스크는 I/O를 향상시키고, 분산 디스크는 병렬 작업 능력을 향상시킬 수 있습니다.

2.2.2 데이터베이스 매개변수 최적화


데이터베이스 매개변수를 최적화하면 리소스 활용도가 향상되어 MySQL 서버 성능이 향상될 수 있습니다. MySQL 서비스의 구성 매개변수는 모두 my.cnf 또는 my.ini에 있습니다. 다음은 성능에 더 큰 영향을 미치는 몇 가지 매개변수입니다.


key_buffer_size: 인덱스 버퍼 크기

table_cache: 동시에 열 수 있는 테이블 수
  • query_cache_size 및 query_cache_type: 전자는 쿼리 버퍼 크기, 후자는 이전 매개변수의 전환, 0은 버퍼를 사용하지 않음을 의미, 1은 버퍼를 사용하지만 쿼리에서 사용할 수 있음을 의미합니다. SQL_NO_CACHE는 사용하지 않음을 의미합니다. buffer, 2는 쿼리에서 버퍼를 사용할 때만 버퍼, 즉 SQL_CACHE를 사용해야 한다고 명시되어 있습니다.
  • sort_buffer_size: 버퍼 정렬
2.2.3 하위 데이터베이스 및 하위 테이블

데이터베이스에 너무 많은 부담이 있기 때문에 첫 번째 문제는 과도한 데이터베이스 로드가 성능에 영향을 미치기 때문에 피크 기간 동안 시스템 성능이 저하될 수 있다는 것입니다. 또 다른 문제는 과도한 압력으로 인해 데이터베이스가 충돌하는 경우 어떻게 해야 합니까? 따라서 이때 시스템을 데이터베이스와 테이블로 분할 + 읽기-쓰기 분리, 즉 데이터베이스를 여러 데이터베이스로 분할하여 여러 데이터베이스 서비스에 배포한 다음 쓰기 요청을 처리하는 기본 데이터베이스 역할을 해야 합니다. 그런 다음 각 마스터 라이브러리는 하나 이상의 슬레이브 라이브러리를 마운트하고 슬레이브 라이브러리는 읽기 요청을 처리합니다.

MySQL 데이터베이스 최적화에 대한 지식은 무엇입니까?

2.2.4 캐시 클러스터

사용자 수가 늘어나면 계속해서 시스템을 추가할 수 있습니다. 예를 들어 시스템 수준에서 시스템을 계속 추가하면 더 높은 동시 요청을 처리할 수 있습니다. 그러다가 데이터베이스 수준의 쓰기 동시성이 높아지면 데이터베이스 서버가 확장되고, 서브 데이터베이스와 테이블 샤딩을 통해 머신도 확장된다. 확장되고 더 많은 슬레이브 데이터베이스가 추가될 예정입니다. 그러나 여기에는 큰 문제가 있습니다. 데이터베이스 자체는 실제로 높은 동시 요청을 처리하는 데 사용되지 않으므로 일반적으로 초당 단일 데이터베이스 시스템이 수행하는 동시성은 수천 대에 달하며 데이터베이스에서 사용되는 시스템은 상대적으로 높은 구성, 상대적으로 비싼 기계, 비용이 매우 높습니다. 단순히 기계를 계속 추가한다면 실제로는 잘못된 것입니다. 따라서 캐시는 일반적으로 높은 동시성 아키텍처에 포함됩니다. 캐시 시스템은 높은 동시성을 수행하도록 설계되었습니다. 따라서 단일 머신이 전달하는 동시성 양은 초당 수만, 심지어는 초당 수십만입니다. 높은 동시성 전달 용량은 데이터베이스 시스템보다 1~2배 더 높습니다. 따라서 쓰기가 적고 읽기가 더 필요한 요청에 대해 시스템의 비즈니스 특성에 따라 캐시 클러스터를 완벽하게 도입할 수 있습니다. 특히, 데이터베이스에 쓸 때 데이터 복사본이 동시에 캐시 클러스터에 기록되고 캐시 클러스터는 대부분의 읽기 요청을 전달하는 데 사용됩니다. 이 경우 캐시 클러스터링을 통해 더 적은 수의 시스템 리소스를 사용하여 더 높은 동시성을 호스팅할 수 있습니다.

MySQL 데이터베이스 최적화에 대한 지식은 무엇입니까?

위 내용은 MySQL 데이터베이스 최적화에 대한 지식은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿