データベース管理者

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

3
Access(Jet)SQL:TableAの各DateTimeスタンプに隣接するTableBのDateTimeスタンプ
最初の言葉 あなたは安全に(を含む)以下のセクションを無視することができます結合します皮切りあなただけのコードの亀裂を取りたい場合。背景と結果がちょうど文脈としての役割を果たす。最初にコードがどのように表示されたかを確認するには、2015年10月6日より前の編集履歴をご覧ください。 目的 最終的には、表の観測値に直接隣接する表の利用可能なGPSデータのDateTimeスタンプに基づいて、送信機(XまたはXmit)の補間GPS座標を計算SecondTableしますFirstTable。 究極の目標を達成するための私の当面の目標は、これらの側面の時点を得るためにどのように参加FirstTableするのSecondTableが最善かを見つけることです。後で、その情報を使用して、正距円筒座標系に沿った線形近似を仮定して中間GPS座標を計算できます(このスケールでは、地球が球体であることを気にしないと言った派手な言葉)。 ご質問 最も近い前後のタイムスタンプを生成するより効率的な方法はありますか? 「after」を取得し、「after」に関連する場合にのみ「before」を取得することで、自分で修正しました。 (A<>B OR A=B)構造を含まない、より直感的な方法はありますか。 Byrdzeyeは基本的な選択肢を提供しましたが、私の「実世界」の経験は、同じことを実行する彼の4つの結合戦略すべてとは一致しませんでした。しかし、代替結合スタイルに対処したことに対する彼の完全な信用。 あなたが持つかもしれない他の考え、トリックやアドバイス。 両方Thusfar byrdzeyeとPhrancisはこの点で非常に役立っています。私は、ことがわかっPhrancis'アドバイスが、私はここに彼に端をあげるので良好、レイアウトおよび重要な段階での支援を提供しました。 質問3に関して私が受けることができる追加の助けをまだ感謝しています。 箇条書きは、個々の質問で私を最も助けたと思う人を反映しています。 テーブル定義 半視覚的表現 FirstTable Fields RecTStamp | DateTime --can contain milliseconds via VBA code (see Ref 1) ReceivID | LONG XmitID | TEXT(25) Keys and Indices PK_DT | Primary, Unique, No Null, Compound XmitID …

3
テーブルが主キーをそれ自体の外部キーとして使用する理由
データベースを調べてみると、主キーをそれ自体の外部キーとして使用するテーブルに出会いました。 テーブルは、階層構造を構築するためにそれ自体への外部キーを持つことができますが、主キーを参照するために別の列を使用します。 主キーは一意であるため、この状況では行は自分自身を指すことしかできませんか?これはトートロジーのリンクのようです。なぜなら、もし私が列をすでに持っているなら、列をすでに持っているからです。 これが行われる理由はありますか? 定義の両方の半分に同じテーブルと列が使用されているため、制約はそのように書かれています(ダイアグラムを見るだけではありません)。

2
キューブのメジャーとディメンションとは
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 6年前に移行され ました。 私は、Microsoft SQL Serverのビジネスインテリジェンスへの非常に新しいだとAnalysis Service(私はSQL Serverとの年のためのプログラミングてる).Canいずれかでキューブにメジャーとディメンションを記述する簡単な言葉(それはイメージで可能なら)? ありがとう

2
SQL ServerでLRU-K値を表示することはできますか?
SQL Server sys.dm_os_memory_cache_entriesでは、キャッシュ内のエントリの元のコストとキャッシュエントリの現在のコスト(original_costおよびcurrent_costそれぞれ)の両方を表示できます。DMVにsys.dm_os_buffer_descriptorsは、現在メモリ内にあるページのレコードと、ページに関するメタデータが含まれています。DVMで利用できない興味深い情報の1つは、データページのLRU-K値です。 SQL ServerのバッファプールのデータページのLRU-K値を取得することは可能ですか?もしそうなら、どのように?
21 sql-server 

