MySQL (InnoDB)에 가장 적합한 Linux 파일 시스템은 무엇입니까?


48

MySQL InnoDB로 다양한 파일 시스템의 성능에 대한 벤치 마크를 찾으려고했지만 아무것도 찾을 수 없었습니다.

내 데이터베이스 작업량은 일반적인 웹 기반 OLTP이며 약 90 % 읽기, 10 % 쓰기입니다. 임의 IO.

ext3, ext4, xfs, jfs, Reiserfs, Reiser4 등과 같은 인기있는 파일 시스템 중에서 MySQL에 가장 적합한 파일 시스템은 무엇입니까?

답변:


44

데이터의 가치는 얼마입니까?

실제로 각 파일 시스템에는 고유 한 장단점이 있습니다. 좀 더 나아 가기 전에는 종종 Ext3을 실행하지만 XFS와 Reiser를 모두 좋아합니다. 따라서 실제 파일 시스템 편향은 없습니다. 단지 알려주십시오.

파일 시스템이 컨테이너에 불과한 경우 최상의 액세스 시간을 제공하는 모든 것을 사용하십시오.

데이터가 중요한 값이면 XFS를 피할 수 있습니다. 왜? 저널링 된 파일의 일부를 복구 할 수없는 경우 블록을 제로화 하고 데이터를 복구 할 수 없게 만듭니다. 이 문제는 Linux Kernel 2.6.22에서 수정되었습니다 .

ReiserFS는 절대로 충돌하지 않는 훌륭한 파일 시스템 입니다. 저널 복구가 잘 작동하지만 어떤 이유로 당신이 당신의 parition 정보를 느슨하게하거나 파일 시스템의 핵심 블록을 날려 경우 디스크에 여러 ReiserFS에 파티션이있는 경우, 당신은 quandry이있을 수 있습니다 - 복구 메커니즘은 기본적으로 있기 때문에 를 검색 전체 디스크, 섹터별로, "생각하는"파일 시스템을 찾는 것이 파일 시스템의 시작입니다 . ReiserFS가있는 3 개의 파티션이 있지만 하나만 고장난 경우 복구 프로세스가 다른 두 시스템의 Frankenstein 엉망으로 뭉쳐 질 때 혼돈을 일으킬 수 있습니다 ...

Ext3은 "느린"파일입니다. "32,000 개의 파일이 있으며 모두 실행하는 데 ls다소 시간이 걸립니다 ". 모든 곳에서 수천 개의 작은 임시 테이블을 사용하려는 경우 약간의 슬픔이 있습니다. 최신 버전에는 디렉토리 탐색을 크게 줄이는 색인 옵션이 포함되어 있지만 여전히 고통 스럽습니다.

나는 JFS를 사용한 적이 없다. 내가 읽은 모든 리뷰는 "단단하지만 가장 빠른 아이는 아니었다"는 내용을 따른 것이라고 언급 할 수 있습니다. 조사 할만한 가치가 있습니다.

충분한 단점은 다음과 같습니다.

XFS :

  • 거대한 파일로 비명을 지르며 빠른 복구 시간
  • 매우 빠른 디렉토리 검색
  • 덤프를 위해 파일 시스템을 고정 및 고정 해제하기위한 기본 요소

ReiserFS :

  • 최적의 작은 파일 액세스
  • 여러 개의 작은 파일을 동일한 블록으로 압축하여 파일 시스템 공간을 보존합니다
  • 빠른 복구, 경쟁사 XFS 복구 시간

Ext3 :

  • 검증 된 Ext2 코드를 기반으로 시도 및 진실
  • 작업 할 수있는 많은 도구
  • 복구를 위해 핀치에 Ext2로 다시 장착 가능
  • 두 수 축소 및 확대 (다른 파일 시스템은 확장 될 수 있습니다)
  • 최신 버전은 "실시간"확장 가능 (대담한 경우)

보시다시피 각각에는 고유 한 단점이 있습니다. 문제는, 당신에게 가장 기발한 것이 무엇입니까?


