データベース管理者

データベースのスキルを向上させ、コミュニティの他の人から学びたいデータベースの専門家向けのQ&A


2
SQL Serverは、テーブルの選択中にロックを取得する順序をどのように決定しますか?
システムに負荷がかかっているときにデッドロックする2つのストアドプロシージャがあります。プロシージャBが同じテーブルに挿入している間に、プロシージャAはテーブルから選択しています。ロックグラフは、Proc AがProc BがIXモードロックを必要とするSモードページロックを持っていることを示していますが、Proc Aは、Proc BがすでにIXモードページロックを持っている別のページのSモードページロックを待機しています。 明らかに、両方のクエリがテーブル内のページを同じ順序でロックすることを確実にすることによってこれを整理することができますが、その方法を理解できません。 私の質問は、SQL ServerはどのようにINSERTとSELECTを実行しているときにページをロックする順序を決定し、この動作をどのように変更できるかを教えてください。

5
ER図の重要性
私は学生で、学界の一部としていくつかのプロジェクトを開発しています。 あるプロジェクトのデータベースを開発しているときに、ERDが必要かどうかを考えている状況に遭遇しました。現在、私たち全員が最初にERDを開発し、次にそれからデータベースを開発することに同意しているわけではありません。 大多数の人は、紙で直接要求されるシステムに従って口頭でデータベースをオンザフライで開発することを好みます。 現在、私はデータベースの原則を厳守しています。データベースはERDのみから開発する必要があると思います。だから、私は次のことを知りたいだけです: 業界はこれらの原則に従っていますか? ERDの開発に時間を浪費しているだけですか? ERDを開発する利点は何ですか?

2
IsolationLevel.ReadUncommittedで発行された共有ロック
IsolationLevel.ReadUncommittedを使用すると、クエリでロックが発行されないはずです。しかし、これをテストすると、次のロックが表示されました。 Resource_Type:HOBT Request_Mode:S(共有) HOBTロックとは何ですか?HBT(ヒープまたはバイナリツリーロック)に関連する何か? なぜまだSロックを取得するのですか? 分離レベルのスナップショットオプションをオンにせずにクエリを実行するときに、共有ロックを回避するにはどうすればよいですか? SQLServer 2008でこれをテストしていますが、スナップショットオプションはオフに設定されています。クエリは選択のみを実行します。 SQL Serverがロッククエリでそれを表示していないようですが、Sch-Sが必要であることがわかります。それでも共有ロックが発行されるのはなぜですか?による: トランザクション分離レベルの設定(Transact-SQL) READ UNCOMMITTEDレベルで実行中のトランザクションは、他のトランザクションが現在のトランザクションによって読み取られたデータを変更するのを防ぐために、共有ロックを発行しません。 だから私は少し混乱しています。

1
ストアドプロシージャごとのタイムスパンごとの呼び出し数を監視するにはどうすればよいですか?
パフォーマンスの問題を診断するために、システムパフォーマンスと比較して、特定のプロシージャが呼び出される回数をよりよく理解したいと思います。特定の期間中に各プロシージャが呼び出された回数を取得する方法はありますか?

3
Datawarehouse Design:結合された日付時間ディメンションと、個別の日付および時間ディメンションとタイムゾーン
新しいデータウェアハウスの設計を開始したばかりで、日付と時刻のディメンションがどのように機能するかを設計しようとしています。複数のタイムゾーン(おそらく少なくともGMT、IST、PST、EST)をサポートできる必要があります。最初は、おそらく15分の粒度まで1つの広い日付時刻ディメンションを組み合わせると考えていました。これにより、ファクトテーブルに1つのキーがあり、サポートされるすべてのタイムゾーンのすべての異なる日付時刻データが1つのディメンションテーブルに含まれます。(つまり、日付キー、GMT日付、GMT時間、IST日付、IST時間など...) キンボールは、テーブルが大きくなりすぎないように(データウェアハウスツールキットp。240)、時間ディメンションとは別の日ディメンションを使用することを推奨していますが、これは、各タイムゾーンのファクトテーブルに2つのキーがあることを意味します。サポートする必要があります(1つは日付用、もう1つは時刻用)。 私はこの領域で非常に経験が浅いので、誰かが2つのアプローチ間のトレードオフ、つまりパフォーマンスとすべての異なるタイムゾーンキーの管理のトレードオフを知っていることを望んでいます。おそらく他のアプローチもあるかもしれませんが、ファクトテーブルにタイムゾーンごとに別の行があることを話している人を見たことがありますが、ファクトテーブルが数百万の行である場合、タイムゾーンを追加するためにそれを4倍にする必要があるという問題のようです。 15分の粒度を使用すると、日付時刻ディメンションテーブルに1年あたり131,400(24 * 15 * 365)行が含まれます。これは、パフォーマンスにとってそれほどひどく聞こえませんが、いくつかをテストするまで確実にはわかりません。プロトタイプクエリ。ファクトテーブルに個別のタイムゾーンキーがあることの他の問題は、クエリが目的のタイムゾーンに基づいてディメンションテーブルを別の列に結合する必要があることです。これはおそらくSSASが処理しますが、よくわかりません。 どんな考えにも感謝します、-Matt

