티스토리 뷰

MySQL

MySQL 스토리지

RyanGomdoriPooh 2017. 5. 22. 17:29

DB의 성능 튜닝은 어떻게 디스크 I/O를 줄이면서 최대한의 작업을 할 수 있는가에 대한 고민입니다.


그래서 여기서는 스토리지 I/O 속도와 I/O의 방식에 대해서 이야기 해보겠습니다.




스토리지 속도는 서버에 사용하는 스토리지 종류에 따라서 다릅니다.



서버에 사용하는 스토리지 종류

: 네가지로 나눌 수 있습니다. 아래로 내려가면 내려갈 수록 기존의 스토리지의 단점을 극복해나가면서 생겨난 스토리지의 종류입니다.

1) Internal Disk


- 내장 디스크라고 불리고 개인용 PC의 본체에 장착된 디스크와 비슷한 구성과 종류로 구성됩니다.

- 다만 DB용으로 최적화된 스토리지를 개인 PC에 장착하는 것처럼 4~6개 정도를 연결해서 사용하는 형태입니다.

- 연결할 수 있는 공간과 갯수가 제한적이기 때문에 용량의 한계가 있는 단점이 있습니다.


2) DAS(Direct Attached Storage)

- Internal Disk의 단점인 적은 용량과 연결 제한 때문에 사용하는 장치가 DAS입니다.

- DAS는 Internal Storage와 같은 SATA나 SAS와 같은 케이블로 연결된다. 성능도 비슷합니다.

- 다만, 장점은 디스크를 모아서 체계적으로 장착할 수 있다는 점이다. 최근엔 최대 200개 이상을 장착해서 관리할 수도 있다고 합니다.

- 단점은 하나의 컴퓨터 본체에만 직접 연결해서 사용할 수밖에 없다는 점이다. 스토리지를 여러 컴퓨터가 동시에 연결할 수 없습니다.


3) NAS(Network Attached Storage)

- Internal Disk와 DAS(Direct Attached Storage)의 단점인 "용량확장의 한계"와 "여러 컴퓨터에서 동시에 사용이 불가능"을 해결합니다.

- NAS(Network Attached Storage)는 TCP/IP를 통해 DB에 연결됩니다.

- Network를 이용해서 여러 컴퓨터에서 동시에 연결해서 사용이 가능하지만, Internal Disk와 DAS의 SATA,SAS 방식의 직접 연결보다 속도가 매우 느립니다.

- NAS는 TCP/IP를 이용하기 때문에 서버용 DB로는 빈번한 I/O에는 적합하지 않아서 사용되지 않습니다.


4) SAN(Storage Area Network)

- SAN은 DAS로 구축할 수 없는 대용량의 스토리지 공간을 제공하는 장치입니다.

- 여러 컴퓨터에서 동시에 사용할 수 있습니다.

- 내부적으로 스토리지와 컴퓨터 본체가 광케이블로 연결되기 때문에 빠르고 안정적인 I/O를 보장합니다.

- 고가의 구축 비용이 들어갑니다.

- 기업에서 내부 중요 데이터를 다루는 경우에 구축합니다.



실제 서버 스토리지 사용

: 상용으로 사용하는 서버 스토리지 형태는 NAS를 제외한 Internal Storage, DAS, SAN 입니다.


Internal Storage => Direct Attached Storage => Storage Area Network


- 오른쪽으로 갈수록 고사양, 고성능, 고비용입니다.


- 오른쪽으로 갈수록 더 많은 스토리지를 장착 할 수 있습니다.


- Internal Storage, DAS는 단일 컴퓨터 연결


- SAN은 여러 컴퓨터에 연결이 가능합니다.



스토리지의 종류

: 스토리지를 연결해서 사용하는 형태에 대해서 위에서 살펴보았습니다. 이제는 스토리지의 종류에 대해서 이야기를 해보겠습니다.


- 여기서 부터는 스토리지를 디스크라고 부르겠습니다.


- 현재 컴퓨터 주요 장치들은 메모리를 이용한 전자식 장치입니다. 그런데 데이터를 저장하는 디스크만 기계식과 전자식으로 사용됩니다.


- 기계식 디스크(예를 들면, 하드디스크)는 항상 컴퓨터의 주요장치(CPU,RAM 등)의 속도를 맞추지 못하는 병목지점이 됩니다.


- 아래 표를 보시면 어느 시점에서 transaction 수가 늘지 않습니다. 이 지점에서 디스크가 감당하지 못해 더이상 처리를 하지 않는 병목지점을 생성합니다.


- 이와 같은 현상의 이유는 기계식 디스크보다 상대적으로 컴퓨터의 주요장치들이 더 빠른 연산 속도를 가지고 있기 때문입니다.


그런데 요즘에는 하드디스크(기계식 디스크) 대신 Solid State Disk(전자식 디스크)를 많이 사용하는 경향이 생겼습니다.



- SSD(Solid State Disk)는 기존에 기계식 디스크의 저장용 플레터(원판)을 제거하고 대신 비휘발성 플래시 메모리를 장착하여 만들었습니다.


- SSD를 통해서 기계식 디스크로 인해 빨라진 I/O를 통해서 I/O 병목현상을 어느정도 해결하게됩니다.


- 속도는 CPU > D-RAM > SSD > HDD 순입니다.



전자식 디스크의 장점


- 기계식(HDD)을 전자식(SSD)으로 대체하고 개선된 점 중 하나는 랜덤 I/O 작업에 대해서 상당한 속도 향상을 보여줍니다.


- 속도 향상의 이유는 기계식은 플레터(HDD의 저장 원판)의 데이터 지점까지 찾아가야합니다.


- 랜덤하게 I/O가 발생하는 경우, 여기 저기 분포해있는 데이터의 지점을 찾아가는 물리적인 시간이 걸리게됩니다.


- 전자식 디스크인 SSD는 그 물리적인 시간이 사실 없다라고 봐도 될 정도로 빠르기때문에 랜덤 I/O 발생시, 기계식 디스크 보다 월등히 빠릅니다.



전자식 디스크를 활용해야하는 이유


- 지금의 컴퓨터를 이용한 서비스 환경, 예를 들면, 모바일이나 웹을 통한 데이터 제공을 하는 경우에는 사실 event-driven 방식의 서비스를 응답해야합니다.


- 즉, 사용자의 요청이 왔을 때마다 그때 그때 응답을 바로 해주어야합니다. 이 말은 랜덤 I/O가 발생하는 환경이라는 것입니다.


- 물론 많은 요청이 오지 않은 경우에는 처리에 많은 시간이 걸리지 않겠지만, 요청이 몰리는 경우 서버가 다운되는 상황까지 발생할 수 있습니다.


- 그래서 랜덤 I/O에 강한 SSD와 같은 전자식 디스크를 사용해야합니다.


- 또한, 쿼리 튜닝을 통해 꼭 필요한 쿼리만 요청하게하고, 쿼리 수를 줄여주는 방향으로 DB를 사용해야 좋은 성능을 낼 수 있습니다.



이상으로 글을 마치겠습니다.


'MySQL' 카테고리의 다른 글

SQL 테이블 검색  (0) 2017.05.29
SQL 기반 RDBMS 종류  (0) 2017.05.26
MySQL 인덱스란?  (0) 2017.05.22
MySQL Full Text Search Index 사용하기  (4) 2017.05.18
MySQL에 대한 간단한 설명  (0) 2017.05.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함