29
XFS NULL 파일 문제는 3 년 전에 수정되었습니다. xfs.org/index.php/…
Ryan Bair

5
전 세계에서 커널 개발 변경 사항 (작업과 가족을 제외하고)을 따라야 할 시간이 항상 없다는 것은 사실이지만 업데이트가 필요한 낡은 배포가 있다는 것도 확실합니다. 그러나 수정이 이루어 졌음을 지적하기 위해 +1 칩을 사용할 것입니다.
Avery Payne

13

파일 시스템없이 InnoDB를 실행하고 파일 시스템 오버 헤드없이 성능을 향상시킬 수 있다는 점도 주목할 가치가 있습니다. 나는 그것을 추천 할 지 확실하지 않지만 문제없이 전에 사용했습니다.

InnoDB 원시 장치

또한 90 % 읽기 및 10 % 쓰기로 실행하는 경우 InnoDB의 트랜잭션 기능이 필요하지 않으면 더 나은 읽기 성능을 위해 MyISAM으로 포팅하는 것이 좋습니다.


6
더 나은 읽기 성능을 위해 MyISAM으로 이동할 것을 제안하는 경우 -1입니다. 다른 많은 결점과 단점이 있습니다. 대신 InnoDB를 올바르게 구성해야합니다. InnoDB-on-raw-device 제안에 +1.
gertvdijk

5
나는 나의 진술에 응한다. MyISAM에는 단점이 있지만 가지고 있어야 할 것이 많다. MyISAM은 여전히 ​​읽기 작업량의 보스입니다.
Xorlev

11

여기의 답변은 심각하게 사용되지 않으며 Google 결과에 표시되므로 업데이트해야합니다.

Produciton 환경의 경우 XFS 언제나 XFS는 저널링 및 비 블로킹입니다. 프로덕션 환경에서 InnoDB를 사용하는 최신 (2011/2012) MySQL 데이터베이스에 대해 다음 변수가 있는지 확인하십시오.

innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 1 # an ACID requirement
sync_binlog = 1 # more ACID
innodb_flush_method = O_DIRECT

EXT3 또는 EXT4를 사용하지 마십시오. 어느 날 BTRFS가 도착할 것입니다.

EXT3, 아마도 EXT4는 똑똑하지 않고 아이 노드 레벨에서 잠긴다!

출처 : - www.mysqlperformanceblog.com - http://dev.mysql.com/doc/internals/en/index.html - - 사샤 Pachev에 의해 MySQL의 내부 구조를 이해 https://www.facebook.com/note.php? note_id = 10150210901610933 - http://oss.sgi.com/projects/xfs/training/ - 일부 스윙 키트, 시행 착오.

편집 : 업데이트. EXT4는 2013 년 중반부터 잘 작동하는 것 같습니다! BTRFS는 여전히 좋은 옵션이 아닙니다. RHEL은 XFS를 새로운 기본 파일 시스템으로 만들 수 있습니다. 다시, EXT3을 사용하지 마십시오.


Vadim Tkachenko의 테스트 에 따르면 InnoDB가 포함 된 MySQL 5.5를 사용하는 경우 EXT4는 XFS보다 20 %의 처리량을 제공합니다. Vadim은 가능한 경우 'dioread_nolock'EXT4 옵션을 사용하도록 제안합니다 (테스트에서는 사용하지 않았지만).
caligari

왜 아이 노드 레벨에서 잠금이 나쁜가?
jpaugh

다른 답변은 구식입니다 … 현재 : 5 년 후…
kaiser

inode 잠금 문제에 대한 Google "inode 잠금 경합"
stark 's

9

짧은 버전은 파일 시스템에서 MySQL이 만든 권장 사항에 가장 가까운 것이 XFS이지만 ext3도 괜찮을 것입니다 .ext4는 훌륭한 개선을 약속하지만 여전히 안정적이지는 않습니다. 연말.

클러스터 파일 시스템 CXFS를 실행중인 경우 OCFS2 및 GFS는 모두 정상입니다.

나는 Reiser 파생물과 JFS에 대해 강력하게 경고했다.


6

