데이터베이스 용 SSD 및 HDD


42

MySQL 서버를 실행하기 위해 새 서버를 구입하려고합니다. 이 새로운 서버는 내 메인 머신의 슬레이브가됩니다. 그러나이 서버는 "많은 읽기 및 복잡한 쿼리"만보고 할 수 있습니다.

이제 솔리드 스테이트 하드 드라이브에 투자하는 것을 고려하고 있지만 실제로 가치가 있는지 궁금합니다. SSD와 SATA 7200 하드 드라이브의 차이점은 약 $ 1500이며 SSD의 디스크 공간이 더 적습니다. SSD에 투자하면 속도가 눈에 띄나요?

2 (500GB SSD)를 구입하는 것보다 $ 1500에 4 (500GB SATA 7200)를 구입할 수 있습니다

업그레이드 할 가치가 있는지 결정하는 데 도움을 줄 수 있습니까?

한 번 더 언급하고 싶은 것은 사용하지 않기 query_cache때문에 많은 디스크 읽기가 발생한다는 것입니다.

이 서버에는 32GB의 RAM이 있으며 Ubuntu 12.04를 실행합니다


기가 바이트 단위로 데이터베이스가 얼마나 큽니까? 아래의 답변 중 가장 정확한 것은 실제로 얼마나 많은 데이터가 있는지 이해하는 것입니다.
Nathan Jolly

1
SSD를 사용하게되면 Ubuntu 14.04를 4 월까지 기다리거나 12.04에서 TRIM을 수동으로 활성화 할 수 있습니다. 자세한 내용은이 기사 를 참조하십시오.
OSE

5
직렬 ATA (SATA)는 인터페이스입니다. SATA SSD가 있고 SATA를 사용하지 않는 하드 디스크 드라이브 (HDD)가 있습니다.
Dennis

당신을 위해 돈을 벌 수없는 것을 구입하는 것은 거의 투자입니다 ...
inf3rno

답변:


25

예, 많은 읽기와 SSD보고는 큰 차이를 만들 것입니다. 7200RPM 드라이브에서 최대 100 IOPS를 기대할 수 있지만 가장 저렴한 SSD는 최소 5 배 빠릅니다. 좋은 SSD를 사용하면 20000 IOPS 이상을 달성 할 수 있습니다.

또한 디스크가 매번 이동할 필요가 없기 때문에 SSD의 임의 쓰기는 훨씬 빠릅니다.


4
좋은 SSD를 어떻게 정의 하시겠습니까?
Mike

성능과 벤치 마크에 관한 것입니다. 내가 할 일은 구매하려는 SSD 모델의 벤치 마크 또는 리뷰를 위해 Google입니다. 그 외에도 en.wikipedia.org/wiki/IOPS#Examples 는 매우 일반적인 개요를 제공합니다.
nmad

20

여기서 고려해야 할 세 가지 요소가 있습니다.

  1. 데이터베이스의 크기
  2. 서버에있는 메모리 양
  3. my.cnf 구성, 특히 innodb_buffer_pool_size

사용 가능한 메모리> 데이터베이스 크기 인 경우 서버가 모든 데이터를 메모리에 보관할 수 있으므로 SSD는 비용 낭비 일 수 있습니다. InnoDB 버퍼는 query_cache옵션 과 관련이 없습니다 .

경우 사용 가능한 메모리 <데이터베이스 크기 , 그것은 쿼리가 디스크에서 데이터를 검색해야합니다 가능성이 있습니다. 매우 복잡한 쿼리 또는 많은 사용자가 한 번에 쿼리를 실행하는 경우 디스크에 스트레스를주기 시작합니다.

일반적으로 데이터베이스는 가장 많이 사용되는 데이터를 메모리에 보관합니다. 데이터의 80 %가 거의 사용되지 않거나 거의 사용되지 않는 경우 성능을 유지하기 위해 데이터베이스의 20 % 만 메모리에 보관하면됩니다.

필요한 정확한 메모리 양은 즉시 알 수 없지만 데이터베이스가 200GB 이상이 아니라면 SSD 대신 메모리에 추가 비용을 지출하는 것이 좋습니다.

주의 : 데이터베이스가 MyISAM을 사용하는 경우 (로 확인할 수 있음 show table status;) InnoDB로 변경하십시오. MyISAM key_buffer_cache은 인덱스 블록 만 저장하며, InnoDB 버퍼 풀은 전체 데이터 블록을 저장합니다. 대부분의 경우 InnoDB는 더 나은 엔진으로 작동합니다.


