오늘 저는 SQL Server 최적화에 대한 책을 탐색하고 있었고 일정량의 아이디어가 선형 스토리지 모델을 기반으로 한 것 같습니다. SSD는 완전히 다른 스토리지 모델을 가지고 있기 때문에 데이터베이스 튜닝 또는 최적화에 대한 생각과 관련하여 어떤 식 으로든 게임을 변경합니까?
오늘 저는 SQL Server 최적화에 대한 책을 탐색하고 있었고 일정량의 아이디어가 선형 스토리지 모델을 기반으로 한 것 같습니다. SSD는 완전히 다른 스토리지 모델을 가지고 있기 때문에 데이터베이스 튜닝 또는 최적화에 대한 생각과 관련하여 어떤 식 으로든 게임을 변경합니까?
답변:
예, 그들은 게임을 변경합니다. 회전 자기 디스크의 특성 ( 탐색 시간 및 회전 지연 등 )을 기반으로 한 최적화 는 SSD 드라이브와 관련이 없을 수 있습니다. 최근 종이 * SSD 제품의 특성에 따라 2,010 선물 한 새로운 쿼리 최적화 알고리즘 FITME에 발표했다.
그러나 이러한 변경 사항은 데이터베이스 개발자가 효과적으로 구현할 수있는 하위 수준 변경 (예 : 저장소 및 검색 알고리즘) 일 수 있습니다. 아마도 데이터베이스 사용자에게는 그다지 영향을 미치지 않을 것입니다.
SSD는 성능이 뛰어납니다. 추구 할 필요가 없으며 처리량이 타 오르고 있습니다. 디스크를 처리하는 대부분의 소프트웨어는 최적화 된 범위에서 동기 탐색 수를 줄 이도록 최적화되어 있습니다. 그렇게하면서 그들은 많은 복잡성을 소개합니다. 영구 스토리지에 대한 빠르고 찾기없는 쓰기의 출현으로 새로운 데이터 스토리지 시스템은 더 이상 이러한 복잡성을 요구하지 않습니다.
SSD는 현재 고장률이 높습니다. SSD가 실패합니다. SSD는 자기 디스크보다 훨씬 빠른 속도로 고장납니다. 복제, 백업 등으로이 문제를 해결해야합니다. 이는 고유 한 복잡성 세트를 소개합니다.
스토리지 가격의 전반적인 감소는 훨씬 더 중대한 영향을 미칩니다.
SQL을 사용하기 전에 DBA가 신중하게 데이터의 트랙 및 실린더 배치를 계획해야하는 계층 및 네트워크 데이터베이스를 최적화했습니다.
SQL 데이터베이스는 훨씬 덜 효율적입니다. 그러나 이제 디스크가 싸고 거대하며 빠르기 때문에 거의 신경 쓰지 않습니다.
NoSQL ( "Document") 데이터베이스는 SQL 논리 스키마와 파일 또는 테이블 공간의 기본 물리 스키마 또는 그 밖의 다른 물리-물리적 매핑 기능이 동일하지 않기 때문에 SQL보다 효율성이 떨어질 수 있습니다. 그리고 우리는 간신히 걱정합니다.
NoSQL 데이터베이스를 사용하여 시스템을 전체적으로 설계하는 방식으로 인한 변경 사항에서 SSD 성능 향상이 손실 될 수 있습니다.
SSD를 최적화하기위한 주요 문제는 데이터를 쓰는 방법과 관련이 있습니다. 기존의 하드 드라이브는 일반적으로 약 512 바이트의 작은 섹터에 데이터를 저장하며 실제로 해당 레벨에서 또는 그 아래에서 섹터를 직접 조작 할 수 있습니다.
SSD는 쓰기와 관련하여 몇 가지 단점이 있습니다.
Write amplification 이라고하는 일반적인 악몽 시나리오 는 이미 사용중인 일부 블록이있는 디스크의 위치에 단일 바이트를 쓰려는 경우입니다. 거기에 쓰려면 먼저 전체 256KB 페이지를 메모리에 복사하고 전체 블록을 지우고 페이지에서 단일 바이트를 변경 한 다음 수정 된 256KB 페이지 전체를 다시 써야합니다. 따라서 단일 바이트를 작성하기 위해 약 절반 메가 바이트의 "트래픽"이있었습니다!
SSD, 컨트롤러 및 운영 체제 수준에서 구현 된이 문제에 대한 많은 최적화가 있지만 의심 할 여지없이 DBMS는 이러한 최적화를 특정 작업에 맞게 조정하여 이점을 얻을 수 있습니다.
그러나 이것은 데이터베이스 사용자 (애플리케이션에서 데이터베이스를 사용하는 것처럼)가 DBMS 수준의 설계 / 구현 결정에 크게 의존하기 때문에 고려해야 할 사항이 아닙니다.
ServerFault 블로그 에서 수집 한 것으로부터 데이터베이스 서버에는 하드웨어가 많이 있어야합니다. 스택 교환 사이트의 데이터베이스 서버가 SSD를 실행 중이며 ( http://blog.serverfault.com/post/our-storage-decision/ 참조 ) 쿼리 최적화가 여전히 매우 필요하다고 생각합니다. CPU 및 메모리 는 데이터베이스 쿼리 및 IO의 영향을받습니다.
그러나 데이터베이스 성능은 IO에 크게 의존하므로 SSD가 도움을 줄 것입니다.
그렇습니다. 모든 사람이 언급 한 이유 때문입니다.
오라클, SQL Server 등과 같은 RDBMS의 큰 덩어리가 분리를 제대로 수행 할 수 있다면 "옵션"이 될 것이라고 말하는 팟 캐스트를 듣고있었습니다. SSD 드라이브가 있는지 감지하고 그에 따라 최적화하십시오.
더 이상 필요하지 않은 데이터의 캐싱 및 작성에 내장 된 추가 코드가 많이 있습니다.
더 흥미롭게도 RAMSAN과 그 변형이 있습니다. 기본적으로 X 시간 UPS가 내장되어 있고 장기적인 HDD 저장 장치에 쓰기를 할 수있는 RAM 칩으로 만들어진 하드 디스크 드라이브.