運用データベース用のSQL Server Expressですか?


14

各クライアントが独自のデータベースを持つデュアルWeb /内部トランザクションアプリケーションを展開しようとしています。各データベースは非常に小さく、それぞれ50 MB未満であるため、完全なSQL ServerではなくSQL Express 2008を使用するのが理にかなっているのではないかと考えていました。

これには、大量の$$$を節約しながら、サーバー間でディスクI / Oを分散できるという利点があるようです(小さな15Kドライブと使用済みのデュアルコアサーバーはどちらも安価であるため)。ある時点で必要なサーバーが多すぎる場合は、SQL Serverにアップグレードできますが、数十の内部ユーザーがいると、今はあまりにも高価に思えます(特にフェールオーバーボックスが必要なため)。

1 GBのメモリと1つのプロセッサでの4コアの使用は、データベースサイズが小さいため、制限が厳しすぎるとは思えません。最大200人の同時ユーザーが存在することは決してなく、ほとんどの操作はトランザクションに依存します(重いRAM / CPUよりも多くの高速ディスクを好むようです)。

SQL Server Standardの利点のうち、当初は5〜2000万ドルの追加投資を正当化できるものがありませんか?

回答:


17

SQL Serverの他のエディションでは、SQL Agentなどを使用できるため、データベースのメンテナンスやその他のジョブをスケジュールできます。

データベースがExpressエディションの制限に適合する限り、問題ありません。

SQLサーバーは多くのRAMを好みます。より良い。SQL Serverはキャッシュにデータをロードできないため、ディスクに追加の負荷がかかります。SQL ServerのWeb EditionまたはWorkstationエディションをご覧ください。これらのエディションには、Expressエディションよりも高い制限がありますが、Standardエディションよりも低価格です。

Expressエディションから開始する場合は、ライセンスを購入した後、いつでもStandardエディションにアップグレードできます。


+1はその応答に他に何も追加できません
ニックカバディアス2009

ワークグループとWebエディションのライセンスは、外部でホストされるビジネスアプリに使用できるとは思わない。
アカシュカヴァ

1
CPUライセンスはすべてのエディションで使用できます(CPUライセンスを必要としないExpressを除く)。つまり、一般向けWebサイトで使用できます。ここに、ワークグループCPUライセンスbit.ly/KDLDRへのリンクがあります。私はWeb Editionを簡単に見つけることができませんでしたが、どのVARも見回すことなくそれを提供できるはずです。
mrdenny 09

また、Expressを超えるものから始めることをお勧めします。Expressから他のエディションに移行するのは難しい場合があります。
ダンビッグ09

3
SQL Expressは、サイズ制限が設けられているだけで、他のエディションとまったく同じエンジンです。Expressから別のエディションへの移行は、データベースをExpressエディションから切り離し、別のエディションを実行している別のインスタンスに接続するだけです。
mrdenny

15

Expressエディションで発生したいくつかの生産上の問題と回避策:

スケジュールされたバックアップ

SSIS

  • SQL Express 2008にはデータのインポート/エクスポートウィザードがありますが、ExpressエディションのdtsexecランタイムはすべてのSSISパッケージを実行しません
  • 回避策:DeveloperエディションでSSISパッケージを開発できます。ネットワークにStandardエディションが1つある場合は、そこからSSISパッケージをスケジュールして実行できます。ライセンスに反しない限り、開発者版からSSISパッケージを実行することもできます。
  • 参照:
    SQL Server 2008 Express / WebでSSISパッケージを実行できますか、SQL Server 2005 ExpressでWorkgroup SSIS を実行できますか

プロファイリング

  • SQLプロファイラーなし
  • 回避策:SqlProfiler For Express Editionを試してください
  • 警告:sqlexpressがサーバープロセッサの容量を100%使用する場合など、本番の緊急事態を解決するのに常に役立つとは思いません。そのような場合、プロファイラーにトレースを生成させることができませんでした。
  • 参照:SQL Expressで使用するプロファイラー

2
  1. SQL Serverライセンスを読んだ場合、パッシブサーバーがフェールオーバーのみに使用され、最初のサーバーに障害が発生するまでクエリを処理しない場合、パッシブサーバーの追加ライセンスを購入する必要はありません。

  2. SQL Server Expressはかなり長い間使用しており、以前のMSDEよりも優れており、200以上の擬似接続がありますが、サイズが2 GBのデータベースは1つしかなく、すべてがスムーズです。高価な結合を回避し、適切なインデックスを作成すれば、問題はありませんでした。現在、SQL Standardを使用していますが、データベースサイズが4GBを超え、ユーザー数が200〜500未満になるまで、SQL Expressを使用できます。

  3. SQL Server Expressは、おそらく標準版が多くのキャッシングを行うため、標準版が約1.5GBを使用するのに対して、メモリフットプリントは約200MB少なくなります。Expressでは、標準エディションに比べて数ミリ秒でクエリが遅くなります。残念ながら、ExpressエディションはマルチコアCPU(機能が制限されている)を使用しないため、2コアまたは4コアのどちらを使用する場合でも大きな助けにはなりません。


SSE 2008はマルチコア(最大4つ)を使用していると思いましたか?
ビープ音

@LuckyLindy Standardは最大4つのソケットを使用しますが、ソケットごとに多くのコアがあります。
-mrdenny

「ただし、データベースのサイズが4GBを超えるまで」インスタンスあたりの制限は4GBです。使用されるインスタンスの数に制限があることを思い出せません
ジェナディバニンГеннадийВанин10年