데이터베이스를 메모리에 어떻게 넣을 수 있습니까? 서버는 슬레이브이므로 항상 쓰기 작업을 수행 할 수 있지만 보고서로 인해 읽기로드가 많이 발생합니다.
Mike

테이블이 InnoDB이고 InnoDB 버퍼 풀이 충분히 크면 MySQL은 자동으로 데이터베이스의 캐싱을 메모리에 관리하고 가장 자주 사용하는 데이터를 메모리에 항상 유지하려고 시도합니다. MySQL의 문서는 이것이 어떻게 작동하는지에 대한 훌륭한 개요를 제공합니다 .
Nathan Jolly

@NathanJolly 전체 데이터베이스가 메모리에 있어도 데이터를 저장할 때 하드 디스크에 계속 읽고 쓸 수 있으며 다양한 서버에 제한이 있습니다. 예를 들어 SQL Server Express 버전은 1GB 메모리 만 사용하도록 제한되어 있으므로 메모리에 큰 데이터베이스를 넣을 수 없습니다.
Jackofall

@Jackofall 그것은 절대적으로 사실이지만 여기서 질문은 읽기 무거운 MySQL 데이터베이스를 지정했습니다. 빠른 디스크라도 디스크에 도달하지 않고 메모리에서 제공 할 수있는 모든 읽기 전용 쿼리는 좋은 소식입니다.
Nathan Jolly

6

나는 그렇게 좋은 생각하지 않습니다!
내 조언
은 InnoDB 버퍼 풀의 크기를 늘리는 것이 MySQL 속도를 높이는 가장 좋은 방법입니다. RAM을 더 추가 할 수 있다면 그렇게하십시오. 이렇게하면 대부분의 핫 데이터가 메모리에 저장되므로 상상해보십시오! 디스크 대 메모리!
완벽한 시나리오는 데이터베이스
SSD 의 크기를 기억 하는 것입니다. 읽기 집중적 인 작업에만 적합합니다.

Vadim Tkachenko의 멋진 기사를 보려면이 링크를 확인하십시오.


1
당신이 연결하는 기사는 거의 4 년이 지났으며, 그 순간에 비해 SSD 가격이 절반 이상 떨어지고 성능도 크게 향상되었습니다. 데이터베이스 크기를 기억합니까? 500Gb 데이터베이스는 어떻습니까? RAM의 양뿐만 아니라 구입해야 할 서버가 너무 많아서 사용 가능한 메모리 뱅크가 너무 많습니다.
Yaroslav

DB 크기에 관하여! 예, 당신이 그렇게 할 수있는 방법은 없지만-내가 말했듯이 이것은 완벽한 시나리오가 될 것입니다!
Up_One

6

대안을 제공하려면 데이터를 유지하기 위해 큰 하드 디스크 (이상적으로는 디스크가 3 개인 RAID1)와 인덱스를 유지하는 작은 SSD를 모두 사용할 수 있습니다.

이론적 해석:

  • 인덱스는 상당히 작으므로 더 작은 SSD를 사용할 수 있습니다
  • 어쨌든 일반적인 쿼리는 주로 인덱스에 도달해야합니다.
  • RAID1은 내결함성을 제공합니다.
  • RAID1은 임의 읽기에 대한로드 밸런싱을 제공합니다
  • 디스크가 고장 나면 3 개의 디스크가 내결함성을 유지합니다.
  • SSD가 실패하면 인덱스를 다시 작성할 수 있습니다

5

해.

읽기 작업량이 많으므로 데이터베이스에서 SSD를 사용하는 데 따른 큰 문제인 마모 현상을 이미 피했습니다. 쓰기 금지는 마모가 없음을 의미하므로 황금색입니다.

edvinas.me에서 언급했듯이 IOPS는 회전 디스크보다 SSD에서 훨씬 빠릅니다. 데이터베이스의 경우 IOPS는 초당 요청으로 거의 변환됩니다. RAM 캐시를 무시하면 7200RPM 디스크보다 SSD에서 약 100 배 많은 요청을 처리 할 수 ​​있습니다.

TRIM은 읽기 작업량이 많으므로 디스크를 채울 계획 인 것처럼 들리므로 큰 차이가 없습니다. 그것에 대해 강조하지 마십시오.