큰 차이는 없을 것입니다. 충분하다면 배포본을 기본으로 사용하는 것을 사용하십시오.

당신의 노력을 다른 것들로 보내십시오-충분한 램을 얻으십시오-빨지 않는 RAID 컨트롤러를 얻으십시오-그리고 데이터베이스의 응용 프로그램의 절름발이 (ab) 사용을 수정하십시오 (NB : 이것은 대부분의 경우 아직 범인이 아닙니다) 이미 함).

그러나 mysql tmpdir을 넣은 파일 시스템을 신중하게 고려하십시오. 이는 성능, 특히 디스크 기반 filesort ()를 수행하는 쿼리에 영향을 미칩니다 (자세한 내용은 EXPLAIN을 참조하십시오).

지연 할당을 지원하는 파일 시스템은 캐시에 보관하기에 충분한 램이있을 때 수명이 짧은 파일에 대해 IO를 완전히 피할 수 있기 때문에 여기에서 실제로 편리하다고 생각합니다. 예를 들어, XFS는 파일이 할당되기 전에 삭제되고 닫히는 파일을 전혀 쓰지 않습니다.

물론 tmpdir에 tmpdir을 두는 것은 성능 측면에서 매력적이지만 공간을 소모하고 다른 방법으로 (디스크 임시 파일을 사용하더라도) 쿼리가 실패 할 위험이 있습니다.


5

다양한 파일 시스템에서 실행되는 MySQL의 벤치 마크 "라운드 업"이있는 최신 기사를 찾지 못했습니다. 설명하는 작업 부하를 감안할 때 파일 수준 조각화가 큰 문제가 될지 의심됩니다. 공식적인 벤치 마크가 없으면 권위있는 것으로 취해야 할 말을 할 수는 없지만 위에서 언급 한 모든 파일 시스템은 대략 동일한 야구장에서 (즉, 성능 수치에 대해 동일한 크기의 순서로) 수행 될 것이라고 내 생각에 따르면 .

파일 시스템은 스토리지 엔진이 액세스하는 정도를 관리하기 때문에 데이터베이스는 실제로 쇼를 실행하고 있습니다.

여전히 모든 파일 시스템에서 성능을 반올림하는 것이 흥미로울 것입니다. (하지만 MySQL에 대한 열의는 그다지 많지 않으므로 나는 그것을 수행하지 않을 것입니다. OTOH의 벤치마킹 Postgres는 흥미로울 것입니다 ...)


1
Thee는 또한 stackoverflow.com/questions/1021854/… 관심이있을만한 참고 자료와 중복됩니다
nik

3

리눅스에서 사용할 수있는 주목할만한 FS는 다음과 같습니다.

XFS (빈약 한 읽기 속도)는 시스템 리소스가 적고 대용량 파일에서는 빠르지 만 작은 파일을 많이 처리하기에는 부족한 것으로 알려져 있습니다.

ReiserFS (쓰기 속도가 느림)는 시스템 리소스에는 그다지 좋지 않지만 많은 작은 파일로 잘 수행됩니다.

EXT3는 모든 필드에서 수용 가능한 성능을 발휘합니다 ( 기본 Linux FS를 고려한 이유 ).

나는 아직 ReiserFS4가 아닌 EXT4를 사용하지 않았지만 일부 벤치 마크를 살펴 보았고 ReiserFS는 읽기 속도와 관련하여 최고의 성능을 가진 것으로 보입니다.

이것을보십시오 : ReserFS4 X Ext4 X Ext3

Ext3의 안정성, 보안 및 성숙도를 권장하지만 읽기 속도가 가장 중요한 경우 ReiserFS를 고려해야합니다.

FS를 선택하기 전에 CPU 사용량, 안정성, 보안 등도 고려해야합니다.

물론 특정 환경에서 파일럿, 테스트 및 벤치마킹을 수행하는 것이 항상 가장 적합한 방법을 결정하는 가장 좋은 방법입니다.

추신 : 더 많은 벤치 마크를 게시했지만 둘 이상의 링크를 게시 할 수 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.