• ベストアンサー

Oracleから見たOracleの優位性(SQLServerとの比較)

OracleとSQLServerを比較したとき、Oracleが優れている点ってどんなところだと思いますか? また開発でOracleとSQLServerどちらかを提案するとき、どういった切り分けで2つを使い分けますか? 私が思うOracleの優位性は ・行ロックが確実 ・RowIDの存在 ・データが大容量でも比較的早い ・細かくチューニングができる です。 またOracleかSQLServerかのどちらかの選択で、私が自由に提案できるとしたら、行ロックがほとんど必要ない&データ件数が数万~数十万程度ならSQLServer、行ロックが頻繁に必要&データ件数が数十万以上ならOracleを提案します。 ちなみに私のDBを使った開発歴は、Access1年程度、SQLServer1年程度、Oracle4年程度です。 よろしければ、みなさんのDBを使った開発歴も教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#17137
noname#17137
回答No.1

こんばんは。自分も大変興味ある話題です。 >>行ロックが確実 これはMSSQLやDB2も搭載している機能ですよね。何をもって「確実」と 見るのかが難しそうです。 データ件数でのテスト評価は各ベンダーからベンチマークが 出てますが実際各DBに差はありますか?。 ※同一マシン同件数一括更新などで 処理件数で提案するのは可能なのでしょうか?。。 >>RowIDの存在 両者を細部技術まで切り分ける際には話題になりそうですね。 ただ適切なSQLチューニングをすれば特に問題にはならないような気も。 自分のざっくりな印象ですが >>Oracle ・情報、技術者が豊富 ・業界標準という印象(実績が多い) ・複数OSサポート ・初期パラファイル、制御ファイルなど保守対象が多い ・チューニング作業には深い知識が必要(パラメータ、Explain含め) >>SQLServer ・Windowsインフラとの親和性(Active Directoryなど) ・MS開発言語との親和性(2005など特に) ・GUIツールの充実(トレース、バックアップなど) ・自動メモリ管理による管理負荷の低減 インフラ、開発言語、で決まる要素なのかな?って印象ですが。。

lovesens
質問者

お礼

回答ありがとうございます。 行ロックは、SQLServerでロックエスカレーションという現象に苦しめられた経験があって、最終的にSQLServerの仕様と知って「こんなの行ロックじゃない」と嘆いた経験からです。 処理速度は件数じゃなくてデータ量で測った方が正しいですね。同じ規模のテーブルを使ったSELECT文やコマンド発行の反応速度は、体感的にOracleの方が早かったです。今までの開発経験でいくとSQLServerは数十万件を超えると、Oracleは数百万件を超えるとパフォーマンス向上のためのテクを使わないと遅く感じた印象があります。主観的感想ですいません。 RowIDは一意キーを設定していないテーブルで痛い目を見たことがあります。その失敗に懲りて、SQLServerでは必ずSeqnoで一意キーを作るようにしました。でも正直、SQLServerもRowIDが欲しかった。。。

その他の回答 (1)

  • entree
  • ベストアンサー率55% (405/735)
回答No.2

> ・行ロックが確実 > ・RowIDの存在 言わんとしているところはロック・エスカレーションがないということでしょうか。 これは排他制御方法の違いによるもので、OracleやPostgreSQLではロールバックセグメントを使用する「マルチバージョニング方式」を使用し、SQLServerやDB2では「ロック方式」を採用しているために起こる問題です。(参考URL) どちらにも、一長一短があり、これがOracleの優位点とみなせるかどうかは疑問です。というのも、Oracleの場合は大容量のロールバックセグメントをあらかじめ用意しておく必要がありますし、トランザクションのたびにロールバックセグメントにデータを退避させる際のオーバヘッドも発生するからです。 > ・データが大容量でも比較的早い 何を根拠にそのようなことが言えるのかは分かりません。実際問題として、どちらも自社のデータベースが最速だと言い張っています。 ちなみに、世間一般では検索はOracle、更新はSQLServerと言われています。何をやらせてもOracleが勝つというわけではありません。 > ・細かくチューニングができる 私はSQLServerを使用したことがないので、あまり細かいことは知りませんが、これは当てはまるかもしれませんね。 その他、SQLServerにはWindowsでしか使用できないという最大の欠点があります。 それに、最近のバージョンになって問題は小さくなってきましたが、唯一対応しているWindowsは比較的不安定であり、データベースのプラットフォームとしてはやや敬遠される傾向がありました。今でも、セキュリティアップデートをするだけで再起動しなければならないのは恐らくWindowsだけでしょう。 一方Oracleは、Linux x86, Linux IA64、Solaris SPARC, Solaris x86, HP-UX PA-RISC, HP-UX Itanium, AIX, Windowsなどに対応してしていますね。Unix系のサーバを使う人は必然的にOracleを選択する (PostgresSQLやDB2もありますが・・・) わけですからそれだけシェアを稼げることになります。

参考URL:
http://www.atmarkit.co.jp/fdotnet/entwebapp/entwebapp09/entwebapp09_01.html
lovesens
質問者

お礼

回答ありがとうございます。 >言わんとしているところはロック・エスカレーションがないということでしょうか。 その通りです。以前、データ量の少ないマスタを作って複数の人間で同時接続していたら、誰かが更新しているとき、更新対象でないデータもロックがかかっていて更新できない、という現象が多発して困ったことがあったのです。 >SQLServerにはWindowsでしか使用できないという最大の欠点 これはまさにそうですね。 参考のURL面白かったです。ありがとうございました。