この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。
建築家
建築家
リスト
放送
茶屋
インテリジェントAI会話
.NETキャリア&テクニカルカレッジ
ちっちゃいなクズブログ
この版
利用者
Architect_Programmer_Code農業ネットワーク
»
建築家
›
データベース&データベース
›
Microsoft SQL Server
›
SQL Serverデータベースにおける一時テーブルの詳細な説明
眺める:
11952
|
答える:
0
[出典]
SQL Serverデータベースにおける一時テーブルの詳細な説明
[リンクをコピー]
クズども
掲載地 2020/05/28 10:52:28
|
|
|
|
一時テーブルはSqlserverデータベースにおいて非常に重要であり、以下はSQLデータベースにおける一時テーブルの特徴と使用法についての詳細な紹介を参考にします。
一時テーブルは永続テーブルに似ていますが、一時テーブルはtempdbに保存され、使用されなくなると自動的に削除されます。 一時テーブルにはローカルテーブルとグローバルテーブルの2種類があります。 名前、知名度、入手可能性によって区別されます。
一時テーブルの特徴は以下の通りです:
ローカル一時テーブルとは、ユーザーがテーブルを作成する際に「#」プレフィックスを追加するテーブルで、データベース接続に応じて独立しています。 ローカルの一時テーブルを作成したデータベース接続のみがテーブルにアクセスでき、他の接続はテーブルにアクセスできません。
異なるデータベース接続では、作成されるローカルの一時テーブルは同じ「名前」を持ちますが、これらのテーブル同士には関係性がありません。 SQLSERVERでは、データベース接続内のローカル一時テーブルの独立性を保証する特別な命名機構があります。
真の一時テーブルは、データベースシステムによって自動的に維持されるデータベースの一時テーブルスペースを利用し、テーブル容量を節約します。 また、一時テーブル空間は一般的に仮想メモリを使用するため、ハードディスク上のI/Oの数が大幅に減少し、システムの効率も向上します。
トランザクションやセッション終了後、一時テーブルは自動的に空になるので、データが切れた後にデータを削除する必要がありません。
ローカル一時テーブル
ローカル一時テーブルの名前は単一の数字記号(#)で前付けされます。 これらは現在のユーザー接続(すなわちローカルの一時テーブルを作成する接続)にのみ見えます。 ユーザーがSQL Serverインスタンスから切断すると削除されます。
例えば、データベース接続内でローカルの一時テーブルを作成し、次の文を使います:#Temp
データベース接続1:
ログインが見えます。
その後、同時にデータベース接続2を起動してクエリを実行し #temp
データベース接続2:
ログインが見えます。
データベース接続2の結果を見てみよう。
データベース接続2:
結果は、データベース接続2がテーブル #Temp を見つけられないことを示しています。 つまり、一時テーブル #Temp は作成したデータベース接続1にのみ見え、データベース接続2には見えません。
グローバル一時テーブル
グローバル一時テーブルの名前は2つの数字記号(##)で始まり、作成された際にはすべてのデータベース接続から見え、テーブルを参照するすべてのデータベース接続がSQL Serverから切断されると削除されます。
例えば、データベース接続でグローバル一時テーブル##Temp を作成し、次の文を付けてから3行のデータを追加します
データベース接続1:
ログインが見えます。
次にデータベース接続2で##Temp的数据 をクエリします
データベース接続2:
ログインが見えます。
データベース接続2の結果は以下の通りです。
データベース接続2:
ご覧の通り、データベース接続2はデータベース接続1によって作成されたグローバル一時テーブル##Temp に正常にアクセスできますが、今データ接続1を閉じてからデータベース接続2の##Temp查询语句会发生什么呢 を実行するとどうでしょうか? 結果は以下の通りです。
データベース接続1を閉じると、再度データベース接続2が実行されます:
ログインが見えます。
データベース接続1を閉じた後、データベース接続2はグローバル一時テーブル##Temp了 を見つけられないことを発見しました。 これは、データベース接続1が閉じた後、データベース接続2に一時テーブル##Temp を使う文が存在しないため、sqlserverはグローバル一時テーブル##Temp了 を参照するデータベース接続がないと判断し、##Temp释放掉了 を行います。
次に、データベース接続2のグローバル一時テーブル##Temp持有事务中的排他锁(Xロック)を閉じ、データベース接続1を閉じようとします。
データベース接続1:
ログインが見えます。
データベース接続2:
ログインが見えます。
データベース接続1を閉じると、データベース接続2は次のように実行されます:
ログインが見えます。
結果は、データベース接続1を閉じても、データベース接続2がトランザクションでグローバル一時テーブル##Temp的排他锁(Xロック)を保持していたため、一時テーブル##Temp并没有随着数据库连接1的关闭而被释放掉、データベース接続2で開始されたトランザクションがロールバックまたはコミットされていない限り、データベース接続2は常に一時テーブル##Temp的排他锁 を保持することを示しています。 この時点で、Sqlserverはグローバル一時テーブル##Temp を参照するデータベース接続がまだあると判断し、##Temp不会被释放掉 となります。
先の:
TypeScriptプロパティアクセサ(set, get)
次に:
SQL Serverは現在のシステム時刻の前日を問い合わせます
関連記事
•
SQL Serverサーバーはデータベースの整合ルールを修正します
•
SQL SERVERデータベースはデフォルトの照合ルールを修正します
•
SQL Serverのレプリケーションは、データベースを新しいデータベースにクローンします
•
MySQLデータベースのテストテーブルは1,000万件のデータを挿入します
•
[翻訳] なぜNET/C#のMySqlConnectorとMySql.Dataが前者を勝ち取るのか
•
.NET/C# はDataTablesを通じて動的にテーブル構造を作成します
•
SQL SERVERデータベース用のメモリ最適化テーブル
•
SQL Serverがクラスタ化されていないインデックスに対して作成する最大varchar長
•
[AI](15)ベクターデータベースQdrantは使いやすいです
•
【AI】(14) オープンソースベクターデータベースの簡単な紹介
閲覧したセクション
フロントエンドフレーム
技術チャット
ウェブサイト構築
苦情の提案
.Net/C#
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。
Mail To:help@itsvse.com