[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ

OracleとSQLServerを比較したとき、Oracleが優れている点ってどんなところだと思いますか?
また開発でOracleとSQLServerどちらかを提案するとき、どういった切り分けで2つを使い分けますか?

私が思うOracleの優位性は
・行ロックが確実
・RowIDの存在
・データが大容量でも比較的早い
・細かくチューニングができる
です。

またOracleかSQLServerかのどちらかの選択で、私が自由に提案できるとしたら、行ロックがほとんど必要ない&データ件数が数万~数十万程度ならSQLServer、行ロックが頻繁に必要&データ件数が数十万以上ならOracleを提案します。

ちなみに私のDBを使った開発歴は、Access1年程度、SQLServer1年程度、Oracle4年程度です。
よろしければ、みなさんのDBを使った開発歴も教えてください。

A 回答 (2件)

こんばんは。

自分も大変興味ある話題です。

>>行ロックが確実

これはMSSQLやDB2も搭載している機能ですよね。何をもって「確実」と
見るのかが難しそうです。

データ件数でのテスト評価は各ベンダーからベンチマークが
出てますが実際各DBに差はありますか?。
※同一マシン同件数一括更新などで

処理件数で提案するのは可能なのでしょうか?。。


>>RowIDの存在

両者を細部技術まで切り分ける際には話題になりそうですね。
ただ適切なSQLチューニングをすれば特に問題にはならないような気も。

自分のざっくりな印象ですが

>>Oracle
・情報、技術者が豊富
・業界標準という印象(実績が多い)
・複数OSサポート
・初期パラファイル、制御ファイルなど保守対象が多い
・チューニング作業には深い知識が必要(パラメータ、Explain含め)

>>SQLServer
・Windowsインフラとの親和性(Active Directoryなど)
・MS開発言語との親和性(2005など特に)
・GUIツールの充実(トレース、バックアップなど)
・自動メモリ管理による管理負荷の低減

インフラ、開発言語、で決まる要素なのかな?って印象ですが。。
    • good
    • 2
この回答へのお礼

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

お礼日時:2005/08/30 23:31

> ・行ロックが確実


> ・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/entw …
    • good
    • 0
この回答へのお礼

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

>SQLServerにはWindowsでしか使用できないという最大の欠点
これはまさにそうですね。

参考のURL面白かったです。ありがとうございました。

お礼日時:2005/08/31 23:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報