問題タブ [tempdb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1213 参照

sql-server - SQL Server - Tempdb とデータベース ログの使用状況

これは非常に基本的な質問かもしれませんが、大規模な操作が最終的にデータベース ログまたは tempdb 領域を使用することになるかどうかを事前に判断するにはどうすればよいでしょうか?

たとえば、私が行った 1 つの大規模な挿入/更新操作では、スクリプト内のすべての変更を一度に展開する必要があったため、スペースが不足しないように、SSIS と一括操作を採用する必要があるところまでデータベース ログを使用しました。時間。

だから今、私は大規模な削除操作を行っています.10倍以上のログがいっぱいになります. そこで、データベース ログ ファイルが使用する領域をチェックし、小さなバッチで行を削除するスクリプトを作成しました。ログ ファイルが十分に大きくなると、スクリプトは中止され、翌日にはその時点から続行されるという考えに基づいています (ログのスペースが不足するリスクなしに、通常の使用を次のバックアップまで続行します)。

現在、ログがいっぱいになる代わりに、後者のクエリが tempdb をいっぱいにし始めました。具体的には、ログ ファイルではなく、Tempdb データ ファイルです。ですから、この 2 つを理解するには大きな穴があると思います。:)

アドバイスをありがとう!

編集:

明確にするために、ここでの質問は、なぜ最初の例ではデータベース ログを使用し、後者では tempdb データ ファイルを使用して変更を保存するのかということです。また、一般的に、DML 操作が tempdb またはログに保存されるのはどのロジックですか? 通常、ログはすべての DB 変更を保存する必要がありますが、tempdb は操作中に明示的に要求された場合 (一時オブジェクトなど)、またはサーバーが RAM を使い果たした場合にのみ処理されたデータを保存するために使用されます。

0 投票する
1 に答える
1132 参照

sql-server - SQL Server 2008 の tempdb で Clustered Index Insert を使用したビューの最適化の問題

結果のフルスキャンを実行する前に、多数の結合を含む SQL クエリを使用する必要がある Java 関数を作成しています。多くの結合をハードコーディングする代わりに、この複雑なクエリを使用してビューを作成することにしました。次に、Java 関数は次のクエリを使用してこの結果を取得します。

SELECTプログラムは正常に動作していますが、このコマンドには時間がかかるため、より高速にしたいと考えています。プランの実行プランを確認した後、いくつかのインデックスを作成し、+-30% 高速化しましたが、高速化したいと考えています。

問題は、実行コストの +-50% を持つクラスター化インデックスの挿入という 1 つの操作を除いて、実行プランのすべての操作のコストが 0% から 4% の間であることです。システムはビューのデータを格納するために一時テーブルを使用していると思いますが、このビューのインデックスはすべての行が必要なので役に立ちません。

では、その挿入を最適化するにはどうすればよいCWT_PrimaryKeyでしょうか? SQL Server の内部の一部のように見えるため、そのインデックスをオフにすることはできないと思います。カーソルを使用するとこの操作が表示される可能性があることをどこかで読みましたが、使用していないと思います(またはビューで使用されますか?)。

ビューを作成するコマンドは、次のような単純なものです (T-SQL や OPTION などはありません)。

そして、これは実行計画の問題のある部分の写真です: http://imgur.com/PO0ZnBU

編集: 詳細:

問題のあるビューを作成するためのクエリは、多くのテーブルを結合する大きなクエリです。単一のパラメーターに基づいて、Java クライアントはクエリ文字列を作成する前に変更します。このビューは、外部キーまたは主キーを持たない SQLServer に移行されたレガシー データベースからの "データ ユニット" を表しているため、私たちのチームはこの戦略に従うことにしました。そのため、ビューには 50 を超える列があり、他の 7 つのビューを結合して作成されています。

メイン ビューのクエリ (ポルトガル語が多い): http://pastebin.com/Jh5vQxzA

他のビュー (VW_Sintese1 から VW_Sintese7 まで) はこのように作成されますが、追加のビューを使用せずに、メイン ビューによって要求されたデータを含むテーブルとの結合を使用するだけです。

次に、Java クライアントは、クエリ「Select * from VW_Sintese####」を使用して準備済みのステートメントを作成し、関数「ExecuteQuery」を使用して実行します。

そして番組は最後まで続きます。

注目してくれてありがとう。

0 投票する
1 に答える
4711 参照

c# - Entity Framework と SQL Server の一時テーブル

C# に移行するレガシー アプリケーションがあり、データ アクセスに Entity Framework (EF) を使用したいと考えています。データベースは SQL Server 2012 で、現在は EF 5.0 を使用しています。元のアプリケーションは、大量のデータを大量に処理していました。その処理の一環として、元のアプリケーションは「一時」テーブルを多用していました。これらの「一時」テーブルのほとんどは、実際には SQL Server の一時テーブル (tempdb の #sometable など) ではなく、SQL Server の独自の「一時」データベースで作成および破棄された実際のテーブルです。

現在、C# EF を使用しているため、データ処理の一部として (いずれかのタイプの) 一時テーブルを使用できるようにしたいと考えています。私はEFで一時テーブルを使用することについていくつかのグーグルを行いました-そしてこれまでのところ、SQLBulkCopyを使用してtempdb一時テーブルを作成できることがわかりましたが、EF Linqを使用してそれらに対してクエリを実行する方法はありません.通常のデータ構造。私が読んだ他のオプションは、ストアドプロシージャを使用して処理を行い、それにテーブル値のパラメータを渡すことです。これにより、何千ものストアド プロシージャが必要になり、大量のビジネス ロジックを sproc に配置する必要があります。

