32ビットWindows ServerとSQL Serverを64ビットにアップグレードする利点は?


13

ピーク時に約2 GBのRAM使用量で、SQL Serverとともにいくつかのサーバーアプリケーションを操作する32ビットWindows Serverボックスがあるとします。

サーバーアプリケーションを32ビットのままにして、Windows Server OSとSQL Serverを対応する64ビットバージョンにアップグレードする利点は何ですか?64ビットバージョンでは、4 GBを超えるRAMにアクセスできますが、4 GBが完全に使用されていないため、アップグレードが無駄になりますか?

バージョン:Windows Server 2008 R2、SQL Server 2008 R2 Datacenter Edition

ありがとう

回答:


19

強く関連:32ビットのMicrosoft WindowsデスクトップOSを保持する正当な理由

あなたはされている 64ビットのOSを使用して。Server 2008 R2は、64ビットCPUのみをサポートする最初の製品です。

Windowsの「新しい」バージョンは、32ビット用に設計されていません。あなたはおそらく何も利用しないでしょうが、欠点はないはずです。とはいえ、とにかくアップグレードしてください。Server2008 R2 SP1(使用していることを期待しています)は2020-01-14からEOLになります

SQL Server 32ビット/ 64ビットに関しては、理解は正しいです。3,75GBを超えるRAM(またはプロセスごとに2 GBを超える)が必要ない場合、問題なく32ビットバージョンを使用できます。ただし、Microsoftが64ビットのみに切り替えたため、新しいバージョンの場合、インストールする32ビットバージョンはありません。


6
OPは「ピーク時に2 GB」と言及しているため、SQL Serverが2 GBを超える使用を望んでいる可能性は完全にありますが、32ビットプロセスの制限により不可能です。
MonkeyZeus

可能性があります、MS SQL Server 2008が異なるタスク/インスタンス/データベース/などに複数のプロセスを使用しているかどうかは本当にわかりません
。– Lenniey

11

既に述べたように、すでに64ビットOSを使用しています。SQL Serverの64ビットバージョンへの切り替えには2つの利点と、1つの欠点があります。

唯一の欠点は、SQL Serverの64ビットバージョンが64ビットポインターを使用することです。これは、ポインターが2倍のメモリを占有し、2倍のメモリ帯域幅を消費する、などを意味します。これはおそらくごくわずかですが、不利です。64ビットアプリケーションに切り替えると、64ビットOSの機能にアクセスするために32ビットアプリが使用する必要がある互換性レイヤーのオーバーヘッドをなくすことができるという事実によって、部分的に補償されます。

主な利点は、CPU命令セットに多数の大幅な改善が時間とともに加えられたことです。それらの一部は64ビットへの変更に伴い作成され、一部は以前に作成されました。

しかし、以前に作成されたものであっても、32ビットビルドはそれらの機能を持たないCPUを処理する必要があり、複数のインスタンスの検出と切り替えの煩わしさを回避するために、それらが存在する場合でもそれらを使用しないでください。たとえば、64ビットCPUにはSSE2が必要ですが、32ビットCPUにはない場合があります。そのため、ほとんどの32ビットコードはチェックを行わず、SSE2を想定していません。64ビットコードはSSE2命令が存在することが保証されているため、最適なオプションである場合はそれを使用します。

最大のものは、名前付き汎用レジスタの数が8から16に増加したことです。128ビットXMMレジスタの数も8から16に倍増しました。

さらに、64ビットプロセスは大量の仮想メモリを使用できます。これは、ディスク上の大量の構造化データにアクセスするプロセスでは特に重要です。そしてもちろん、暗号化、圧縮、さらには大規模ファイルシステムでの一部のファイルシステム操作のパフォーマンスを向上させる傾向がある64ビット整数操作を使用できます。


AVXおよびco命令は、SQL Serverのパフォーマンスに本当に顕著な影響を与えますか?私はそれが依存するIOサブシステムであると仮定します(ただし、ベンチマークまたはテストしたことがありません)。
Voo