6
SQL Serverでは、選択した行グループがロックされているかどうかを確認する方法はありますか?
数十億行のテーブルの多数のレコードを更新/削除しようとしています。これは一般的なテーブルであるため、このテーブルのさまざまなセクションで多くのアクティビティがあります。すべての行のロックまたはページロックまたはテーブルロックの取得を待機しているため、大規模な更新/削除アクティビティが長時間ブロックされているため、タイムアウトになるか、タスクの完了に数日かかります。 そのため、一度に行の小さなバッチを削除するアプローチを変更しています。しかし、選択された(たとえば、100または1000または2000行)が現在別のプロセスによってロックされているかどうかを確認します。 そうでない場合は、削除/更新に進みます。 ロックされている場合は、次のグループのレコードに進みます。 最後に、最初に戻って、残ったものを更新/削除してみてください。 これは実行可能ですか? ありがとう、ToC

8
教授は、リレーショナルテーブルを定義する代わりに、シリアル化されたJavaオブジェクトをblobとして保存するように指示しました
私の教授は、正しい属性でテーブルを実際に定義する代わりに、次のようにオブジェクトをIDにマップできると言っています。 id (int) | Serialized Object (blob) 1 10010110110 これには多くの問題があります。データの冗長性、IDを個別に追跡する必要があり、テーブル全体をメモリにプルして何かを検索する必要があり、** Javaコードでモデルを変更したい場合は、そのモデルにデータベース。 私はそのモデルに永遠にこだわっているか、モデルを変更するために他の本当にいことをしなければなりません。私は教授に反対することを正当化しますか?私が考えていないことをこれを行うにはいくつかの利点がありますか?私が正しいなら、これについて私の教授に何か言うべきですか?彼はこれを私のクラス全体に説教し、プロジェクトをそのように構築したとさえ言っていました。セカンドオピニオンは素晴らしいでしょう。 コースの名前はSoftware Designです。 私の教授は、これが最良の方法であるとは言いませんでしたが、リレーショナルテーブルを定義するための正当な代替手段であると言いました。 モデルは決して動的ではありません。

2
エラーで接続プールがリセットされます:18056、重大度:20、状態:46。Perfmonカウンターが表示されない
SQL認証(接続プールの数を減らすため)と.NET 4.0接続文字列を使用して、Windows 2008 R2 Enterprise Server上のSQL Server Enterprise Edition 2012 SP1に接続しています。 Microsoft SQL Server 2012(SP1)-11.0.3000.0(X64) 2012年10月19日13:38:57 Copyright(c)Microsoft Corporation Enterprise Edition(64ビット)on Windows NT 6.1(Build 7601:Service Pack 1) Webサイトの異なる部分にある8つの異なるグループに分割された約50台のサーバーを使用します。 当社のWebサイトでは、このSQL Serverを使用して訪問追跡データを記録しています。過去数日間にわたって、接続プールのリセットに関する次のメッセージが吐き出されました。 クライアントは、接続プーリング用にリセットされたSPID 1327のセッションを再利用できませんでした。失敗IDは46です。このエラーは、以前の操作が失敗したことが原因である可能性があります。このエラーメッセージの直前に、失敗した操作のエラーログを確認します。 エラーログの読み取り: エラー:18056、重大度:20、状態:46 。クライアントは、接続プーリング用にリセットされたSPID 959のセッションを再利用できませんでした。失敗IDは46です。このエラーは、以前の操作が失敗したことが原因である可能性があります。このエラーメッセージの直前に、失敗した操作のエラーログを確認します。 ユーザー 'xxxx'のログインに失敗しました。理由:接続でのログインの再検証中に、ログインオブジェクトで構成されたデータベース 'xxxxxxxx'を開くことができませんでした。[クライアント:10.xx.xx.xxx] :いくつかの掘削後、私はCSSのブログにこの文書を発見したエラー18056 -クライアントが接続プーリングのためにリセットされたSPIDとのセッション##、再利用することができませんでした:それはしくみとアーロン・ベルトランこの1:トラブルシューティングエラー18456を。私はエラー番号が異なることを知っていますが、障害IDは同じであり、メッセージの数は同じです)。 失敗ID 46は、ログインに権限がなかったことを示しています。ログインはデフォルトでmasterデータベースになり、db名は接続文字列で指定されます。 接続文字列プールなどの数を確認したいと思い、Perfmonのすべてのカウンターを確認しました.Net Data Provider for SqlServer。defaultdomain9675インスタンスのオプションしか提供されなかったため、Datacentreネットワークのシステム生成ID名を想定しています。残念ながら、すべてのカウンターはゼロを読み取っています。他のメインサーバーの1つでは、接続プールは約10をホバリングしています。 私の質問は3倍です Windows 2008 …