2

LuckyLindy-ちょっと待って、SQL Agentが必要ないことを確認することをお勧めします。あなたが書いた:

各クライアントが独自のデータベースを持つデュアルWeb /内部トランザクションアプリケーションを展開しようとしています。各データベースは非常に小さく、それぞれ50 MB未満であるため、完全なSQL ServerではなくSQL Express 2008を使用するのが理にかなっているのではないかと考えていました。

バックアップの計画は何ですか?SQL Agentを使用する必要はありませんが、DBAの作業が楽になります。バックアップを実行するT-SQL / SMO / PowerShell / whateverスクリプトを作成し、スケジュールされたタスクを使用してsqlcmdまたはPowerShellで実行できます。

データベースのメンテナンス計画は何ですか?時間が経つにつれて、これらのデータベースはデフラグされ、一貫性をチェックする必要があります。Standard Editionには、これを簡単にするためのあらゆる種類の機能がありますが、Expressでは、作業を繰り返さなければなりません(スクリプトとスケジュールされたタスクを繰り返します)。

サーバーの問題はどのように通知されますか?エージェントは、ログがいっぱいになったとき、ディスクがいっぱいになったときなどに通知するアラートでここで助けます。


これらは重要なSQL Server DBAタイプのタスクです。社内アプリでExpressを実行することは1つのことですが、クライアント用にこれらをホストしていることを教え始めたら、心配になります:)


このパート2では、これについてのサポートを計画しているクライアントの数を、ローンチ時と1年後の両方で尋ねていますか?「100クライアント」と言うと、100 MBの50MBデータベースはExpressでは十分ではありません-十分なメモリがありません。ヘック-デルタの量によっては、最大15 DBになる可能性がありますが、わかりません。

最大200人の同時ユーザーが存在することは決してなく、ほとんどの操作はトランザクションに依存します(重いRAM / CPUよりも多くの高速ディスクを好むようです)。

INSERTなどのトランザクション操作は引き続きメモリに書き込まれるため、必要なメモリサポートが少なくなるとは思わないでください。実際、実行するINSERTの数によっては、その数のユーザーの場合よりも多くのメモリが必要になる場合があります。人々が実際には使用しない大量のデータをロードしている場合、それでもメモリを占有します。「ユーザーが頻繁にクエリを実行するデータ」と「ユーザーがしばらくクエリを行わないユーザーが読み込んでいるデータ」の間で競合の問題が発生する場合があります。SQLは、人々がより頻繁にメモリ内でより頻繁にクエリを実行するデータを保存することで私たちを保護しますが、それでも競合が発生します。

この時点で、私は笑います。また、Expressの場合、200人の同時ユーザーも私と対立しません。64kが平均接続メモリ要件であるとしましょう。アプリはいくつの接続を確立しますか?接続プーリングを使用しますか?

全体として、あなたの説明を読むことからの私の直感は、「いいえ-Express Editionは十分に強力ではありません」と言います。そして、私はWorkgroup Editionが嫌いです-それは悪いことだと思います-だからStandardは私には正しいようです。


2
スコット-すばらしい答えです。要するに、SQL Server Expressには実際にはデータベース全体のストレージサイズの制限はなく、4GBを超えるデータを持つ単一のデータベースを持つことはできません。テストとして、1台のサーバーで10,000個の100MBデータベース(1TB)を作成しましたが、SQL Server Expressは問題なく実行されました。また、各接続に関連するメモリは合計1GBにはカウントされません。これらすべてのデータベースを管理するのは少し面倒かもしれないことに同意します...しかし、実際には何千ものデータベースがあるので、とにかくスクリプトが必要になるでしょう(データベースに手動で触れたくない場合は手動でやりたくない破損)。
ビープ音

+1、私はそれがgr8の回答であったことに同意しますが、私もそれを支持しました
ジェンナディバニンГеннадийВанин10年

1

無料のDBMS(MySQL、PostreSQL ...)のいずれかを使用することを検討しましたか?それはあなたのライセンスの懸念を軽減しますか?

それが選択肢ではない場合、SQL Server Expressは良い解決策のようです。


2
実際、昨年、MySQL、PostgreSQL、Firebird、DB2、Oracle、SQL Server、SQL Server Express、およびSQL Desktopのすべての主要なデータベースに対してパフォーマンステストを実行しました。DB2、Oracle、およびSQL Server(およびExpress、ただしデスクトップではない)が、トランザクション操作のためにWindows上のMySQLおよびPostgreSQLを吹き飛ばしたことがわかりました。LinuxおよびMySQLでホストされた場合、MySQLとPostgreSQLは少し良くなりましたが、まだ同等ではありませんでした。
ビープ音

1

それは確かに重要な生産アプリケーションに使用できます。1500を超える医療クリニックで使用し、すべてが個別のSQL Server Expressインスタンスをインストールして、毎日何百万ものトランザクションを処理しています。次のいずれかを使用すると、SQL Serverエージェントの欠点を簡単に回避できます。

  1. SQLAutomateなどのサードパーティ製品
  2. Windowsタスクスケジューラ
  3. マスターサーバー機能1および2がインストールされたSQL ServerのStandardまたはEnterprise Editionは、非常に低コストまたは無料です。3は、ご使用の環境で既に使用可能な場合を除き、高価です。

「本番環境でのSQL Server Expressの使用」に関するMichael Oteyの優れたプレゼンテーション(google it)を参照してください。


それは実際に7歳の投稿でした:)
BaronSamedi1958
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.