101 MySQL의 튜닝 팁

MySQL은 강력한 오픈 소스 데이터베이스입니다. 더 많은 데이터베이스 기반 응용 프로그램으로, 그것은 한계에 MySQL의 개발을 촉진하고있다. 여기에 튜닝 (101) 팁하고. 일부는 특정 기술을위한 MySQL이 설치 최적화 . 설치 환경,하지만이 아이디어는 일반적인하고 난 당신이 더 규제 및 최적화 기술을 가질 수 있도록 범주에 넣어 한 MySQL을. MySQL의 서버 하드웨어 및 운영 체제 규제 : 1. 메모리 이노에 전체 파일을로드 할 수있는 충분한 물리적 메모리가 - 훨씬 빠르게 파일을 액세스하는 메모리 속도는 2 피가 전혀 스왑 스왑의 사용 비용을 때 하드 디스크를 액세스하는 것보다 - 교환 시간 하드 디스크에서 읽어, 그것은 매우 느립니다 3. 배터리 구동 RAM (참고 : 즉, 랜덤 액세스 메모리 RAM) 4. 고급 RAID (참고 : 저렴한 디스크의 중복 배열, 즉, ​​디스크 어레이) - 가장. 이상, 바람직하게는 5에서 RAID5 RAID10 (참고 : 스토리지 성능, 데이터 보안 및 스토리지 스토리지 솔루션 모두 비용) 피하기 위해 - 데이터베이스 무결성 검사를 보장하는 것은 가격에 제공하고 6. 운영 체제 단지 논리적, 물리적 상기에 별도의 데이터 파티션 - 읽기 및 MySQL 데이터베이스 7. 임시 공간에 영향을 미칠 수있는 운영 체제의 성능을 작성하고 다른 파티션에 로그 데이터를 복사 - 때 디스크에서 배경 데이터베이스 ... 시리얼에서 : 읽기 및 쓰기 작업은 데이터베이스 8. 더 많은 디스크 공간과 동일 빠른 디스크 (10) 9. 더 나은 사용의 성능과 빠른 SAS (참고 영향 tached SCSI, 직렬 부착 형 SCSI) 대신 SATA (참고 : .. SATA, 즉 일련의 하드 드라이브) 11. 비교적 빠르고 작은 하드 드라이브, RAID 구성 캐시의 경우에 특히 배터리 지원 12 . 디스크 어레이 데이터 파티션이 고체 IO 카드 (안 디스크 드라이브)를 사용하는 것으로 간주됩니다 13. 14. RAID 컨트롤러 소프트웨어를 사용하지 마십시오 -.이 카드는 쓰기 속도 리눅스에서의 15. 데이터 지원 2기가바이트 / 거의 모든 숫자가 될 수 있습니다 swappiness 설정 값은 0 - 데이터베이스 서버의 캐시 파일의 이유는,이 서버 또는 데스크탑 (16) 가능한 경우의 장점입니다, 파일 시스템을 마운트하는 noatime 및 nodirtime 사용 - 액세스 데이터베이스 파일 업데이트를 수정할 이유가 없다 시간 17. XFS 파일 시스템 사용 - 비교 된 EXT3 빠르고 작은 파일 시스템 및 버퍼 변수가 많은 로깅 옵션이 있으며, ext3로 이중 버퍼링 문제 (18) 조정 XFS 파일 시스템으로 MySQL로 연결되어 있으며 로그인합니다. - 가장 높은 성능 표준 시스템의 19 Linux 용. MySQL의 구성 : 25 작성할 때 이중 버퍼링 O_DIRECT의 EXT3 파일 시스템의 사용을 피 = O_DIRECT (26) innodb_flush_method를 사용하지 말고, 할 수 - 당신은 순서 (27)의 모든 기록 될 메모리 이노에 전체 파일을로드 할 수 innodb_buffer_pool_size 충분한 분배 - 디스크 (28)에서 덜 읽기가 너무 파라미터 설정을 innodb_log_file_size하지 마십시오, 그래서 당신은 신속하게 같은 시간에 더 많은 디스크 공간을 가질 수는 - 더 로그, 일반적으로 좋은 데이터베이스 충돌 후 데이터베이스를 복구하는 시간을 줄일 수 있습니다 잃었다. 너무 많은 연결이 RAM이 부족하고 상대적으로 유지 MySQL의 서비스 31 thread_cache를 잠금 -이 두 값은 30 MAX_CONNECTIONS 매개 변수에 대한 최소 수량의 할당과 호환되지 않습니다 - 29.에서 innodb_thread_concurrency 및 thread_concurrency 매개 변수를 함께 사용하지 마십시오 쿼리를 사용할 수 있습니다, 당신은 검색 쿼리가 반복되는 DNS를 제거하면 .. (33), 데이터가 자주 변경되지 않습니다 - 높은 숫자는 약 16 - 32 스킵 - 이름 - 해결 매개 변수를 사용하는 연결을 열 때 느린 방지 캐시.하지만 만약 당신의 데이터가 변경 자주, 그래서 사용 문의 캐시는 실망 느끼게됩니다. 증가를 방지하기 위해 34 temp_table_size 증가 값을 디스크 (35) (36)는 sort_buffer_size 값을 설정하지 마십시오 너무 높게 방지하기 위해 디스크에 기록 된 값에 기록 max_heap_table_size, 그렇지 않으면 당신의 기억 것 곧 key_read_requests 및 Key_reads 값 값에 따라 크기를 결정하기 위해 37 key_buffer의 부족, 그렇지 않으면 당신은 38에서 innodb_flush_log_at_trx_commit 성능을 향상시킬 수를 0으로 설정 key_buffer 효율적으로 사용할 수 없습니다, Key_reads 값 값이 정상적인 상황에서 이상이어야한다 key_read_requests,하지만 당신은 원하는 경우 기본값 (1)을 유지, 당신은 데이터 무결성을 보장해야하고, 또한 복제가 지연하지 않도록해야합니다. 39. MySQL의 최적화 모드 : (40)가 기존 데이터베이스 관리 (41) 데이터 보관 유지 - 44 개 쿼리에 비해 인덱스를 남용하지 마십시오 데이터 플러스 42 지수 43를 조회 여분의 라인 반환을 제거하거나 검색 .... 텍스트 BLOB 데이터 형식의 압축 - .. 공간을 절약하고 디스크의 수가 45 UTF 8 UTF16는 47 여분의 데이터를 최소로 플립 플롭 유지 가급적 효율 46 사용 latin1에보다 낮은 판독 줄이기 - 데이터의 불필요한 중복. (48) 링크 테이블, 오히려 실제 데이터의 데이터 타입, (50)의 최소가 다른 데이터를 가능한 한 자주 많이 사용하는 쿼리를 사용하는 경우 그 라인 49 주 연장보다는, 및 BLOB / 텍스트 데이터는 다른 데이터로부터 분리 BLOB / 텍스트 데이터를 넣어 아니다. 51. 검사 종종 때때로 53 재기록 일반 최적화 표 52에 나타난 이노 최적화를 첨가 한 다음, 인덱스 항목을 삭제하기 위해 추가 될 때 다시 빠르게 (54) 다양한 요구에 대한 서로 다른 스토리지 엔진 아카이브 스토리지 엔진 테이블 또는 감사 로그 테이블 -...는 버퍼 (56)에 저장된 세션 데이터를 기록하는 것이 더 효율적이다를 사용하여 55을 사용 인덱스에. 대신의 MySQL (Memcache의가) - 캐시 자동 자동 값을 입력하고, CHAR 대신 VARCHAR 가변 길이의 문자열 (57) 축적 시간을 이용하여 공간 및 시간 데이터를 판독하고 MySQL로 쓰는 하드 생성하지 못하도록 할 수있다 -. 절약 CHAR 고정 길이 및 고정 길이 VARCHAR 58 점진적 변경 모드 (UTF8이 영향을받지 않습니다) 때문에 공간 - 작은 변화가 큰 영향 59는 개발 환경의 모든 모드를 테스트 할 수 있습니다. 생산의 변화를 반영한다. (60)가 비참한 영향을 미칠 수, 구성 파일의 값을 변경하지 마십시오. (61)을 때로는 MySQL은 적은 더 CONFIGS. 62 의심 할 때 일반적인 MySQL의 구성의 사용을 파일 쿼리 최적화를 : 63 사용 64 65의 정상적인 작동이 항상 그들이 최상의 상태에서 실행되고 있는지 확인하기 위해 쿼리를 테스트 여부를 질의의 사용을 판단하는 느린 쿼리 실행 계획을 찾기 위해 느린 쿼리 로그 -... 시간이 지남에 따라 성능이 항상 66으로 변경됩니다 전체 테이블을 통해 COUNT (*)를 사용하지 마십시오, 그것은 전체 테이블을 잠글 수 있습니다. 67 쿼리 캐시를 사용할 수있는 유사한 쿼리와 일치하는 문의에 대한 후속. (68)을 적절한 경우에 대신 DISTINCT는 GROUP BY를 사용하여. 69.이 경우, 인덱스가 간단한 유지 조항 색인 열 BY GROUP BY와 ORDER. (70), (71) 때로는 MySQL은 더 이상의 열이 잘못된 인덱스를 사용하는 인덱스에 포함되지 않은 사용, 사용 지수를 사용한다. (72)가 sQL_MODE = STRICT 문제하여 조사 하였다. (73)을 인덱스 필드 5㎛ 미만의 수를 기록하기 위해, 한계 연합 때 없거나. (74) 이전에 갱신 SELECT를 피하기 위해, DUPLICATE KEY ON INSERT를 사용 또는 무시 삽입, 달성하기 위해 UPDATE를 사용하지 마십시오. (75)을 MAX를 사용하지 마십시오, BY 절 인덱스 필드와 ORDER를 사용하여. RAND에 의해 ORDER를 사용하여 76 피하십시오 (). 77 LIMIT M은 N 실제로 쿼리 속도가 느려질 수 일부 상황에서는, 드물게 사용됩니다. UNION 78 대신의 WHERE 절에 하위 쿼리를 사용합니다. 79. 업데이트 (업데이트) SHARE 모드 (공유 모드)를 사용하는 단독 잠금을 방지 할 수 있습니다. 80 다시 시작 MySQL의 표에서 삭제 CREATE, 81 사용의 DROP 테이블. 데이터가 메모리와 빠른 쿼리 속도에 있는지 확인하기 위해 데이터베이스를 따뜻하게 기억 테이블에서 모든 데이터를 삭제합니다. (82) 당신이 필요로하는 쿼리 데이터에 데이터를 최소화, 많은 시간을 소비 * 사용합니다. 83 오버 헤드를 줄이기 위해, 오히려 여러 개의 연결보다 영구 연결을 고려한다. 84을 기본 쿼리를 서버에 부하의 사용을 포함하여, 때때로 간단한 쿼리는 다른 쿼리에 영향을 줄 수 있습니다. 85를 할 때 부하 증가 서버에 느리고 문제가 쿼리를 볼 쇼 PROCESSLIST를 사용합니다. (86). : MySQL의 백업 프로세스가 완전히 데이터베이스 파일 백업에서 89 MySQL은, 90을 중지 데이터 의존성 및 외래 키 제약 조건의 불일치를 방지하기 위해 보조 서버 복제에 백업 복사본에서 백업을 수행하는 동안 88 87 정지 ... 당신은 MySQL의 덤프 백업을 사용하는 경우, 바이너리 로그 파일을 백업하십시오 - 신뢰하지 않는 중단 91 LVM 스냅 샷없이 복사 할 수 있는지 확인 - 일치하지 않는 데이터를 생성 할 가능성이있는, 미래는 더 쉽게 하나의 테이블을 수행하기 위해 당신에게 문제가 (92)를 가져올 것이다 복구 단위로 테이블에 데이터 내보내기 -... 빠른 수입 mysqldump를 사용 백업 최적화를 확인하기 전에 -OPT 94과 표 95를 사용할 때 데이터가 다른 테이블 93에서 분리 된 경우, 수입 일시적으로 외래 키 제약 조건을 사용하지 않는 경우. 96 빠른 수입의 고유 도입 할 때, 일시적으로 감지 기능을 해제합니다. 97 계산 데이터베이스 크기, 각 백업 후 테이블의 인덱스를 더 성장 모니터링 데이터의 크기하기 위해. 98 복사 오류 및 지연 인스턴스의 자동 모니터링을 예약하여 스크립트를 정기적으로 백업 (100) 99 정기적으로 백업 (101)를 테스트 수행 ... 실행 MySQL의 모니터링 : Monitis는 세계 최초의 무료 밝힙니다

HTTPS : //my.oschina.net/766/blog/211554 재현

추천

출처blog.csdn.net/weixin_33967071/article/details/91493115