1
データベースで最近実行されたすべてのクエリを見つける
[私は初心者レベルのT-SQLプログラマーです] [..できれば、適切なスタック交換サイトにいます] 私が実行したすべてのクエリのリストを取得したいと思います(少なくとも、朝から今日実行したクエリ)。クエリの実行時間に関するレポートを作成する必要があります。 オンライン検索で役に立つ情報はあまり得られませんでした。私がオンラインで見つけた非常に近いと思われるクエリは SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query] FROM sys.dm_exec_query_stats AS deqs CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest ORDER BY deqs.last_execution_time DESC このクエリはいくつかの奇妙な結果を返しました(そのほとんどは多数のsprocでした)。さらに、これらの結果はすべて、今日の午後から実行されたクエリを示しています(午前中にクエリが必要です)。 以前の質問には何も見つかりませんでした(同様の質問が既に質問されている場合は、それを指摘してください)。 SQLプロファイラーに関するいくつかの提案を見ましたが、プロファイラーは既にトレースを開始している場合にのみ役立つと思います(間違っている場合は修正してください)。 誰かが私に朝からデータベースで実行されたすべてのクエリのリストを取得する方法を提案できますか(クエリ実行時間を含む)。 [クエリを実行したユーザーのユーザー名も何らかの方法で取得できると便利です(要件ではありません)]

3
ホットスタンバイサーバーでpg_dumpを実行していますか?
免責事項:私は確かにこれをまだ試していませんが、それが正しく動作していなかったかどうかわからないので、尋ねたいと思いました。 pg_dumpallプライマリに負荷をかけないように、ストリーミングレプリケーションを実行しているホットスタンバイサーバーから(経由で)夜間バックアップジョブを実行したいと思います。ここやここなどで人々が遭遇したいくつかの落とし穴について言及しているだけですが、ガイダンスはほとんどありません。バックアップが一貫している限り(それがあるはずです)、バックアップがプライマリよりわずかに遅れていても問題ありません。 私の質問は: 本当にこれを実行したいのですか、またはプライマリサーバーでバックアップを実行する必要がありますか?どうして? スタンバイでダンプを行うとき、どの設定が必要ですか、それを正しく行うために手順を使用する必要がありますか?たとえば、バックアップ中はレプリケーションを停止する必要がありますか?

3
2008サーバーでSQL Server Management Studio 2012を使用できますか?
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 私の学校はSQL Server 2008を使用しています。前回使用したときは、(自宅で)SQL Server Management Studio 2008の一部のみをインストールし、VPNを使用して学校のサーバーに接続しました。 SQL Server Management Studioを再度インストールしたいのですが、今回は2012バージョンが利用可能です。 SQL Server Management Studio 2012は、学校のSQL Server 2008で動作しますか?または、2008バージョンが必要ですか?
21 sql-server  ssms 

3
行を複数の列にピボットする
Oracleサーバーへのリンクサーバーを持つSQL Serverインスタンスがあります。PersonOptions次のデータを含む、呼び出されたOracleサーバー上のテーブルがあります。 ╔══════════╦══════════╗ ║ PersonID ║ OptionID ║ ╠══════════╬══════════╣ ║ 1 ║ A ║ ║ 1 ║ B ║ ║ 2 ║ C ║ ║ 3 ║ B ║ ║ 4 ║ A ║ ║ 4 ║ C ║ ╚══════════╩══════════╝ 結果が次のようになるように、そのデータをピボットする必要があります。 ╔══════════╦═════════╦══════════╦══════════╗ ║ PersonID ║ OptionA ║ Option B ║ …