3
2つ以上の列の条件付き順序を作成する方法
MS SQL Server 2005では、条件付き並べ替えを使用して1つのクエリを作成していますが、2つの列を使用して条件付き並べ替えを行う方法がわかりません。 私がこのようなコードを書いた場合、それは正常に動作しています select * from table order by case @pkr when 'kol' then kol when 'nci' then nci end 2つ以上の列の条件付き順序を作成する方法がわかりません select * from table order by case @pkr when 'KOL-NCI' then kol,nci when 'kol-MPCI' then kol,mpci end 動的TSQLを作成して使用するアイデアがありますが、sp_executesqlまだより良いアイデアを探していますか?

3
SQLサーバーのストレステストを行う方法 [閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、データベース管理者のスタック交換のトピックになるようにします。 3年前休業。 私は、MSSQLサーバーとMySQLサーバーのストレステストを担当しています。現在のシステムと新しいシステムでパフォーマンスを比較するために使用できるツールやスクリプトがあるかどうか知りたいのですが。 ディスクとプロセッサの読み取り/書き込みパフォーマンスを測定したいと思います。役に立つかもしれない何か他のものも素晴らしいでしょう。 ありがとう!

1
SSRSで使用されているデータソースを確認するにはどうすればよいですか?
一連のSSRS(2008)レポートがWebポータルに展開されています。一部のレポートを編集して、最初にデプロイされたときとは異なる共有データソースを使用しました。 ReportServerデータベースにクエリを実行して、どのレポートがこれらの共有データソースのどれを使用しているかを表示する方法を探しています。Catalog.Contentに保存されているXMLデータを使用して、どのデータソースが使用されているかを確認できることがわかりましたが、これは、レポートが最初に展開されたデータソースに表示されます。
10 sql-server  ssrs 

2
SSISスクリプトコンポーネント-Output0Bufferを変更する方法
SQL Azureデータベーステーブルからのレコードを受け入れるスクリプトコンポーネントがあります。次にスクリプトはWebサービスを呼び出し、Webサービスは失敗したレコードと成功したレコードの数を返します。 すべてのレコードについて、「成功」または「失敗」のいずれかを含むステータスフィールドを追加します。これにより、スクリプトコンポーネントから出力が取得されます。 次に、それらの出力をテキストファイルに記録します。 問題:Webサービスの呼び出しは実行後のみに発生するため、各入力レコードのステータスを追加できません。 私はこれを試しましたが、それでもうまくいきません: public override void Input0_ProcessInputRow(Input0Buffer Row) { listOfData.Add(new ClockData { TimeClockID=Row.TimeClockID, PersonID=Row.EmployeeCode, LocationCode=Row.ClockInServiceContextID, ClockInDateTime=Row.ClockInDateTime, ClockOutDateTime=Row.ClockOutDateTime }); } public override void CreateNewOutputRows() { MessageBox.Show("Test CreateNewOutputRows"); MessageBox.Show(listOfData.Count.ToString()); foreach (var item in listOfData) { Output0Buffer.AddRow(); Output0Buffer.EmployeeCode = item.PersonID; MessageBox.Show(item.PersonID); } }
10 sql-server  ssis 

2
ディストリビューターのミラーリング
ディストリビューションデータベースのミラーリングに成功した人はいますか?ディストリビューターとして専用サーバーがあります。製品からレポートまでのすべてのプッシュレプリケーションを処理します。ディストリビューターがクラッシュした場合に備えて、すぐに同じサーバーを構築したいと考えています。誰かがこのようなものを構築することに成功しましたか?

2
行レベルとページレベルのロックの違いと結果
メンテナンスプランを実行しようとすると、次のエラーが表示されます。 クエリ ""の実行が次のエラーで失敗しました: "ページレベルロックが無効になっているため、テーブル" "のインデックス" "(パーティション1)を再編成できません。" 現在、このインデックスで行レベルのロックが有効になっています。ページレベルのロックを有効にすることはできますが、どのような影響があるのか​​わかりません。 私の質問は次のとおりです。2つのロックスキームの違いは何ですか、そして実際の(運用中の)結果は何ですか?

2
PostgreSQL:テーブルへの最終アクセス時刻
私は、数十のテーブルを持つ大規模なPostgreSQLデータベースを担当しています。これらのテーブルの多くは決してアクセスされないと思います。 特定のテーブルに最後にアクセスしたのがいつかを確認する最良の方法は何ですか?私は上のトリガーを追加することを考えDELETE、INSERTそしてUPDATE、私は、より効率的な方法があると思います。
10 postgresql 

6
SQL DBをより頻繁にバックアップする
私は現在、SQLCMD.exeを呼び出して.sqlスクリプトを渡し、バックアップのために実行する(以下に示す)午前2時に毎晩起動するスケジュールされたタスクを持っています。私たちは、ビジネス面での大きな成長によりニーズが高まっているかなり小さな会社です。この時点で1日分のデータを失うと、数万ドルの費用がかかりますが、昨年は数百ドルかかります。このDBプラットフォームを、SQL Azureのような主要な冗長性でデータミラーリングが発生する別のソリューションに移行できるまで、より頻繁なバックアップを取得するために私ができる最善のことは何ですか?以下のこのスクリプトは、DBを強制的にオフラインにしますか?このスクリプトを、DBを操作するユーザーと一緒に実行できますか? USE CompanyCRM; GO BACKUP DATABASE CompanyCRM TO DISK = 'D:\CRMBackups\CompanyCRMCRM.Bak' WITH FORMAT, MEDIANAME = 'CompanyCRM_Backup', NAME = 'Full Backup of CompanyCRM'; GO 更新 うわー、明らかにここではSOよりもはるかに専用のDBAコミュニティ。これまでのフィードバックに感謝します。不足しているのは「ハウ」だけです。上記のSQLコマンドで毎日のバックアップに使用しているものを示しましたが、増分ログバックアップの例はMIAです。これは大きなDBではなく、現在SQLExpressで実行されています。私がHAまたはSQL Azureと言うとき、私は特に、中小企業として持っていない適切なアーキテクチャについて言及しています。このインスタンスは現在、唯一のサーバーで実行されています。そのサーバーがクラッシュした場合、回復するまでの時間が問題になります。SQL Azureが魅力的なのはこのためです。

4
広範なPKを使用する場合と、個別の合成キーおよびUQを使用する場合のパフォーマンスに関する考慮事項は何ですか?
レコードがいくつかの広範なビジネス分野で一意に識別できるいくつかのテーブルがあります。過去に、これらのフィールドをPKとして使用しましたが、これらの利点を考慮しています。 シンプルさ。無関係なフィールドはなく、インデックスは1つだけです クラスタリングにより、高速マージ結合と範囲ベースのフィルターが可能になります ただし、合成IDENTITY INTPK を作成し、代わりに別のUNIQUE制約を使用してビジネスキーを強制するケースについて聞いたことがあります。利点は、PKが狭いため、セカンダリインデックスがはるかに小さくなることです。 テーブルにPK以外のインデックスがない場合、2番目のアプローチを採用する理由はありませんが、大きなテーブルでは、インデックスが将来必要になる可能性があると想定して、狭い合成PKを採用することをお勧めします。 。考慮事項が不足していますか? ちなみに、私はデータウェアハウスで合成キーを使用することに反対しているのではなく、単一の広いPKを使用する場合と、狭いPKと広いUKを使用する場合にのみ関心があります。

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