一時的な SQL Server テーブルを作成して使用する他の方法はありますか? EF 6 には、この分野での追加機能がありますか?

0 投票する
1 に答える
103 参照

sql-server-2008 - 特定のクエリで選択を実行する前に、tempdb の特定のデータセットに必要なディスク容量を教えてくれる SQL Server 2008 の T-SQL スクリプトが必要です

新しいテーブルを作成するために、特定のクエリで select into ステートメントを実際に実行する前に、tempdb 内の特定のデータセットに必要なディスク容量を教えてくれる T-SQL クエリを SQL Server 2008 で見つける必要があります。

例:

bighugetablewithlotsofjoinsしたがって、データを作成する前に、返されるデータに必要なスペースを知る必要があります。newtable

0 投票する
1 に答える
277 参照

sql-server - LinqPad が提示するデータベースが無効なオブジェクト名であると言うのはなぜですか?

特定のファイル (「HHS_WCE4.ARMV4.CAB」) の内容を突き止めようとして、ハード ドライブを検索してそのファイルへの参照を探しました。Fileseek* の結果の 1 つは C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Template Data\tempdb.mdf にありました

[これをアスタリスクと考えてください] Windows 7 にはファイル検索ユーティリティが付属していないのはなぜですか? 彼らの以前のものは、いくつかの点で不自由ではありましたが、それでも日常的に使用するための最も有用なアプレット/ユーティリティの 1 つでした。

そのデータベースを開いて、「HHS_WCE4.ARMV4.CAB」への参照を確認しようとしましたが、別のペインで同じものを公開した後、あるペインで自分自身を見ることができないと言われています。

ここに画像の説明を入力

私は何か間違ったことをしていますか?tempdb の内容を調べる別の方法はありますか?

注:接続の追加>データコンテキストの自動作成>デフォルト(LINQ to SQL)>次へ>(localdb)\v11.0>データベースファイルの添付>テストを介して最初に接続しようとしましたが、次のようになりました:

ここに画像の説明を入力

0 投票する
1 に答える
91 参照

sql-server - 見つかったいくつかの tempdb ファイルが冗長であるかどうかを確認するにはどうすればよいですか?

SQLサーバーでは、C:ドライブのスペースが不足しているため、責任を継承しました(約5GBですが、プロファイラーを実行していたところ、Cのスペースが不足しているため停止する必要があると言われました)

いくつかの tempdb ファイルがC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data それぞれ 10 GB を占有しているのを見つけました。

私は tempdb が SQL サーバーに必要であることを知っているので、もう少し深く掘り下げました。サーバーに別のドライブ (G) があることがわかりました。このドライブには、tempdb ファイルのグループが含まれています。

Management studio でを右クリックしtempdb、[プロパティ] をクリックしてから [ファイル] をクリックすると、すべてのファイルがこの G ドライブに保存されていることが示されます。

したがって、C ドライブ内のものは、この SQL サーバーの初期構成からの「残り物」のようです。スペースを解放するためにそれらをどこかに移動しても安全であることを絶対に確認したい.

管理スタジオが別のドライブのファイルを使用して「tempdb」を報告している場合でも、舞台裏のあいまいな理由でそれらが必要になる可能性はありますか?

ファイルが「使用中」かどうかを確認する方法はありますか?

0 投票する
0 に答える
908 参照

sql-server - ファイル '\\?\E:\TempDB\MDTempStore_1584_1_j1pv2.tmp' を開くときに次のエラーが発生しました: アクセスが拒否されました

TFS 2013 の新規インストールを開始しようとしていますが、問題 TF255356 が発生しています: Team Foundation データベースの構成中に次のエラーが発生しました: TF400711: サービス ステップの実行中にエラーが発生しました インストール中にコンポーネント InstallWarehouse のウェアハウスを作成: 分析データベース スキーマを作成する失敗: 分析データベースの生成中にエラーが発生しました: ファイル システム エラー: ファイル '\?\E:\TempDB\MDTempStore_1584_1_j1pv2.tmp' を開くときに次のエラーが発生しました: アクセスが拒否されました。

tempdb フォルダーから読み取り専用フラグを削除しようとしましたが、変更を適用した後も true に設定されたままになります。また、フォルダーから読み取り専用を削除できるようにするレジストリ エントリ UseSystemForSystemFolders を追加しましたが、保持されません。

これに関するどんな助けも素晴らしいでしょう

ありがとう

クリス

0 投票する
1 に答える
55 参照

sql - 一致するフィールドと一致しないフィールドに基づいて、大きなテーブルで重複を見つける方法は?

1,000 万を超えるレコードを含む非常に大きなテーブルがあります。一部のフィールドが一致し、一部のフィールドが一致しないことに基づいて重複を見つけたい。

現在使用しているクエリは次のとおりです。

ProjectId のレコード数が 100,000 未満の場合、このクエリは正常に機能します。ProjectId レコードが 100 万を超えると、このクエリの実行中に tempdb のサイズが最大 100 GB になり、ディスク容量不足の問題が発生します。クエリの実行に時間がかかります。

クエリの最適化を手伝ってください。

上記のクエリに対する回答を得た後、以下の行を追加しました....

どうもありがとう、@Gordon-Linoff。あなたが提案したクエリは、はるかに高速に機能しました。VendorName は別のテーブルからのものです。以下に示すように、内部結合を含めることはできますか?

それは効率的なアプローチですか?