CPU 성능이 데이터베이스 서버와 관련이 있습니까?


33

이것은 순전히 이론적 인 질문입니다. 여러 서버에 응용 프로그램을 배포했다고 가정 해 봅시다.

  1. 로드 밸런서
  2. 여러 / 확장 가능한 응용 프로그램 서버
  3. (단일) 데이터베이스 서버 (현재)

첫 두 부분에서, 나는 무엇을 찾아야하는지 안다. 그러나 데이터베이스 서버는 어떻습니까? 어떤 종류의 하드웨어를 찾아야합니까?

  • CPU 주파수는 데이터베이스 서버와 관련이 있습니까?
  • 여러 코어 CPU가 관련이 있습니까?
  • RAM이 CPU보다 더 중요합니까?

추신 : 선택한 데이터베이스가 MySQL 또는 PostgreSQL이라고 가정합니다.


글쎄, 하나가 있어야합니다.
ConcernedOfTunbridgeWells

답변:


29

PostgreSQL의 경우, 특히 데이터의 활성 작업 세트 중 상당히 높은 비율이 RAM에 적합한 경우 CPU 성능이 매우 관련 될 수 있습니다. 내가 작업 한 대부분의 데이터베이스는 대부분의 주요 병목 현상으로 CPU 성능을 가지고 있습니다. (방금 5TB 이상의 데이터베이스 공간을 호스팅하는 하루에 수백만 건의 히트를 기록한 웹 사이트를 호스팅하는 서버에서 vmstat를 확인한 결과 디스크 대기 시간이 2 %를 넘지 않았지만 최대 12 %의 사용자 CPU 시간을 보았습니다.)

PostgreSQL은 프로세스 기반이기 때문에 모든 단일 프로세스는 하나의 코어만큼 빠르게 실행될 수 있지만, 위에서 언급 한 서버에서와 같이 적은 양의 요청이 많으면 모든 코어의 총 CPU가 가장 중요합니다. 동일한 총 CPU 성능을 위해 PostgreSQL은 일반적으로 많은 느린 코어보다 적은 코어로 더 나은 성능을 제공합니다.

활성 데이터 세트의 높은 비율이 캐시되는 시점까지 RAM을 추가하면 일반적으로 코어를 추가하는 것보다 더 많은 비용이 소요됩니다. 캐싱이 충분하면 추가 RAM의 이점이 떨어지고 CPU 성능을 향상시키는 것이 좋습니다.

이 PostgreSQL의 관련된으로이 주제에 대한 자세한 내용은, 나는보다 더 나은 소스 없다고 생각 PostgreSQL의 9.0 고성능 에 의해 그렉 스미스 . (전체 공개, 나는이 책의 기술적 인 검토 자 였지만 판매에 따른 재정적 이익은 얻지 못했습니다.)


저기요, 책이 있습니다. 기억하고있는 특정 페이지, 섹션 또는 장이 있습니까 ??? (PostgreSQL 관점의 경우 BTW +1)
RolandoMySQLDBA

PostgreSQL에 대한 정보를 주셔서 감사합니다. 나는 책을 확인할 것이다. ;)
Zenklys

1
21-23 페이지의 좋은 내용
RolandoMySQLDBA

21-23 페이지와 비교할 때 두 번째 단락의 지혜를 볼 수 있습니다.
RolandoMySQLDBA

23

엄밀히 말하면 MySQL 관점에서 볼 때 매우로드 된 질문입니다.

데이터베이스 서버와 관련된 CPU 주파수?

더 빠른 CPU 및 마더 보드는 훌륭하지만 다른 병목 현상이 발생할 수 있습니다. 이러한 병목 현상은 다음과 같습니다.

  • 디스크 I / O
  • 연결 최대 값
  • 네트워크 지연
  • 연결 당 쿼리 성능

모든 작은 이점은 도움이되지만 CPU 속도 자체는 위에서 언급 한 병목 현상을 개선하지 않기 때문에 아니요 라고 대답 해야합니다 . 결국, 포뮬러 원 RaceCar는 오픈 낙하산을 착용하거나 휠에 800 파운드 고릴라를 착용하면 어떤 이점을 얻을 수 있습니까?

여러 코어 CPU가 관련이 있습니까?

그것은 전적으로 실행중인 MySQL 버전에 달려 있습니다. MySQL 5.1 InnoDB 플러그인, MySQL 5.5 및 Percona Server의 XtraDB는 모두 InnoDB가 모든 코어에 액세스하도록 올바르게 구성해야 합니다. 이 작업에 대한 실질적 인센티브는 이전 게시물에서 논의했듯이 일부 이전 버전의 MySQL LEFT UNCONFIGURED가 최신 버전보다 빠르다는 사실에서 비롯됩니다.

따라서 모든 CPU에 액세스하기 위해 InnoDB를 구성하지 않으려는 경우 여러 코어를 사용하면 아무것도 구매하지 않습니다 .

RAM이 CPU보다 더 중요합니까?

아, 그래요 MySQL의 메모리 구성에는 설정이 필요합니다

이러한 것들과 MySQL의 조합을 너무 적거나 너무 많이 요청하면 다시 물릴 수 있습니다. RAM이 잘못 구성된 MySQL을 사용하는 더 빠른 CPU는 MySQL을 더 빨리 물게 만듭니다.


2
좋은 대답입니다. 모든 링크를 확인하겠습니다. 감사합니다.
Zenklys

6
  • 아니
  • 아니

간단히 말해서 데이터베이스에는 RAM 및 IO 성능 (대기 시간 + 읽기 속도 + 쓰기 속도)이 필요합니다.

4 개 또는 6 개 코어 또는 2.5GHz 대 3GHz 중에서 선택하는 것은 실제로 관련이 없습니다 (32GB RAM이있는 P3-450 또는 1GB RAM이있는 최신 Xeon 중에서 선택할 필요가 없다고 가정).

CPU가 바인드되면 다른 문제 (빈약 한 디자인, 열악한 인덱스, 스와핑, 비 전용 서버 등)가 있습니다.


답변 해주셔서 감사합니다. 그렇다면 SSD는 좋은 선택입니까? CPU 전원이 초과 되었습니까?
Zenklys

@ 젠클리스 : 말하기 어렵다. 어떤 데이터베이스 크기가 있습니까? 볼륨을 쓰시겠습니까? 로드를 읽습니까? OLTP 또는 OLAP? 기타
gbn

최대 20-30GB. 10 : 1 읽기 / 쓰기 비율, 작은 데이터 만 OLTP.
Zenklys

2
@ Zenklys : 어떤 경우에는 중요하지 않습니다. 가능한 많은 데이터가 캐시되도록 특히 MySQL 용 RAM을 구입하십시오
gbn

3
이것이 왜 대답인지 확실하지 않습니다. 응용 프로그램, 작업 부하 또는 데이터 세트 크기를 고려하지 않기 때문에 단순합니다. @kgrittn은 실제 경험을 바탕으로 더 나은 답변을 제공했으며 Postgres의 작동 이론을 더 잘 파악했습니다.
dbenhur
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.