2
別のSELECTのWHERE句でSELECTを使用する
私はのためのlibpqの上にドラフトリモートアプリケーション作ったPostrgreSQLを。うまく動作しますが、アプリケーションの一般的な機能をプロファイルしました。私が作成する最終的なビジネス結果ごとに、40のselect句(tcpip経由)などを呼び出すことがあります。 リモートアプリケーションとデータベースの間のやり取りの数を最小限に抑えることを思い出させるSQL-Serverの思い出があります。選択を分析した結果、SELECT結合を使用してこの数を3つの節に減らすことができると思います。しかしSELECT、別のの結果を使用するための構文を覚えていませんSELECT。 例えば: SELECT * FROM individual INNER JOIN publisher ON individual.individual_id = publisher.individual_id WHERE individual.individual_id = 'here I would like to use the results of a another select' これSELECTは単純に他の種類です: SELECT identifier FROM another_table WHERE something='something' 以下は、さまざまなitem_typesに対して何度も拒否された単純化されたテーブルレイアウトです...(3つのまったく異なるタイプ、したがって最適化された場合は3つのSQLクエリ)。 table passage id_passage PK business_field_passage bytea table item id_item PK id_passage FK business_field_item …

3
親子ツリー階層順序
SQL Server 2008 R2のデータをフォローする必要があります。SQLFiddle スキーマ: CREATE TABLE [dbo]。[ICFilters]( [ICFilterID] [int] IDENTITY(1,1)NOT NULL、 [ParentID] [int] NOT NULL DEFAULT 0、 [FilterDesc] [varchar](50)NOT NULL、 [アクティブ] [tinyint] NOT NULL DEFAULT 1、 CONSTRAINT [PK_ICFilters] PRIMARY KEY CLUSTERED ([ICFilterID] ASC)WITH PAD_INDEX = OFF、 STATISTICS_NORECOMPUTE = OFF、 IGNORE_DUP_KEY = OFF、 ALLOW_ROW_LOCKS = ON、 ALLOW_PAGE_LOCKS = ON )ON …