一部の最新の32ビットコード、SSE2を搭載するのに十分な新しいCPUのみをサポートするOS上で実行する場合(特に、他の必要な機能とともに)、SSE2を想定しています。Microsoftは、/arch:SSE2gcc / clang / ICCと同等の32ビットコード用のオプションを備えたMSVCを使用してそれらをコンパイルすると想定しています-msse2。SQLには多くのSIMDベクトル化ループはありませんが、16バイトのSIMDロード/ストアを使用して小さな構造体をコピーすると便利です。
ピーター

x86-64のより重要な変更の1つは、効率的な位置に依存しないコードのためのPC相対アドレス指定です。32ビットPICライブラリは通常、32ビットの非PICと比較して約10%または約15%のスローダウン(IIRC)があります。整数レジスタを増やすことも非常に役立ちます。64ビットの大きな利点の1つは、呼び出し規約が優れていることですが、Windowsでは(Linuxとは異なり)32ビットコードは__fastcall多くの関数のレジスタに引数を渡します。Linux 32ビットの呼び出し規則は純粋にスタック上にあるため、インラインにならない小さな関数にはかなりがらくたです。
ピーター

特定のサポートレベルを想定/要求するのではなく、ベクトル化がパフォーマンスにとって本当に重要な場合、コードはおそらく、CPUがサポートする最新のSSE / AVXバージョンをチェックし、実行中のシステムの速度を最大限に高めるために適切な実装を呼び出しますオン。
ダンは、

@DanNeelyこれは、ビルドを行った人がだれでも32ビットバージョンのパフォーマンスの改善に努力したことを前提としています。私の経験では、少なくとも、パフォーマンスを気にする人は64ビットビルドを使用しているとしばしば想定している。
デビッドシュワルツ

6

基本的に:はい。4ビットのみの更新は行わないと仮定します。2008年よりも新しい32ビットのSQL Serverがあるかどうかはわかりません。

あなたの質問に関する問題:「64ビットバージョンは4 GB以上のRAMへのアクセスを許可します」-4ではなく3 gbにしてください;)1 gbは常に予約されています。


もし私たちがこの巧妙なものであるなら、32ビットプログラムが数百GBのRAMに簡単にアクセスできると言って正しくないのはなぜですか?;)制限されているのは仮想アドレス空間のみです。
Voo

3
@Voo:SQL Serverは、その方法を知っている数少ないプログラムの1つです。
-joshudson

6

潜在的な問題:CLRユーザー定義関数(UDF)のDLLライブラリには、64ビットバージョンが必要になります。

CLR User-Defined Functionsのライブラリを使用している場合、ビット互換性がなくなります。32ビットDLLは一般に64ビットソフトウェアでは使用できません。逆の場合も同様です。使用しているUDFライブラリの64ビットバージョンを取得できない場合、その特定の拡張機能は失われます。

基本的に、32ビットソフトウェアのアドオンを64ビットバージョンにアップグレードするのと同じ問題です。また、すべてのアドオンを64ビットバージョンに切り替える必要があります。一般的には簡単ですが、問題は代替品が入手できない生産中止のものです。


3

パフォーマンス!

ここにはいくつかの技術的な回答がありますが、技術的になりすぎず、アプリケーションによってはパフォーマンスのアップグレードが表示されるはずです。

主な部分は次のとおりです。

大容量メモリアドレス指定: 64ビットアーキテクチャは、直接アドレス指定可能なより大きなメモリスペースを提供します。SQL Server 2005(64ビット)は、32ビットシステムの4 GBのメモリ制限に拘束されません。したがって、複雑なクエリを実行し、重要なデータベース操作をサポートするためにより多くのメモリを使用できます。この大きな処理能力は、従来の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でより多くのRAMをインストールできます。ただし、これは、プロセッサが64ビット命令をサポートしている場合にのみ行ってください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.