32 비트 Windows Server 및 SQL Server를 64 비트로 업그레이드하면 어떤 이점이 있습니까?


13

피크 시간에 RAM 사용량이 약 2GB 인 SQL Server와 함께 여러 서버 응용 프로그램을 작동하는 32 비트 Windows Server 상자가 있다고 가정합니다.

서버 응용 프로그램을 32 비트로 유지하면서 Windows Server OS 및 SQL Server를 해당 64 비트 버전으로 업그레이드하면 어떤 이점이 있습니까? 64 비트 버전은 4GB 이상의 RAM에 액세스 할 수 있지만 4GB가 완전히 활용되지 않아서 업그레이드에 문제가 있습니까?

버전 : Windows Server 2008 R2, SQL Server 2008 R2 Datacenter Edition

감사

답변:


19

강력하게 관련 : 32 비트 Microsoft Windows 데스크탑 OS를 유지해야하는 좋은 이유

당신이 하는 64 비트 OS를 사용. Server 2008 R2는 64 비트 CPU 만 지원하는 최초의 제품입니다.

"최신"버전의 Windows는 32 비트 용으로 설계되지 않았습니다. 아무 것도 활용하지 못할 수도 있지만 단점도 없어야합니다. 즉, Server 2008 R2 SP1 (사용하길 희망합니다) 이 2020-01-14의 EOL이기 때문에 업그레이드하십시오 .

SQL Server 32 비트 / 64 비트의 경우 : ~ 3,75GB 이상의 RAM (또는 프로세스 당 2GB 초과)이 필요하지 않은 경우 32 비트 버전을 문제없이 사용할 수 있습니다. 그러나 최신 버전의 경우 Microsoft가 64 비트로 만 전환했기 때문에 설치할 32 비트 버전이 없습니다.


6
OP는 "피크 타임에 2GB"를 언급하므로 SQL Server가 2GB 이상을 사용하려고하지만 32 비트 프로세스 제한으로 인해 불가능할 수 있습니다.
MonkeyZeus

아마도 MS SQL Server 2008이 다른 작업 / 인스턴스 / 데이터베이스 등을 위해 여러 프로세스를 사용하는지 여부는 알 수 없습니다.
Lenniey

11

이미 언급했듯이 이미 64 비트 OS를 사용하고 있습니다. 64 비트 버전의 SQL Server로 전환하면 두 가지 장점과 단점이 있습니다.

유일한 단점은 64 비트 버전의 SQL Server가 64 비트 포인터를 사용한다는 것입니다. 이는 포인터가 두 배의 메모리를 차지하고 두 배의 메모리 대역폭을 소비하는 등을 의미합니다. 이것은 무시할만한 수준이지만 단점입니다. 64 비트 응용 프로그램으로 전환하면 32 비트 응용 프로그램이 64 비트 OS 기능에 액세스하는 데 사용해야하는 호환성 계층의 오버 헤드를 버릴 수 있다는 사실에 의해 부분적으로 보상됩니다.

가장 큰 장점은 시간이 지남에 따라 CPU 명령 세트가 크게 개선되었다는 것입니다. 일부는 64 비트로 변경되었으며 일부는 이전에 변경되었습니다.

그러나 이전에 만든 것조차도 32 비트 빌드는 이러한 기능이없는 CPU를 처리하고 여러 인스턴스 간의 감지 및 전환 번거 로움을 피하기 위해 존재하는 경우에도 사용하지 않습니다. 예를 들어 64 비트 CPU에는 SSE2가 있어야하지만 32 비트 CPU는 그렇지 않을 수 있습니다. 따라서 대부분의 32 비트 코드는 검사를 방해하지 않으며 SSE2가 없다고 가정합니다. 64 비트 코드는 SSE2 명령어가 존재하므로 가장 적합한 옵션 인 경우이를 사용합니다.

가장 큰 것은 명명 된 범용 레지스터 수가 8 개에서 16 개로 증가한 것입니다. 128 비트 XMM 레지스터도 8 개에서 16 개로 두 배가되었습니다.

또한 64 비트 프로세스는 많은 양의 가상 메모리를 사용할 수 있습니다. 이는 디스크에서 대량의 구조화 된 데이터에 액세스하는 프로세스에서 특히 중요합니다. 물론 대용량 파일 시스템에서 암호화, 압축 및 일부 파일 시스템 작업의 성능을 향상시키는 64 비트 정수 연산을 사용할 수 있습니다.


AVX 및 공동 지침이 실제로 SQL Server 성능에 현저한 영향을 미칩니 까? 나는 그것이 그것이 의존하는 IO 서브 시스템이라고 가정합니다 (그러나 벤치 마크 또는 테스트 한 적이 없습니다).
Voo

일부 최신 32 비트 코드 SSE2를 가정합니다. 특히 SSE2를 갖기에 충분한 새 CPU 만 지원하는 OS (다른 일부 필수 기능과 함께)를 실행할 때 특히 SSE2를 가정합니다. Microsoft /arch:SSE2가 gcc / clang / ICC와 동등한 32 비트 코드 옵션 이있는 MSVC로 물건을 컴파일한다고 가정합니다 -msse2. SQL에는 SIMD 벡터화 루프가 많지 않지만 16 바이트 SIMD로드 / 저장소로 작은 구조체를 복사하는 것이 좋습니다.
Peter Cordes

