2

mysqlまたはmssqlベースの本番データベースにスキーマを変更しなければならない場合があります。私はこれが通常どんな試練であるかに驚かされます。技術者は、それぞれのプラットフォーム(SQL Server Management Studioなど)のブラウザーを使用して変更を加えますが、このプロセスにはいくつかの問題があります。

  1. データベースを変更するたびにかなりの時間がかかり、技術者が不幸になり、データベースのダウンタイムが長くなります。
  2. 技術者は、変更を行う際にデータベースエンジンによって行われている進捗状況を知りません。問題が発生するのは、技術者がプロセスの途中で、変更を試みたときに何らかの障害が発生したのか、それともこの変更の実行に時間がかかるのかを知らないためです。

これを行うためのより良い方法はありますか?コマンドラインスクリプトを介したテーブルの変更はベストプラクティスと見なされますか?スキーマ変更の実行時に進行状況を監視する方法はありますか?

ありがとうございました、

エリオット

4

2 に答える 2

1

エリオット、あなたのコメントから、データベースに変更を加えるためにサポート開発者ではなくカスタマーサポートを使用しているようです。私が間違っている場合は私を訂正してください。Support Developerを使用している場合は、スクリプトを実行して変更を行う必要があります。これが常に最善の方法です。そして、あなたの質問を読むと、あなたのDBには膨大な数のレコードがあるように見えます。スクリプトを取得するには、MicrosoftVisualStudioDBエディションを使用できます。DBソースプロジェクトとそれをデプロイするDBを比較します。その後、作成したスクリプトを確認してサーバー上で実行できます。

私が言ったように長い時間がかかる変更の問題については、データの量とあなたが行っているスキーマの変更に依存します。長時間のダウンタイムを防ぐには、顧客への影響が最も少ない時間を見つけて、その間に実行する必要があります。24時間年中無休のシステムの場合、ダウンタイムをスケジュールする必要があります。また、あなたの変化のパターンを研究してみてください。ダウンタイムを減らすために、すべての変更を単一のリリースにグループ化できる可能性はありますか。また、DBの変更が非常に多い理由を確認してください。変更を軽減するために、設計で実行できることがあります。例:スキーマを変更するたびに再構築されるインデックスが存在する可能性があります。スキーマの変更中にインデックスを無効にできる可能性があります。スキーマの変更を完了してから、dbジョブを使用してインデックスの再構築をスケジュールします

スキーマの変更を監視することについてのあなたの質問では、これほど多くのことが完了したことを示す視覚的な指標はないと思います。コマンドが終了するのを待つだけです。

于 2012-05-12T07:07:25.203 に答える
1

実際には、スキーマを変更して、データベースを本番環境でオンラインに保つことができます。1.テーブルを変更して新しい列を追加し、デフォルト値をnullに設定します2. SPを作成して、10Kなどの小さなチャンクデータの値を更新します3.正しいデフォルト値でテーブルを変更します

于 2014-08-17T16:33:31.440 に答える