sql >> データベース >  >> RDS >> Mysql

C#-MySQLとMicrosoft SQL Server

    私は大小さまざまなC#プロジェクトでSQL Serverを長年使用してきましたが、昨年は、すでにMySQLを使用しているさまざまなC#(ただし、オープンソース関連およびスタートアップ関連)プロジェクトで主にMySQLを使用しています。

    SQL Serverが恋しいです!私の経験では、SQLServerは多くの点で優れています。

    • SQL Serverのクエリオプティマイザはよりスマートです。つまり、多くの場合、クエリを作成でき、最適なクエリプランを生成できます。 MySQLを使用すると、優れたクエリプランを作成するために、比較的単純なクエリでさえも手動で調整することに多くの時間を費やしていることに気付きます。
    • SQL Serverの基盤となるデータベースエンジンは、パフォーマンスを向上させるためにさまざまなことを実行できます。たとえば、MySQLのすべての結合はネストされたループ結合ですが、SQL Serverはハッシュ結合またはマージ結合を実行できるため、クエリのパフォーマンスが10倍以上向上する場合があります。 SQL Serverはクエリを並列化することもでき、特に大規模なデータウェアハウスのワークロードの場合、パフォーマンスを劇的に向上させることができます。
    • GUIツールは数マイル先にあります。 SQL Serverのグラフィカルプランクエリオプティマイザーを使用すると、クエリの最適化が簡単になります。EXPLAINEXTENDEDに戻る必要はありません。 SQL Server 2008のグラフィカル監視ツールは、遅いクエリログを調べて、何が問題になっているのかを把握するよりもはるかに簡単です。など。
    • おっしゃるように、SQL Serverでの.NET統合ストーリー(C#、Linq、Entity Frameworkなど)の方が優れています。私はMySQLでもC#、Entity Framework、LINQを使用しているので、どちらでもありません。ただし、.NET環境のSQL Serverでは、チームが協力してパフォーマンスを向上させ、統合をより適切に機能させるため、パフォーマンスが向上する可能性があります。 。
    • SQL ServerのSQL言語サポートは、MySQLよりも豊富で、 ROW_NUMBER() GROUPING_SETS OPTIMIZE FOR 計算列 、など
    • 特に圧縮バックアップを使用するSQL2008では、バックアップが何倍も高速になります
    • SQLServerの将来に掛かっているOracle買収クラウドはありません。
    • SQL Server(特に高価なエディション)には、OLAPデータウェアハウス(SSAS)、レポートソリューション(SSRS)、ETLツール(SSIS)、スケジューラー(SQLエージェント)などの他の機能が付属しています。同様のオープンソースツールを無料で入手します(例: Pentaho BIRT など)ですが、SQLServerとの統合はより優れている傾向があります。

    とはいえ、重大な欠点があり、それがあなたにとって取引を妨げるものである場合とそうでない場合があります。

    • Windowsサーバーの使用に悩まされており、これに伴うすべての長所と短所があります
    • SQL Server、特にハイエンドエディションは、高価です。 !小さなDB(<4GBだと思います)の場合、SQL Server Expressは無料ですが、通常のSQL Serverとほぼ同じようにフル機能を備えています。データが小さくなり、上司が安いスケートであることがわかっている場合、Expressが最適です。また、新しいSQL Server 2008 Web Editionがあります。これは、インターネット向けのWebアプリの場合、ホスティング業者のコストがプロセッサあたり月額わずか15ドルであるため、理論的には安価なホスティングを提供するはずです。
    • オープンソースではありません。一部の企業や開発チームは、正当な理由(デバッグ、コスト、哲学など)のために、これに非常に情熱を注いでいます!
    • 上記に関連:MySQLでバグを修正したい場合で、スキルを持っている場合は、自分で修正できます。 SQL Serverでは、クエリ処理や最適化などに何年も続く厄介なバグがあります。私はそれらのいくつかを回避するために途方もない時間を費やしてきました。
    • InnoDBの代わりにMyISAMを使用することで回避できる、非常に単純な読み取り専用(または非トランザクション)ワークロード(たとえば、WebアプリからのDBベースのキャッシュアクセス)の場合、MySQLは大幅に高速化できると聞いています。

    警告:MySQL 6.0は上記のギャップや違いの多くに対処することになっていると聞きましたが、確かに、Oracleなどがスケジュールや機能セットにどのように影響するかについては理解していません。

    re:「C#は組み込み」注:はい、.NET言語を使用してストアドプロシージャ、関数、集計などを開発できますが、ほとんどのシナリオでIMHOは、展開が難しく、 DBAは、サーバー上の.NETコードにあまり慣れていません。 C#+ .NET + Visual Studio + SQL Serverの組み合わせであるIMHOの真のメリットは、過去10年間にわたって並行して設計されており、すべてがうまく連携するため、使いやすさと相乗効果が得られることです。 MySQLを使用できない場合があります。とは言うものの、前述したように、これはディールブレーカーでもディールメーカーでもありません...他のMicrosoftスタックでSQLServerを使用する方がスムーズです。

    要約すると、多くのDBワークロードでは、MySQLで十分です。動作し、安定し、高速で、適度に優れたツールを備えています。そして手頃な価格です。 :-) MySQLを使用しているという理由だけで、プロジェクトを拒否することは決してありません。しかし、比較はホンダとBMWを運転するようなものです...ホンダはあなたが行きたい場所にあなたを連れて行きます、しかしあなたの財布がそれを取ることができれば、あなたはビマーでより多くの乗り心地を楽しむでしょう。 :-)



    1. 異なるデータベースの2つのテーブルを同期する-MySQL

    2. 2つの日付の日/月/年(datediff)の差を取得するにはどうすればよいですか?

    3. mysqlからの再帰的phpを使用した配列の作成

    4. SQL Serverにリンクサーバーログインを追加する(T-SQLの例)