x86-64에서 가장 중요한 변경 사항 중 하나는 효율적인 위치 독립적 코드를위한 PC 기준 주소 지정입니다. 32 비트 PIC 라이브러리는 일반적으로 32 비트 비 PIC에 비해 ~ 10 % 또는 ~ 15 % 속도 저하 (IIRC)를 갖습니다. 더 많은 정수 레지스터를 갖는 것도 많은 도움이됩니다. 64 비트에서 한 가지 큰 장점은 더 좋은 호출 규칙이지만 Windows (Linux와 달리) 32 비트 코드는 __fastcall많은 함수에 대한 레지스터에서 인수를 전달합니다. Linux 32 비트 호출 규칙은 순전히 스택에 있으므로 인라인되지 않는 작은 기능에는 적합하지 않습니다.
Peter Cordes

특정 지원 수준을 가정 / 요구하는 대신 벡터화가 실제로 성능에 큰 영향을 미치는 경우 코드는 아마도 CPU가 지원하는 최신 SSE / AVX 버전을 확인하고 실행중인 시스템에서 속도를 높이기 위해 적절한 구현을 호출합니다. 의 위에.
Dan 님이 Firelight 님에 의해 Fiddling

@DanNeely 이는 빌드를 만든 사람이 32 비트 버전의 성능을 개선하기 위해 노력한 것으로 가정합니다. 적어도 저의 경험은 성능에 관심이있는 사람들이 64 비트 빌드를 사용한다고 가정한다는 것입니다.
David Schwartz

6

기본적으로 : 예. 4 비트 만 업데이트한다고 가정하면 2008 년보다 최신의 32 비트 SQL Server가 있는지 확실하지 않습니다.

귀하의 질문에 관한 문제 : "64 비트 버전은 4GB 이상의 RAM에 대한 액세스를 허용합니다."-4GB가 아니라 3gb가되도록하십시오. 1gb는 항상 예약되어 있습니다.


우리가이 별난 사람이라면, 32 비트 프로그램이 수백 GB의 RAM에 쉽게 액세스 할 수 있다고 말하지 않겠습니까? ;) 가상 주소 공간 만 제한되어 있습니다.
Voo

3
@Voo : 그리고 SQL Server는 그 방법을 알고있는 몇 안되는 프로그램 중 하나입니다.
joshudson

6

잠재적 인 문제 : CLR 사용자 정의 함수 (UDF)의 DLL 라이브러리에는 64 비트 버전이 필요합니다.

CLR 사용자 정의 함수 라이브러리를 사용하는 경우 비트 호환되지 않습니다. 32 비트 DLL은 일반적으로 64 비트 소프트웨어에서 사용할 수 없으며 그 반대도 마찬가지입니다. 사용중인 일부 UDF 라이브러리의 64 비트 버전을 얻을 수없는 경우 해당 특정 확장자를 잃게됩니다.

기본적으로 추가 기능이있는 32 비트 소프트웨어를 64 비트 버전으로 업그레이드하는 것과 동일한 문제입니다. 또한 모든 애드온을 64 비트 버전으로 전환해야합니다. 일반적으로 쉽지만 교체가 불가능한 문제는 중단 된 것입니다.


3

공연!

여기에는 이미 몇 가지 기술적 답변이 있지만 너무 기술적이지 않고 응용 프로그램에 따라 성능 업그레이드를 볼 수 있습니다.

주요 부분은 다음과 같습니다

큰 메모리 주소 지정 : 64 비트 아키텍처는 직접 주소를 지정할 수있는 더 큰 메모리 공간을 제공합니다. SQL Server 2005 (64 비트)는 32 비트 시스템의 4GB 메모리 제한에 구속되지 않습니다. 따라서 복잡한 쿼리를 수행하고 필수 데이터베이스 작업을 지원하기 위해 더 많은 메모리를 사용할 수 있습니다. 이 더 큰 처리 용량은 기존 32 비트 시스템보다 더 많은 메모리를 활용하여 I / O 대기 시간의 처벌을 줄입니다.

향상된 병렬 처리 : 64 비트 아키텍처는 고급 병렬 처리 및 스레딩을 제공합니다. 병렬 처리 및 버스 아키텍처의 개선으로 64 비트 플랫폼은 더 많은 수의 프로세서 (최대 64 개)를 지원하면서 각 추가 프로세서마다 선형 확장성에 가깝습니다. 더 많은 수의 프로세서를 사용하면 SQL Server는 단일 시스템에서 더 많은 프로세스, 응용 프로그램 및 사용자를 지원할 수 있습니다.

https://teratrax.com/sql-server-64-bit/

32 비트에서 64 비트 SQL Server (SQL Server 2005)로 전환했을 때 가장 극적인 결과는 클라이언트의 주요 응용 프로그램에서 약 40 %의 속도 향상이었습니다. 64 비트 SQL Server를 설치하기 만하면됩니다. 그것은 실제 세계에서 중요한 성능 향상이었습니다.


-2

특히 멀티 스레딩이 많은 프로그램에서 멀티 태스킹 성능을 향상시킬 수 있습니다. 또한 64 비트 OS로 더 많은 램을 설치할 수 있습니다. 그러나 프로세서가 64 비트 명령어를 지원하는 경우에만이 작업을 수행하십시오.

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