SQL Server 2K / 2K5 / 2K8 및 솔리드 스테이트 디스크 : 특정 최적화? 찾았습니까? 특히 SQL Server가 SSD 성능,

솔리드 스테이트 드라이브에서 SQL Server를 실행중인 사람이 있습니까? 특정 최적화 팁을 찾았습니까? 특히 SQL Server가 SSD 성능, 특히 MLC SSD 드라이브의 중요성이기 때문에 작은 임의 쓰기 작업을 수행하는 빈도를 줄이는 방법에 관심이 있습니다.

물론 읽기 가능한 많은 데이터를 SSD에서 제공해야하며 쓰기가 많은 데이터는 기존의 회전 디스크에 남겨 두어야합니다. 여기에는 자연스럽게 트랜잭션 로그가 포함됩니다!

물론 충분한 예산이 있다면 X25-E 또는 Vertex Ex 시리즈와 같은 SLC SSD 디스크 또는 다양한 엔터프라이즈 급 제품을 사용하고 싶을 것입니다. 그러나 MLC SSD 설정에 도움이 될 수있는 팁에 관심이 있습니다. 나는 그것이 흥미로운 영역이라고 생각합니다. 내 고객의 고객 중 하나는 예산이 적고 데이터 세트가 엄청나게 커졌으며 적절한 수준의 성능을 유지하기 위해 수백 건에 가까운 쿼리를 완전히 다시 작성해야합니다. 그러나 나는 500 달러 미만의 RAM과 SSD 공간으로 인해 개발자 시간이 수천 달러 (수만 달러)보다 더 큰 성능을 얻을 수 있다고 의심합니다.



답변

SQL Server에서 수행하는 작은 임의 쓰기의 양을 줄이면 무슨 의미인지 알 수 없습니다. SQL Server는 검사 점 중에 만 데이터 페이지를 작성하므로 쓰기 수를 제한하는 유일한 방법은 검사 점 간격을 변경하거나 IUD 작업이 많지 않은 것입니다. 다른 의미가 있었습니까?

내가 본 (소수의) SSD의 모든 구현에서, 그것은 당신이 제안하는 것과 반대입니다 .SSD를 가장 많이 사용하는 것은 쓰기가 많은 트랜잭션 로그와 tempdb에 대한 것 같습니다-기본적으로 가장 큰 곳은 어디입니까? / O 하위 시스템 병목 현상이 발생하여 SSD를 고정시킵니다. 탐색 시간과 대기 시간이 낮게 유지됩니다.

MS가 생산 한이 연구 보고서를 확인하십시오 (불행히도 SQL Server 관련 사항에 대해서는 자세히 설명하지 않음) : 서버 스토리지를 SSD로 마이그레이션 : 트레이드 오프 분석 .

도움이 되었기를 바랍니다!


답변

SQL Server IO 특성을 수정할 수 없습니다. 데이터 파일의 기본 디스크 액세스 단위는 8Kb 페이지입니다. 주로 체크 포인트 동안 작성하지만 가능하면 지연 작성합니다.
SQL은 리턴하기 전에 데이터 디스크에 대한 쓰기가 완료되기를 기다리지 않고 완료해야하는 것은 로그 쓰기입니다. 디스크에 하나의 데이터베이스 로그 만 보관할 수있는 경우 순차적으로 기록되며 일반 고속 하드 디스크에서는 정상입니다.
SQL 관점에서 볼 때 성능 저하는 디스크를 읽어야 할 때입니다. 더 많은 메모리를 제공 할 수 있다면 SQL은 더 많은 데이터 페이지를 메모리에 보유합니다. 이는 모든 종류의 디스크, SSD 또는 그 밖의 것보다 빠릅니다. 적절한 색인을 작성하여 디스크 읽기 수를 줄일 수도 있습니다. 나는 SSD가 이러한 읽기에 도움이 될 것으로 기대합니다. 왜냐하면 드라이브 헤드가 움직일 때까지 기다릴 수 있기 때문입니다.
여기서 말하는 데이터베이스 크기를 모르지만 HyperOS를 살펴보고 싶을 것입니다. 그들은 실제로 SSD 또는 2.5 인치 디스크를 백업으로 사용하여 실제로 DDR2 램 스틱의로드 인 sata 디스크를 만듭니다. 서버의 액세스 패턴은 문제가되지 않습니다. 나는 이런 식으로 로그를 넣지 않을 것입니다. 로그는 데이터를 일관되게 유지하는 것으로 신뢰할 수있는 매체로 이동해야하며 백업 SSD 및 배터리에도 불구하고 서버에 UPS 등이있을 수 있지만 실제 하드 디스크에 로그가없는 것이 여전히 불편할 것입니다. 어떤 종류의 내결함성 RAID 어레이.


답변

작은 무작위 작업은 헤드 디스크 검색 대기 시간으로 인해 기존 디스크의 핵심입니다. SSD는이 문제를 정확하게 해결합니다.

긴 순차적 작업으로 표준 디스크의 성능이 뛰어나므로 SSD를 사용하는 데는 아무런 목적이 없습니다 (물론 성능 관점에서).


답변

아직 주석 스레드에 추가 할 점은 없지만 SSD의 모든 페이지 크기 / 다중 읽기 수를 SSD의 페이지 크기의 배수로 설정하면 문제가되지 않습니다.

오랫동안 SQL Server에서 작업하지 않았으므로 이러한 옵션을 사용할 수 있는지 확실하지 않습니다. 지난 몇 년 동안 Oracle과 DB2를 해왔으며 DB가 디스크 특성에 맞게 조정되므로 문제가 해결 될 것입니다.


답변

데이터베이스 파일이 저장된 파티션을 정렬하는 것이 좋습니다.

또한 perf (ldf 및 TempDB)에 대해 RAID 0에서 수행 할 작업을 결정하고 RAID 1 (mdf)에 중요한 데이터를 배치하는 것이 좋습니다.

셋째, SATA 컨트롤러 펌웨어 / 드라이버뿐만 아니라 드라이브의 펌웨어도 업데이트해야합니다. 그렇게하면 하드웨어 회사와 개발자가 성능을 최적화 할 수 있습니다.