SSD의 출현으로 데이터베이스 최적화에 영향이 있습니까?


26

오늘 저는 SQL Server 최적화에 대한 책을 탐색하고 있었고 일정량의 아이디어가 선형 스토리지 모델을 기반으로 한 것 같습니다. SSD는 완전히 다른 스토리지 모델을 가지고 있기 때문에 데이터베이스 튜닝 또는 최적화에 대한 생각과 관련하여 어떤 식 으로든 게임을 변경합니까?


SSD를 사용하면 원시 성능을 높이는 것보다 마모를 최소화하기 위해 더 최적화해야 할 것 같습니다 ...
Trezoid

흥미로운 생각과 멋진 답변, +1
Drew

답변:


9

예, 그들은 게임을 변경합니다. 회전 자기 디스크의 특성 ( 탐색 시간회전 지연 등 )을 기반으로 한 최적화 는 SSD 드라이브와 관련이 없을 수 있습니다. 최근 종이 * SSD 제품의 특성에 따라 2,010 선물 한 새로운 쿼리 최적화 알고리즘 FITME에 발표했다.

그러나 이러한 변경 사항은 데이터베이스 개발자가 효과적으로 구현할 수있는 하위 수준 변경 (예 : 저장소 및 검색 알고리즘) 일 수 있습니다. 아마도 데이터베이스 사용자에게는 그다지 영향을 미치지 않을 것입니다.

* 이이 스프 로어 - 플래시 기반의 데이터베이스에 대한 열 지향적 인 스토리지 쿼리 최적화


3
예. 그러나 모든 것을 램에 넣었을 때 대부분의 데이터베이스 최적화는 이미 사라졌습니다. 램 64GB의 이미 변경된 SQL 전문가 것들보다 저렴 도착 했더하지 않도록 얼마나 많은 SSD가에 추가
마틴 베켓

3
@Martin은 동의했다. 반면에, 최근에는 수직 확장 (Monsterus $ 500k DB 박스)이 아닌 수평 (클라우드 등)으로 향한 방향 전환이 이루어졌습니다. 분산 시스템은 이러한 종류의 로컬 선형 최적화를 통해 글로벌 비선형 성능 향상을 얻을 수 있습니다. 이것은 종종 더 나은 비용 모델이 될 수 있습니다.
Rein Henrichs

8

공연

SSD는 성능이 뛰어납니다. 추구 할 필요가 없으며 처리량이 타 오르고 있습니다. 디스크를 처리하는 대부분의 소프트웨어는 최적화 된 범위에서 동기 탐색 수를 줄 이도록 최적화되어 있습니다. 그렇게하면서 그들은 많은 복잡성을 소개합니다. 영구 스토리지에 대한 빠르고 찾기없는 쓰기의 출현으로 새로운 데이터 스토리지 시스템은 더 이상 이러한 복잡성을 요구하지 않습니다.

내구성

SSD는 현재 고장률이 높습니다. SSD가 실패합니다. SSD는 자기 디스크보다 훨씬 빠른 속도로 고장납니다. 복제, 백업 등으로이 문제를 해결해야합니다. 이는 고유 한 복잡성 세트를 소개합니다.


1
음? SSD는 고장률이 높습니까? SSD의 연간 고장률은 HDD보다 훨씬 낮습니다. SSD, 특히 고급 컨트롤러 (예 : LSI의 SandForce)에서 사용 가능한 쓰기를 소진 한 사람은 거의 없습니다.
Mircea Chirea

5

스토리지 가격의 전반적인 감소는 훨씬 더 중대한 영향을 미칩니다.

SQL을 사용하기 전에 DBA가 신중하게 데이터의 트랙 및 실린더 배치를 계획해야하는 계층 및 네트워크 데이터베이스를 최적화했습니다.

SQL 데이터베이스는 훨씬 덜 효율적입니다. 그러나 이제 디스크가 싸고 거대하며 빠르기 때문에 거의 신경 쓰지 않습니다.

NoSQL ( "Document") 데이터베이스는 SQL 논리 스키마와 파일 또는 테이블 공간의 기본 물리 스키마 또는 그 밖의 다른 물리-물리적 매핑 기능이 동일하지 않기 때문에 SQL보다 효율성이 떨어질 수 있습니다. 그리고 우리는 간신히 걱정합니다.

NoSQL 데이터베이스를 사용하여 시스템을 전체적으로 설계하는 방식으로 인한 변경 사항에서 SSD 성능 향상이 손실 될 수 있습니다.


2

SSD를 최적화하기위한 주요 문제는 데이터를 쓰는 방법과 관련이 있습니다. 기존의 하드 드라이브는 일반적으로 약 512 바이트의 작은 섹터에 데이터를 저장하며 실제로 해당 레벨에서 또는 그 아래에서 섹터를 직접 조작 할 수 있습니다.

SSD는 쓰기와 관련하여 몇 가지 단점이 있습니다.

  • 최소 블록 쓰기 크기는 약 4-8KB입니다.
  • 쓰기는 일반적으로 256KB의 전체 페이지에서만 수행 할 수 있습니다.
  • 빈 블록 만 쓸 수 있습니다.

Write amplification 이라고하는 일반적인 악몽 시나리오 는 이미 사용중인 일부 블록이있는 디스크의 위치에 단일 바이트를 쓰려는 경우입니다. 거기에 쓰려면 먼저 전체 256KB 페이지를 메모리에 복사하고 전체 블록을 지우고 페이지에서 단일 바이트를 변경 한 다음 수정 된 256KB 페이지 전체를 다시 써야합니다. 따라서 단일 바이트를 작성하기 위해 약 절반 메가 바이트의 "트래픽"이있었습니다!

SSD, 컨트롤러 및 운영 체제 수준에서 구현 된이 문제에 대한 많은 최적화가 있지만 의심 할 여지없이 DBMS는 이러한 최적화를 특정 작업에 맞게 조정하여 이점을 얻을 수 있습니다.

그러나 이것은 데이터베이스 사용자 (애플리케이션에서 데이터베이스를 사용하는 것처럼)가 DBMS 수준의 설계 / 구현 결정에 크게 의존하기 때문에 고려해야 할 사항이 아닙니다.


2

ServerFault 블로그 에서 수집 한 것으로부터 데이터베이스 서버에는 하드웨어가 많이 있어야합니다. 스택 교환 사이트의 데이터베이스 서버가 SSD를 실행 중이며 ( http://blog.serverfault.com/post/our-storage-decision/ 참조 ) 쿼리 최적화가 여전히 매우 필요하다고 생각합니다. CPU 및 메모리 데이터베이스 쿼리 및 IO의 영향을받습니다.

그러나 데이터베이스 성능은 IO에 크게 의존하므로 SSD가 도움을 줄 것입니다.


1

그렇습니다. 모든 사람이 언급 한 이유 때문입니다.

오라클, SQL Server 등과 같은 RDBMS의 큰 덩어리가 분리를 제대로 수행 할 수 있다면 "옵션"이 될 것이라고 말하는 팟 캐스트를 듣고있었습니다. SSD 드라이브가 있는지 감지하고 그에 따라 최적화하십시오.

더 이상 필요하지 않은 데이터의 캐싱 및 작성에 내장 된 추가 코드가 많이 있습니다.

더 흥미롭게도 RAMSAN과 그 변형이 있습니다. 기본적으로 X 시간 UPS가 내장되어 있고 장기적인 HDD 저장 장치에 쓰기를 할 수있는 RAM 칩으로 만들어진 하드 디스크 드라이브.

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