Oracleから見たOracleの優位性(SQLServerとの比較)こんにちはゲストさん。・データが大容量でも比較的早い・細かくチューニングができるです。OracleかSQLServerかのどちらかの選択で、私が自由に提案できるとしたら、行ロックがほとんど必要ない&データ件数が数万~数十万程度ならSQLServer、行ロックが頻繁に必要&データ件数が数十万以上ならOracleを提案します。ちなみに私のDBを使った開発歴は、Access1年程度、SQLServer1年程度、Oracle4年程度です。よろしければ、みなさんのDBを使った開発歴も教えてください。22:31:39通報するQNo.1616137lovesensすぐに回答ほしいです質問者が選んだベストアンサーこんばんは。自分も大変興味ある話題です。>>行ロックが確実これはMSSQLやDB2も搭載している機能ですよね。何をもって「確実」と見るのかが難しそうです。データ件数でのテスト評価は各ベンダーからベンチマークが出てますが実際各DBに差はありますか?。※同一マシン同件数一括更新などで処理件数で提案するのは可能なのでしょうか?。両者を細部技術まで切り分ける際には話題になりそうですね。適切なSQLチューニングをすれば特に問題にはならないような気も。Directoryなど)・MS開発言語との親和性(2005など特に)・GUIツールの充実(トレース、バックアップなど)・自動メモリ管理による管理負荷の低減インフラ、開発言語、で決まる要素なのかな?って印象ですが。回答ありがとうございます。行ロックは、SQLServerでロックエスカレーションという現象に苦しめられた経験があって、最終的にSQLServerの仕様と知って「こんなの行ロックじゃない」と嘆いた経験からです。処理速度は件数じゃなくてデータ量で測った方が正しいですね。同じ規模のテーブルを使ったSELECT文やコマンド発行の反応速度は、体感的にOracleの方が早かったです。今までの開発経験でいくとSQLServerは数十万件を超えると、Oracleは数百万件を超えるとパフォーマンス向上のためのテクを使わないと遅く感じた印象があります。主観的感想ですいません。RowIDは一意キーを設定していないテーブルで痛い目を見たことがあります。その失敗に懲りて、SQLServerでは必ずSeqnoで一意キーを作るようにしました。SQLServerもRowIDが欲しかった。言わんとしているところはロック・エスカレーションがないということでしょうか。これは排他制御方法の違いによるもので、OracleやPostgreSQLではロールバックセグメントを使用する「マルチバージョニング方式」を使用し、SQLServerやDB2では「ロック方式」を採用しているために起こる問題です。(参考URL)どちらにも、一長一短があり、これがOracleの優位点とみなせるかどうかは疑問です。いうのも、Oracleの場合は大容量のロールバックセグメントをあらかじめ用意しておく必要がありますし、トランザクションのたびにロールバックセグメントにデータを退避させる際のオーバヘッドも発生するからです。・データが大容量でも比較的早い何を根拠にそのようなことが言えるのかは分かりません。実際問題として、どちらも自社のデータベースが最速だと言い張っています。ちなみに、世間一般では検索はOracle、更新はSQLServerと言われています。何をやらせてもOracleが勝つというわけではありません。・細かくチューニングができる私はSQLServerを使用したことがないので、あまり細かいことは知りませんが、これは当てはまるかもしれませんね。その他、SQLServerにはWindowsでしか使用できないという最大の欠点があります。それに、最近のバージョンになって問題は小さくなってきましたが、唯一対応しているWindowsは比較的不安定であり、データベースのプラットフォームとしてはやや敬遠される傾向がありました。今でも、セキュリティアップデートをするだけで再起動しなければならないのは恐らくWindowsだけでしょう。Windowsなどに対応してしていますね。わけですからそれだけシェアを稼げることになります。回答ありがとうございます。>言わんとしているところはロック・エスカレーションがないということでしょうか。以前、データ量の少ないマスタを作って複数の人間で同時接続していたら、誰かが更新しているとき、更新対象でないデータもロックがかかっていて更新できない、という現象が多発して困ったことがあったのです。>SQLServerにはWindowsでしか使用できないという最大の欠点これはまさにそうですね。参考のURL面白かったです。ありがとうございました。