1
SQL Server-誰でもSUMA、トレースフラグ8048、またはトレースフラグ8015を使用していますか?
最近、SQL Serverスタートアップトレースフラグ8048が含まれ、SQL Server 2008 R2システムでの重大なスピンロック競合の問題が解決されました。 パフォーマンス値がトレースフラグ8048(NUMAノードごとからコアごとにクエリメモリ付与戦略を促進する)、トレースフラグ8015(SQL Serverは物理NUMAを無視する)、またはSUMA(インターリーブされた十分に均一なメモリアクセス、一部のNUMAマシンのBIOSオプション)。 トレースフラグ8048 http://blogs.msdn.com/b/psssql/archive/2011/09/01/sql-server-2008-2008-r2-on-newer-machines-with-more-than-8-cpus -numa-node-may-need-trace-flag-8048.aspxごとに表示 トレースフラグ8015 http://blogs.msdn.com/b/psssql/archive/2010/04/02/how-it-works-soft-numa-io-completion-thread-lazy-writer-workers-and-memory -nodes.aspx システムのワークロードの詳細、問題のあるシステムからのメトリックの収集、介入後のシステムからのメトリックの収集。 トレースフラグ8048は「修正」でしたが、それが最良の修正でしたか?SQL Serverは、トレースフラグ8015により物理NUMAを無視しても同じことを達成できますか?メモリをインターリーブするようにBIOSを設定して、NUMA動作ではなくSMP動作のSUMA動作をサーバーに残してはどうですか? 平和!tw:@sql_handle システムについて:-4 hexコアXeon E7540 @ 2.00GHz、ハイパースレッド-128 GB RAM-WS2008R2-MSSQL 2008 R2 SP2-maxdop 6 ワークロードについて:-2つのレポートアプリケーションサーバーから駆動される1000のバッチスケジュール/キューレポート。-3種類のバッチ:毎日、毎週、毎月-SQL Serverへのすべてのレポートアプリケーションサーバー接続は、単一のサービスアカウントとして作成されます-最大レポート同時実行数= 90 問題のあるシステムに関する主な調査結果:-Perfmonから、15秒間隔--システムは95%〜100%のCPU使用率のまま--SQL Serverのバッファーページ検索<10000 /秒 待機およびスピンロックDMVから、5分間隔 高いCMEMTHREADウェイターと待機時間 高いSOS_SUSPEND_QUEUEスピンとバックオフ Bob Dorrのトレースフラグ8048に関するCSSエンジニアブログの投稿は、NUMAノードごとに8コアを超えるシステムがクエリメモリ許可のボトルネックにより同様の症状に陥ることがあることを示しています。トレースフラグ8048は、戦略をNUMAノードごとではなくコアごとに変更します。 介入 -T8048を設定してMSSQLを再起動しました。違いはすぐに明らかになりました。バッファページの検索速度は100万を超え、1秒あたり800万に急上昇しました。以前は24時間で完了できなかった問題のあるバッチワークロードが、4時間未満で完了しました。トレースフラグ8048の修正値の検証の一部として、調査や介入の焦点では​​ない別のバッチワークロードが提出されました(そして、その望ましくない副作用が最小限であることを確認しました)。このレポートバッチは、以前2時間で完了しました。トレースフラグ8048を設定すると、レポートバッチは約20分で完了しました。 ナイトリーETLにもメリットがありました。ETL時間は約60分から40分に短縮されました。 いくつかの場所から情報を集めて、高度なレポートキューイング、ハードウェアスレッドカウントを超える同時レポートカウント、および結合されたすべてのレポートの単一ユーザーアカウントが、ワーカースレッドのプレッシャーによって1つのNUMAノードにプレッシャーをかけると推測します同じユーザーアカウントの次の着信接続要求に対して不利になります。この時点で、次のNUMAノードはほぼ瞬時にいくつかの接続を取得します。各NUMAノードは、クエリメモリ許可のボトルネックを強調する可能性が高くなります。 クエリメモリ許可のためにさらにレーンを開くと、ボトルネックが解消されました。しかし、費用はわかりません。Bob DorrのCSS投稿により、トレースフラグ8048で追加のメモリオーバーヘッドがあることが明らかになりました。単一ページアロケータ領域内のオーバーヘッドは、MSSQL 2008 R2の最大サーバーメモリによって管理されていますか?もしそうなら、システムはバッファプールキャッシュにあるデータベースページの数が少ないと思います。そうでない場合、最大サーバーメモリを下げる必要がありますか?

1
Amazon RDS MySQLインスタンスで高いCPU使用率をデバッグするのに苦労しています
m1.xlarge MySQL RDSサーバーを実行しており、CPU使用率が高いという問題があります。数週間前に、大きなインスタンスでCPU使用率が100%に達するという問題がありました。サイズをxlargeにアップグレードすると、しばらくの間物事は安定しましたが、CPU使用率は徐々に再び上昇しました。 先週かそこらで、CPU使用率は90年代後半で、昨日は一貫して100%前後に達していました。これにより、本番サイトは停止しました。dbサーバーを再起動すると、数時間以内にCPU使用率が同じレベルに戻りました。 mysqlサーバーでshow processlistを実行し、MySQL adminを介して同じを監視しています。特に長時間実行されるクエリや大量のクエリも存在しないようです。長い間スリープ状態になっているプロセスがいくつかあります。これらは、データベースと通信するメインアプリの外部で実行されている分離されたワーカーデーモンです。サーバー名を変更して、それらが何であるかを説明する以下のprocesslist出力にコピーしました。 +------+----------+---------------------------------------------------+--------------+---------+-------+--------------+----------------------------------------------------------------------------------------+ | Id | User | Host | db | Command | Time | State | Info | +------+----------+---------------------------------------------------+--------------+---------+-------+--------------+----------------------------------------------------------------------------------------+ | 13 | rdsadmin | localhost:43513 | mysql | Sleep | 14 | | NULL | | 15 | proddbuser | app-server-1.eu-west-1.compute.internal:36460 | proddb …
21 mysql 

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