32ビットデータベースまたは64ビットデータベースをインストールする必要がありますか?


16

(64ビット対32ビットのOS /アプリについて多くのことを読みましたが、この質問は特にデータベースに関するものです。)

32ビットデータベースと64ビットデータベースの長所と短所、つまり、64ビットインストールを使用することが理にかなっている状況を理解しようとしています。

興味のあるデータベースシステムは、SQL Server 2008、MySQL、およびPostgreSQL 9.0です。

PostgreSQLの9.0より前のバージョンはWindowsの32ビットのみであり、64ビットWindowsでの32ビットPostgreSQLの実行に関するこの記事では、混乱の一部を解決したことを読みましたが、詳細を探しています。

64ビットデータベース(データベースサイズ/ディスク領域、利用可能なシステムメモリ、その恩恵を受けることが知られているデータサーボの種類、使用されているデータベースエンジンなど)を使用するメリットはいつですか?

回答:


20

64ビットのインストールを使用するのが理にかなっているという条件の下で。

ばかげている以外のすべての下で。申し訳ありませんが、32ビットデータベースを64ビットサーバーにインストールすると何が良いでしょうか?そして-想像してみてください-サーバー2008R2は64ビットでのみ利用可能です。

現在、32ビットのSQL Serverバージョンをインストールするのが理にかなっているシナリオはありません。

データベースはこれに固有です-必要に応じてキャッシュとして大量のメモリを使用するため。32ビットプロセスで提供できるわずかな2GB / 3GBをはるかに超えています。PAEは同じではありません。制限を無視しても、PAEメモリはSQL Serverの実際のメモリと等しくありません(dbページのキャッシュに使用されるのは1つだけです)。

32ビットOS-同じレベルです。32ビットOSをインストールすることは、最新のハードウェアではまったく意味がありません。


4
+1アーメンブラザー!!
DaniSQL

6
32ビットのOSとアプリに関する限り、メモリフットプリントが小さいなど、いくつかの小さな利点があります。
-JohnB

@TomTom:SQL Server 2008 R2は32ビットで利用可能です(わずかにスクロールダウン)msdn.microsoft.com/en-us/library/ms143506.aspx
JohnB

1
はい、フットプリントが小さい。関係のないデータベースの場合は特に残念です。データベースは言葉ではありません。-ほとんどのインストールでは-大量のデータを処理するため、大量のRAMにアクセスするのは理にかなっています。
トムトム

1
...プロセスで4GBを超えるRAMが大量にありますか?マルチプロセスサーバー全体にそれを提供していないSQLサーバーがいくつあるか知っていますか?64ビットOSとSQLサーバーを使用するのは悪い考えだとは言いませんが、/とは関係ない設定がたくさんあると言います。
エヴァンキャロル

6

PostgreSQLは、主に2つの方法で64ビットビルドを使用することで恩恵を受けます。まず、64ビットに収まるデータ型(主に大きい整数とタイムスタンプ型)は、ポインターを使用するよりも、レジスタで直接効率的に渡すことができます。第二に、データベースの専用バッファキャッシュにより多くのメモリを割り当てることができます。その調整パラメータ(shared_buffers)の戻り値が減少するポイントは、通常8GB前後ですが、32ビットシステムでは2GB未満に制限されます。

ただし、Windowsを使用している場合、PostgreSQLは共有メモリをUNIX風のプラットフォームほど効率的に処理しません。PostgreSQLの32ビットビルドまたは64ビットビルドのどちらを使用する場合でも、収益が減少するポイントは通常、データベース用の512MB以下の専用メモリになります。残りをデータベース専用にするのではなく、オペレーティングシステムのキャッシュに残しておく方が良いでしょう。したがって、Windows上のPostgreSQLでは32ビットから64ビットへのパフォーマンスの向上はそれほどありません。通常、より多くのRAMを使用できることでメリットが得られる主な調整パラメータは、実際にはあまり利用されません。


1
64ビットWindows PostgreSQLのwork_memに非常に大きな値を設定すると、サーバーがメモリ内の大量のデータをソートできるという利点があると報告している人がいることに注意してください。
グレッグスミス

4

MySQLを64ビットアーキテクチャで実行するのは、スレッドごとに4GBを超えるメモリを最も効率的に使用するためです。一般的に、これはすべてのデータベースに適用されます。

アーキテクチャ間の主な違いの1つは、アドレス指定の増加によりメモリ処理が向上することです。Intelの物理アドレス拡張では4GBを超えるアドレス指定が可能ですが、スレッドごとに4GBに制限されています。PAEは最大64GBを許可します。

ウィキペディアには、64ビットと32ビットの比較があり、より低レベルの詳細が含まれています。


2
スレッドごとではなく、プロセスごとです。スレッドは同じメモリ空間を共有します。
エヴァンキャロル

3

64ビットのMySQLクライアントライブラリしかない場合、32ビットコードとリンクしようとすると、「間違ったアーキテクチャ」エラーが発生します。これは、Pythonバインディングをインストールしようとしたときに起こりました(「pip install MySQL-python」)。

32ビットMySQLクライアントで64ビットMySQLサーバーを使用できますが、MySQL Community Serverに32ビットと64ビットの両方のクライアントライブラリバージョンが含まれていないのは残念です。正しい解決策は、追加の32ビットのMySQLクライアントライブラリをインストールすることです。ただし、MySQLをインストールする最も簡単な方法はMySQL Community Serverバイナリダウンロードのようであり、64ビットインストーラーには64ビットクライアントライブラリのみが付属しているため、抵抗が最も少ないのは32ビットインストーラーをダウンロードすることです。

(これはすべて、常に非常に小さなデータセットを使用すると仮定して)


2

非常に多くの点で、32ビットは(アドレス空間で生活できる限り)勝ちですが、DBは、小さなデータベースでも64ビットで実行される実際のブーストを得ることができるものの1つです。確かに、MS SQLサーバーに関することは知りませんが、ベンチマーク(たとえば、Sun 5(古い64ビットSunデスクトップ)で、32ビットが一般的に少し高速でしたが、mysqlは30でした。 64ビットで%速くなりました。


2
「非常に多くのことで、32ビットが勝利です」-例
クリスS

1
コードが適切な最適化でコンパイルされていない場合は、32ビットデータベースが64ビットより高速になると想像できる唯一のケースです。ビジネスソフトウェアに関する限り、データベースはおそらく64ビットが提供するものを最大限に活用できるものです。
ジョン・ガーデニアス

1
さて、RISC 32> 64移行時代の多数のベンチマークと、少なくとも初期のx86は、アドレススペースが必要で、dbが必要でない限り、64ビットの利点はほとんどありませんでした。私もそれを信じたくありませんでしたし、今日x86に賭けているのは、64ビットは常に高速です(そのi32命令セットをエスケープするからです)。Anandtech.comには、眼球が出血するまでのベンチマークがあります。要確認:データを表示してください。
ロナルドポトル

1
他のすべてが等しい場合、64ビットについて考えることができる主な欠点は、より大きいポインタ(64ビット)であり、同等の32ビット動的データ構造(リンクリスト、ツリーなど)よりも多くのキャッシュメモリスペースを占有します...)。これにより、使用可能なキャッシュメモリの量が減少します。この現象は、メインメモリでも持続します。64 MBのRAMのみを搭載した64ビットDebianサーバーは、同様のセットアップの32ビットサーバーよりも多くのスワップを使用し、実行するアプリが少なくなります。
sybreon

3
@sybreon:必要な場合は、古い128MBを使用していると思います!
JohnB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.