나는 $ 1500 물건이 어디에서 왔는지 확실하지 않다. 내 현지 (호주) 공급 업체를 확인하면 750GB의 평판 좋은 제조업체의 960GB SSD를 $ 750에 구입할 수 있습니다 ( http://www.auspcmarket.com.au/960gb-crucial-m500-sata-6gbps-2-5-7mm-with- 9-5mm-adapter-ssd-read-500mb-s-write-400mb-s / ). 회전 디스크는 거의 무료이지만, $ 750는 여전히 $ 1500보다 훨씬 맛있습니다.

(아, 잠깐-당신은 아마도 유명한 공급 업체로부터 주문을 받고 있기 때문에 SSD를 노즈로 충전하고 있습니까? 나는 항상 SSD를 별도로 구입하여 직접 교체하지만 그게 맞는지 모르겠습니다. 귀하의 환경에서 허용됩니다.)

적은 RAM으로도 벗어날 수는 있지만 정확한 작업량을 알지 못하면 성능을 손상시키지 않고 안전하게 RAM을 줄일 수 있는지 판단하기가 어렵습니다.

여전히 확실하지 않은 경우 큰 10k RPM 드라이브를 얻을 수 있지만 어쨌든 SSD 속도는 거의 느리지 만 훨씬 느려집니다.

1TB 이상으로 확장해야하는 경우 SSD가 너무 비싸기 시작하지만 1TB에서는 SSD가 확실한 승리라고 말할 수 있습니다.


3

나는 벅에 대한 가장 큰 강타가 innodb_db_bufferpool 크기를 늘리는 데서 오는 데 동의하지만 불행히도 데이터 세트의 크기와 다른 디스크 블록에 얼마나 자주 액세스하는지에 달려 있습니다. 200GB 이상의 상당히 큰 데이터베이스를 유지하므로 RAM에 모든 것을 맞추는 것이 실제로는 옵션이 아니며 최근 SSD 기반 스토리지로 전환했습니다. 내가 액세스 할 수있는 다른 RAID 어레이에서 MySQL 용 IOPS를 사용하는 측면에서 상당히 많은 연구를 수행했습니다. 결과는 다음과 같습니다.

1,253 IOPS-4 x SCSI 15k (3.5 ") 디스크

테스트 : (g = 0) : rw = randrw, bs = 4K-4K / 4K-4K / 4K-4K, ioengine = libaio, iodepth = 64 읽기 : io = 3071.7MB, bw = 5012.8KB / s, iops = 1253 , runt = 627475msec 쓰기 : io = 1024.4MB, bw = 1671.7KB / s, iops = 417, runt = 627475msec cpu : usr = 0.63 %, sys = 3.11 %, ctx = 985926, majf = 0, minf = 22

2,558 IOPS-8 x 10K RPM 900GB SAS (2.5 ") 디스크

테스트 : (g = 0) : rw = randrw, bs = 4K-4K / 4K-4K / 4K-4K, ioengine = libaio, iodepth = 64 읽기 : io = 3071.7MB, bw = 10236KB / s, iops = 2558, runt = 307293msec 쓰기 : io = 1024.4MB, bw = 3413.5KB / s, iops = 853, runt = 307293msec CPU : usr = 2.73 %, sys = 8.72 %, ctx = 904875, majf = 0, minf = 25

23,456 IOPS-랙 공간 성능 2 SSD 서버

테스트 : (g = 0) : rw = randrw, bs = 4K-4K / 4K-4K / 4K-4K, ioengine = libaio, iodepth = 64 읽기 : io = 3071.7MB, bw = 93708KB / s, iops = 23426, runt = 33566msec 쓰기 : io = 1024.4MB, bw = 31249KB / s, iops = 7812, runt = 33566msec cpu : usr = 5.73 %, sys = 35.83 %, ctx = 181568, majf = 0, minf = 23

35,484 IOPS-2 x 미러링 EDGE 부스트 480GB 2.5 "MLC ( http://www.edgememory.com )

테스트 : (g = 0) : rw = randrw, bs = 4K-4K / 4K-4K / 4K-4K, ioengine = libaio, iodepth = 64 읽기 : io = 3068.4MB, bw = 141934KB / s, iops = 35483, runt = 22137msec 쓰기 : io = 1027.7MB, bw = 47537KB / s, iops = 11884, runt = 22137msec cpu : usr = 11.68 %, sys = 69.89 %, ctx = 24379, majf = 0, minf = 20

오늘날의 고품질 SSD는 놀라운 성능을 자랑합니다. 2 개의 미러링 된 SSD는 16 개의 디스크 SAN 스토리지 인클로저보다 쉽게 ​​성능을 향상시킬 수 있습니다.

전체 세부 사항에 관심이 있다면 나머지 블로그 글을 내 블로그에서 찾을 수 있습니다.

http://www.juhavehnia.com/2015/05/using-ssds-to-improve-mysql-performance.html

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