データベース管理者

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

1
再帰的なSQLクエリのパフォーマンスの問題[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、データベース管理者のスタック交換のトピックになるようにします。 4年前休業。 私がこの質問をするのはこれで6回目ですが、これも最短の質問です。これまでのすべての試みは、質問自体ではなくブログ投稿に類似したものでしたが、私の問題が本当であることを保証します。それは、1つの大きな主題に関するものであり、この質問に含まれるすべての詳細なしでは、私の問題が何であるか明確ではありません。だからここに行く... 概要 私はデータベースを持っています。これは、データをちょっと豪華な方法で格納することを可能にし、私のビジネスプロセスに必要ないくつかの非標準機能を提供します。機能は次のとおりです。 挿入のみのアプローチを介して実装された非破壊的で非ブロック的な更新/削除により、データの回復と自動ロギングが可能になります(各変更は、その変更を行ったユーザーに関連付けられます) マルチバージョンデータ(同じデータの複数のバージョンが存在する場合があります) データベースレベルの権限 ACID仕様およびトランザクションセーフな作成/更新/削除との最終的な整合性 データの現在のビューを任意の時点まで巻き戻しまたは早送りする機能。 私が言及し忘れていた他の機能があるかもしれません。 データベースの構造 すべてのユーザーデータはItems、JSONエンコードされた文字列(ntext)としてテーブルに保存されます。すべてのデータベース操作は2つのストアドプロシージャGetLatestを介して行われInsertSnashot、GITがソースファイルを操作する方法と同様にデータを操作できます。 結果のデータは、フロントエンドで完全にリンクされたグラフにリンク(結合)されるため、ほとんどの場合、データベースクエリを実行する必要はありません。 データをJsonエンコード形式で保存する代わりに、通常のSQL列に保存することもできます。ただし、全体的な複雑性の負担が増大します。 データの読み取り GetLatest命令形式のデータを使用した結果については、説明のために次の図を検討してください。 この図は、単一のレコードに対して行われた変更の進化を示しています。図の矢印は、編集が行われたベースのバージョンを示しています(ユーザーがオンラインユーザーによって行われた更新と並行して、一部のデータをオフラインで更新していると想像してください。 1つではなく)。 したがって、GetLatest次の入力タイムスパン内で呼び出すと、次のレコードバージョンが生成されます。 GetLatest 0, 15 => 1 <= The data is created upon it's first occurance GetLatest 0, 25 => 2 <= Inserting another version on top of first one …

2
列ストアインデックスのID列
非常に大きなテーブルIMO(約1億3700万行)があり、繰り返しデータやNULL列がたくさんあります。 を含むテーブルを使用してこれを検討することを検討しCOLUMNSTORE INDEXていIDENTITYます。元のテーブルに列があります。これは、すべての行が一意である唯一の列です。 この列を省略するか、含める必要がありますか?テーブルのすべての行をに含めたいとCOLUMNSTORE INDEX読んだことがありますが、最適な候補は、一意でない行がたくさんある列であることも読みました。 これは単に悪い候補COLUMNSTORE INDEXですか? SQL Server 2012を使用しているため、非クラスター化列ストアです。私はこのデータを格納するための可能なより良い方法を探っているところです。更新は存在しませんが、ELTプロセスによって新しい行が定期的に追加されるため、そこで作業が行われると想定しています。一部の人々はこのデータをマイニングして膨大なレポートを生成し、多くの行をスキャンして、サーバーをクロールさせて、コピーを毎日セカンダリサーバーにオフロードすることを余儀なくさせています。

1
DMV sys.dm_os_performance_countersをクエリするとゼロ行が返される
サーバービューの状態のアクセス許可をSQL Server 2014 Standard Edition (RTM)持つSYSADMIN役割を持つユーザーがいますが、DMVを実行しsys.dm_os_performance_countersてもレコードが返されません。 権限の何が問題になっているのでしょうか? @@ Versionの出力: Microsoft SQL Server 2014-12.0.2000.8(X64)Feb 20 2014 20:04:26 Copyright(c)Microsoft Corporation Standard Edition(64-bit)on Windows NT 6.3(Build 9600:)(Hypervisor)

1
ストアドプロシージャの結果をSSIS変数に割り当てる
ストアドプロシージャからSSIS変数に値を取得し、式を追加した場合に2つのSSISタスクが機能するかどうかをテストしています。したがって、例として、このストアドプロシージャを使用しようとしています。 おそらく、SSIS変数のプロパティを完全に間違って設定しているのかもしれません。これは、ストアドプロシージャの値をSSIS変数にインポートするための正しい方法でこれを行っているかどうかもわからないためです。他に何かスクリーンキャプチャが必要かどうか教えてください。 これがタスクの例です: そしてここに優先順位制約エディタのスクリーンキャプチャがあります: そして、これが最初のタスクのプロパティです: その条件に基づいて前進(または失敗)させたい。しかし、テストすると、プロセスは最初のタスクから2番目のタスクに関係なく流れ、最初のタスクの「100%完了」のみを示し、この式が真かどうかをチェックしたかどうかについては何も表示しません。どうすればこのようなことができますか?ストアドプロシージャから値を取得するために、SSISに 'orderCount'という変数があります。

2
Amazon RDS Postgresqlに新しい拡張機能を追加
jsonbxをRDSインスタンスにダウンロードしたい。サポートされているRDS PostgreSQLの機能には、組み込みの機能のみが表示されます。これは、機能マトリックスにない拡張機能をRDSにインストールする方法がないことを意味しますか?これの回避策はありますか?

2
NoSQL:非構造化データとは何ですか?
現在、mssqlサーバーベースのソリューションを使用して、リソースのエッジで実行しています。 負荷に取り組むための次の動きに関する多くの従来のオプションがあります。 より高速なCPUとIOを購入する 一部の顧客を分割してサーバーを分離する クラスタにデータベースを移動 ライセンスとハードウェアまたは時間の点で、すべてが高価です。そこで、システム全体をnosqlエンジンのcassandraが約束するスケーラブルなソリューションに移動することで、別のオプションを追加したいと思います。 それでも、私は定かではなく、noSQLデータベースの経験もないので、「非構造化」データの構造を理解する必要があります。 このアプリケーションでは、基本的に、ユーザーがさまざまな方法で入力したデータを「Key-Value」リストとして保存します。(Orderのような)ヘッド要素を含む親テーブルがあり、(Order_Linesのような)注文の内容を構成するキーと値のペアを持つ子テーブルがあります。 ビジネス的には、OrderとOrderLinesは1つの単位です。ただし、RDBMSにより、これらはテーブルに格納され、常に結合する必要があります。 操作中に、上部のみをロードすることを選択する場合がありますが、ほとんどの場合、先頭行といくつかのKVPをロードして、いくつかの有用な情報を表示します。 たとえば、概要リストでは、ヘッド識別子といくつかの値を各行の列に表示します。 更新:あらゆる種類のフォームを保存します。したがって、基本的には「ドキュメント」を保存します。それにもかかわらず、これらのフォームを準備し、値、並べ替えなどで検索する必要があります。データアクセス制御により、データベースにもう1つの複雑なレイヤーが追加されます。 ご想像のとおり、特定のKVPの量と可用性はオブジェクトごとに異なります。さまざまなデータの組み合わせに対して数千のテーブルを作成する必要があるため、オブジェクトの種類ごとに単一のテーブルを作成する有効な可能性はありません。 この種の「辞書」のようなデータセットは、noSQLデータベースに格納する方が良いでしょうか?これによるパフォーマンス上のメリットはありますか?cassandraはこれらのhead + KVPを1つのデータセットとしてモデル化しますか?cassandraのWebページといくつかのチュートリアルを見ると、RDBMSとcassandraの間にデータ編成の点でそれほど大きな違いはないように思えます。5つのKVPを選択したい場合は、結合の数は同じです。各行のリスト。 啓蒙は歓迎されています、そして問題を説明する論文へのポインターも大丈夫です。

1
拡張イベントセッションでライブデータを監視できない
PCでSQL Server 2014 Developer Editionを実行しています。system_healthセッションでデータを表示しようとしています。SSMSでは、データベースに接続し、サーバー/管理/拡張イベント/セッションを拡張しました。AlwaysON_health(停止)とsystem_health(実行中)が表示されます。 system_healthセッションを右クリックすると、次のエラーが発生します。 ストレージは、提供されたパラメーターを使用して初期化できませんでした。(Microsoft.SqlServer.XEventStorage)「system_health」という名前の拡張イベントセッションが見つかりませんでした。セッションが存在し、開始されていることを確認してください。(Microsoft SQL Server、エラー:25728) system_healthを展開すると、ターゲットのpackage0.event_fileおよびpackage0.ring_bufferが表示されます。いずれかのターゲットを右クリックして[ターゲットデータの表示]を選択すると、次のエラーが発生します。 ストレージは、提供されたパラメーターを使用して初期化できませんでした。(Microsoft.SqlServer.XEventStorage)関数 'fn_MSXe_read_event_stream'が存在しないか、権限がないため、表示できません。(Microsoft SQL Server、エラー:15151) 関数は存在します。私はそれを実行できます: select * from fn_MSXe_read_event_stream('system_health', 0); 実行すると、次のエラーが発生します。 Msg 25728, Level 16, State 10, Line 6 The Extended Events session named "system_health" could not be found. Make sure the session exists and is started. system_healthセッションがあることを知っています。私はセッションのリストに表示されます: select * …

3
0または1から0または1
Sql Serverでゼロまたは1対ゼロまたは1の関係を最も自然な方法でモデル化するにはどうすればよいですか? サイトの危険をリストした「ハザード」テーブルがあります。サイトで実行する必要がある作業用の「タスク」テーブルがあります。一部のタスクはハザードを修正することであり、タスクは複数のハザードを処理することはできません。一部のハザードにはそれらを修正するタスクがあります。ハザードには2つのタスクを関連付けることができません。 以下は私が考えることができる最高のものです: CREATE TABLE [dbo].[Hazard]( [HazardId] [int] IDENTITY(1,1) NOT NULL, [TaskId] [int] NULL, [Details] [varchar](max) NULL, CONSTRAINT [PK_Hazard] PRIMARY KEY CLUSTERED ( [HazardId] ASC )) GO ALTER TABLE [dbo].[Hazard] WITH CHECK ADD CONSTRAINT [FK_Hazard_Task] FOREIGN KEY([TaskId]) REFERENCES [dbo].[Task] ([TaskId]) GO CREATE TABLE [dbo].[Task]( [TaskId] [int] IDENTITY(1,1) NOT NULL, …

1
複数の結果セットに対するdm_exec_describe_first_result_set_for_object
ストアドプロシージャのすべての結果セットのメタデータを返すプロシージャはありますか? のようなものsys.dm_exec_describe_first_result_set_for_objectですが、すべての結果セットについてですか? 最終的には、データベース内のすべてのストアドプロシージャのすべての結果セットのメタデータを発見したいと思います。とりあえず、sys.dm_exec_describe_first_result_set_for_object説明できない結果セットのみで解決します。つまり、2番目、3番目、およびN番目の結果セットです。 SQLCLRを使用してこれを行う方法を見てみましょう。 複数の結果セットを含むプロシージャの結果を保存する方法 tSQLt-SQL ServerのDBユニットテスト-ResultSetFilter.cs

3
sp_WhoIsActive上の「FETCH API_CURSOR0000…」が多数(SQL Server 2008 R2)
変な状況です。これsp_whoisactiveを見ることができる使用: わかりました、このクエリを使用して、何がトリガーされているかを確認できます(この単語は英語で存在しますか?)それ: SELECT c.session_id, c.properties, c.creation_time, c.is_open, t.text FROM sys.dm_exec_cursors (SPID) c --0 for all cursors running CROSS APPLY sys.dm_exec_sql_text (c.sql_handle) t 結果: それは簡単selectです。なぜこれはfを使用しているのetch_cursorですか? また、「空白」のsql_textsもたくさんあります。これはこの「カーソル」に何かありますか? DBCC INPUTBUFFER (spid) これを私に示します: ここに私が作った質問があり ますが、これが同じことかどうかはわかりません。 編集1: kinが提供するクエリを使用すると、次のようになります。 EDIT2: アクティビティモニターを使用して、これを確認できます。 これは最も負荷の高いクエリです(最初のクエリは意図的なものであり、私たちはそれについて知っています)。 繰り返しますが、なぜこれselect * from...が理由なのかを知りたいのFETCH CURSORですが... EDIT3: この " select * from..."は別のサーバーから(経由でlinked server)実行されています。 さて、@ kinが言ったことを理解するのに問題があります。 これはexecution …

1
部分的に構築され、停電によって終了したインデックスによって使用されたスペースを再利用する方法
Mac(10.10.4)でpostgres(postgis)9.4.2を実行しています。 私はいくつかの大きなテーブル(数TB)を持っています。 そのうちの1つで約1週間かかるインデックス作成中に、停電がバッテリーユニットとシステムよりも長く続いたときにインデックスが終了するポイントに近いと予想されるので、利用可能なHDスペースの低下を観察しました降りた。fillfactor=100静的データソースであるため、私はバッファをオフにしていて、ビルド中にそれを行いました。再起動時に、ドライブに残っている使用可能なスペースは、インデックスビルドのほぼ終了時とまったく同じです。真空分析はスペースを解放しません。 テーブルを落として再度取り込みましたが、スペースは落ちませんでした。現在、インデックスを作成するための十分なスペースがない場所にいます。 インデックスの構築中に生成されたファイルは、停電中にマシンがダウンした方法が原因でシステムによって削除できない場所でスタックしていますか? テーブルサイズとデータベース内のインデックス(そのドライブ上の唯一のデータ)を見ると、合計で約6TBです。ドライブです8TB未満、そこにある500ギガバイトは、インデックスがあったであろうという大きさです1.5TB失われたどこかに約あるようですので、ドライブに残しました。 何か案は?

1
SQL Server構成でSQL Serverサービスが空
Windows 8.1からWindows 10にアップグレードしたところ、SQL Server構成マネージャーのSQL Serverサービスが空であることに気付きました。現在のところ、SQL Serverは完全に機能します。SQL Server 2014はローカルマシンにインストールされます。 私はブログを読みました-https ://www.mssqltips.com/sqlservertip/2492/why-is-sql-server-configuration-manager-missing-services/および http://www.sqlservercentral.com/Forums/Topic1469391- 1292-1.aspxでも問題を解決できませんでした。 データベースをバックアップし、アンインストールして再インストールしましたが、ノードはまだ空です。私は何をすべきか? スクリーンショットで更新 SQL Server構成マネージャー画面

2
SQLサーバーの最大メモリにSSISが含まれていますか?
次のサーバーにSQLサーバーの2つのインスタンスとSSISをインストールしました。 RAMの容量は384 GBに近いことに注意してください これは、2つのインスタンスに適用した最大および最小のメモリ設定です。私は両方のインスタンスが等しい量のリソースを使用すると仮定します。それが実際に当てはまる場合、180 GBである184,320 MBが私のメモリをセットアップするための適切な開始番号ですか? SSISにはどのくらいのメモリを割り当てますか?

3
mongoexportまたはmongodumpでバックアップしますか?
本番環境のバックアップでは、MongoDB はデータの正確性のためにmongoexportではなくmongodumpを推奨します。ただし、バックアップする前に、MongoDBデータベースからデータを「スクラブ」する必要があります。mongoexport以外のサーバー側のデータ消去オプションは知りません。2つの質問: いmongoexportのアクセスMongoDBのキャッシュはRAMに?mongodumpのように、RAMのワーキングセットを変更しますか? mongodumpコマンドには、この--queryオプションがあります。"mongodumpの出力に含まれるドキュメントをオプションで制限するクエリとしてJSONドキュメントを提供します。" ドキュメント内の特定のフィールドを除外するためにクエリは必要ですか?
9 backup  mongodb 

2
範囲内のすべての日付に対して複雑なクエリを実行する
注文表があります Column | Type | Modifiers ------------+-----------------------------+----------------------------------------------------- id | integer | not null default nextval('orders_id_seq'::regclass) client_id | integer | not null start_date | date | not null end_date | date | order_type | character varying | not null データにはclient_idの重複しない永続的な注文があり、時にはclient_idが一致する場合、start_dateの永続的な注文を上書きする一時的な注文があります。同じタイプの注文が重複しないようにするアプリケーションレベルの制約があります。 id | client_id | start_date | end_date | order_type ----+-----------+------------+------------+------------ 17 …

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