MySQL에서 작은 조회 테이블을위한 최적의 엔진
-
26-09-2020 - |
문제
다음과 같은 질문이 있습니다. 여러 수십 개의 작은 조회 테이블을 사용하여 웹 응용 프로그램을 디자인하고 있습니다.이 테이블은 3 개의 열 (ID, 이름, 설명) 및 두 개의 행 (대부분 50 개 미만, 최대 450 개 미만)을 포함합니다. .
이 조회 테이블은 거의 변경되지 않을 것으로 예상됩니다 (수년 내에 한 번 변경되는 표준에서 왔습니다).
에만 사용됩니다.- HTML에서 채우기 옵션
- 보고서의 다른 레코드에 결합
이 표 99 %에 대한 SELECT
문장이있을 것이지만 꽤 많은 사람들이있을 것입니다.
어떤 데이터베이스 엔진이 가장 효율적이지 않을 것입니까?
여기에 나의 고려 사항이 있습니다 :
메모리
- 프로 : 매우 빠르게
- CON : 서버가 충돌하면 모든 데이터가 손실되고 다시 작성해야합니다
- con : 외래 키를 지원하지 않습니다
압축 myisam
- 프로 : 빠른
- con : 외래 키를 지원하지 않습니다
InnoDB
- PRO : 외래 키 지원
InnoDB 과 다른 것을 사용하는 데 중요한 이점이 있는지 여부는 - 성능 현명
감사, Zbynek
해결책
여기 에이 논쟁에 대한 나의 과거 게시물 중 일부가 있습니다
-
Sep 20, 2011
: myisam and Innodb의 Best -
May 03, 2012
: 더 빠르고, InnoDB 또는 MyISam? < / a> -
Jul 05, 2012
: InnoDB vs myisam 많은 색인 -
Sep 26, 2012
: 이 프로젝트 요구 사항에 대해 InnoDB를 통해 Myisam을 선택합니다. 장기 옵션
지금 당장 묻는 메시지 : 왜 내가 InnoDB를 통해 myisam을 호의를 베풀 것입니까?
이 다이어그램을 살펴보십시오 (Vadim Tkachenko, Percona CTO에 의해 만들어진)
myISAM은 인덱스를 캐시하고 테이블에는 2 개의 인덱스가 있습니다 (ID의 기본 키와 이름 인덱스). 반면에 InnoDB는 InnoDB 버퍼 풀이 주기적으로 16K 페이지를로드하고 해제 해야하는 경우 특히 수용 할 수있는 움직이는 부품이 너무 많습니다.
공정하게, 당신은 실험을해야합니다.
- 내 게시물로 이동 무엇 Innodb와 Myisam의 주요 차이점은 무엇입니까? . 조심스럽게 읽으십시오.
-
ROW_FORMAT=Fixed
를 사용하여 myISAM 및 모든 테이블을 사용하여 서버를 설정합니다 (내 게시물 고정 된 크기의 필드에 char vs varchar를 사용하는 성능 영향은 무엇입니까? 에서 )을 사용하고 큰 key_buffer_size . - InnoDB 및 Large InnoDB_BUFFER_POOL_SIZE를 사용하여 다른 서버 설정 .
- 두 서버에 데이터를 추가하고 미친 것처럼 쿼리하십시오.
이렇게하면 데이터 집합에 대한 스토리지 엔진 선택에 대한 최상의 평가가 제공됩니다.
시도를주십시오 !!!
다른 팁
- "압축 된 myisam"- 그게 뭐야? 어쩌면 "아카이브"아마도?
- 압축은 필요하지 않습니다. 테이블이 너무 작고 빠르게 완전히 캐시 될 것입니다.
-
FOREIGN KEYS
- 왜? 디버깅 코드를 가지고 있지 않습니까? 검사 할 매달려있는 것들이 없을 것입니다. -
MEMORY
는 서버를 불리고 테이블에 대한 업데이트가 실행될 때마다 실행할 때마다 실행되는 'Reload'코드를 작성하는 경우 을 씁니다. -
MEMORY
MyISAM
- 그게 오래된 Wive의 이야기입니다.ROW_FORMAT=FIXED
및DYNAMIC
를 사용하십시오. - InnoDB의 "Clustered"
VARCHARs
는 당신의 목적을 위해 myisam보다 조금 더 빨리 조회를합니다. - 조회 테이블이 눈에 띄는 둔화를 일으키는 알고 있습니까? 나는 그들이 진지하게 의심한다.
- do not
PRIMARY KEY
및FLOATs
와 같은 "연속적인"값에 대한 조회 테이블을 사용하십시오.
FKS가없는 InnoDB에 투표합니다.