SQLServer表变量对IO及内存影响测试
1. 测试创建表变量对IO的影响 测试创建表变量前后,tempdb的空间大小,目前使用 sp_spaceused 得到大小,也可以使用视图 sys.dm_db_file_space_usage use tempdb go Set nocount on Exec sp_spaceused /* 插入数据之前 */ declare @tmp_orders table ( list_
1. 测试创建表变量对IO的影响
测试创建表变量前后,tempdb的空间大小,目前使用sp_spaceused得到大小,也可以使用视图sys.dm_db_file_space_usage
<span><span>use</span><span> tempdb </span><span>go</span> <span>Set</span> nocount <span>on</span> <span>Exec</span> sp_spaceused <span>/*</span><span>插入数据之前</span><span>*/</span> <span>declare</span> <span>@tmp_orders</span> <span>table</span> ( list_no <span>int</span>,id <span>int</span><span>) </span><span>insert</span> <span>into</span> <span>@tmp_orders</span><span>(list_no,id) </span><span>select</span> ROW_NUMBER() <span>over</span>( <span>order</span> <span>by</span><span> Id ) list_no,id </span><span>from</span><span> Test.dbo.Orders </span><span>Select</span> <span>top</span>(<span>1</span>) name,<span>object_id</span><span>,type,create_date </span><span>from</span><span> sys.objects </span><span>Where</span> type<span>=</span><span>'</span><span>U</span><span>'</span> <span>Order</span> <span>by</span> create_date <span>Desc</span> <span>Exec</span> sp_spaceused <span>/*</span><span>插入数据之后</span><span>*/</span> <span>Go</span> <span>Exec</span> sp_spaceused <span>/*</span><span>Go之后</span><span>*/</span></span>
执行结果如下:
可以看到:
1) 在表变量创建完毕,同时批处理语句没有结束时,临时库的空间增大了接近9M空间。创建表变量的语句结束后,空间释放
2)在临时库的对象表sys.objects中能够查询到刚刚创建的表变量对象
继续验证是否发生IO操作,使用视图sys.dm_io_virtual_file_stats
在创建表变量前后执行如下语句:
<span><span>select</span> <span>db_name</span>(database_id) database_name,<span>*</span> <span>from</span> sys.dm_io_virtual_file_stats(<span>db_id</span>(<span>'</span><span>tempdb</span><span>'</span>), <span>NULL</span>)</span>
测试结果如下:
1* 创建表变量前
2*创建表变量后
可以看到数据文件写入次数以及写入字节发生了明显的变化,比较写入字节数:
select (2921709568-2913058816)*1.0/1024/1024
大约为8.3M,与表变量的数据基本一致,可见创建表变量,确实是发生了IO操作
2. 测试创建表变量对内存的影响
考虑表变量是否占用内存的数据缓冲区,测试SQL如下:
<span><span>declare</span> <span>@tmp_orders</span> <span>table</span> ( list_no <span>int</span>,id <span>int</span><span>) </span><span>insert</span> <span>into</span> <span>@tmp_orders</span><span>(list_no,id) </span><span>select</span> ROW_NUMBER() <span>over</span>( <span>order</span> <span>by</span><span> Id ) list_no,id </span><span>from</span><span> Test.dbo.Orders </span><span>--</span><span>查询tempdb库中最后创建的对象 </span> <span>Select</span> <span>top</span>(<span>1</span>) name,<span>object_id</span>,type,create_date <span>from</span> sys.objects <span>Where</span> type<span>=</span><span>'</span><span>U</span><span>'</span> <span>Order</span> <span>by</span> create_date <span>Desc</span> <span>--</span><span>查询内存中缓存页数 </span> <span>SELECT</span> <span>count</span>(<span>*</span>)<span>AS</span><span> cached_pages_count ,name ,index_id </span><span>FROM</span> sys.dm_os_buffer_descriptors <span>AS</span><span> bd </span><span>INNER</span> <span>JOIN</span><span> ( </span><span>SELECT</span> <span>object_name</span>(<span>object_id</span>) <span>AS</span><span> name ,index_id ,allocation_unit_id </span><span>FROM</span> sys.allocation_units <span>AS</span><span> au </span><span>INNER</span> <span>JOIN</span> sys.partitions <span>AS</span><span> p </span><span>ON</span> au.container_id <span>=</span><span> p.hobt_id </span><span>AND</span> (au.type <span>=</span> <span>1</span> <span>OR</span> au.type <span>=</span> <span>3</span><span>) </span><span>UNION</span> <span>ALL</span> <span>SELECT</span> <span>object_name</span>(<span>object_id</span>) <span>AS</span><span> name ,index_id, allocation_unit_id </span><span>FROM</span> sys.allocation_units <span>AS</span><span> au </span><span>INNER</span> <span>JOIN</span> sys.partitions <span>AS</span><span> p </span><span>ON</span> au.container_id <span>=</span><span> p.partition_id </span><span>AND</span> au.type <span>=</span> <span>2</span><span> ) </span><span>AS</span><span> obj </span><span>ON</span> bd.allocation_unit_id <span>=</span><span> obj.allocation_unit_id </span><span>WHERE</span> database_id <span>=</span> <span>db_id</span><span>() </span><span>GROUP</span> <span>BY</span><span> name, index_id </span><span>ORDER</span> <span>BY</span> cached_pages_count <span>DESC</span></span>
测试结果如下:
可以看到表变量创建后,数据页面也会缓存在Buffer Pool中。但所在的批处理语句结束后,占用空间会被释放。
3. 结论
SQL Server在批处理中创建的表变量会产生IO操作,占用tempdb的空间,以及内存bufferPool的空间。在所在批处理结束后,占用会被清除
参考文章:
http://www.cnblogs.com/CareySon/archive/2012/06/11/2544835.html
http://www.cnblogs.com/wghao/archive/2011/11/02/2227219.html
如有不对的地方,欢迎拍砖,谢谢!O(∩_∩)O

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









機械式ハード ドライブまたは SATA ソリッド ステート ドライブの場合、NVME ハード ドライブの場合は、ソフトウェアの実行速度の向上を感じられない場合があります。 1. レジストリをデスクトップにインポートし、新しいテキスト ドキュメントを作成し、次の内容をコピーして貼り付け、1.reg として保存し、右クリックしてマージしてコンピュータを再起動します。 WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement]"DisablePagingExecutive"=d

9月3日の当ウェブサイトのニュースによると、韓国メディアetnewsは昨日(現地時間)、サムスン電子とSKハイニックスの「HBM類似」積層構造モバイルメモリ製品が2026年以降に商品化されると報じた。関係者によると、韓国のメモリ大手2社はスタック型モバイルメモリを将来の重要な収益源と考えており、エンドサイドAIに電力を供給するために「HBMのようなメモリ」をスマートフォン、タブレット、ラップトップに拡張する計画だという。このサイトの以前のレポートによると、Samsung Electronics の製品は LPwide I/O メモリと呼ばれ、SK Hynix はこのテクノロジーを VFO と呼んでいます。両社はほぼ同じ技術的ルート、つまりファンアウト パッケージングと垂直チャネルを組み合わせたものを使用しました。 Samsung Electronics の LPwide I/O メモリのビット幅は 512

5月6日のこのウェブサイトのニュースによると、LexarはAres Wings of WarシリーズのDDR57600CL36オーバークロックメモリを発売しました。16GBx2セットは50元のデポジットで5月7日0:00に予約販売されます。 1,299元。 Lexar Wings of War メモリは、Hynix A-die メモリ チップを使用し、Intel XMP3.0 をサポートし、次の 2 つのオーバークロック プリセットを提供します: 7600MT/s: CL36-46-46-961.4V8000MT/s: CL38-48-49 -1001.45V放熱に関しては、このメモリ セットには厚さ 1.8 mm の全アルミニウム放熱ベストが装備されており、PMIC 独自の熱伝導性シリコン グリース パッドが装備されています。メモリは 8 つの高輝度 LED ビーズを使用し、13 の RGB 照明モードをサポートします。

MySQL と SQL Server の構文の違いは、主にデータベース オブジェクト、データ型、SQL ステートメント、その他の側面に反映されています。データベース オブジェクトの違いには、ストレージ エンジン、ファイル グループの指定方法、インデックスと制約の作成などが含まれます。データ型の違いには、数値型、文字型、日付と時刻の型の違いが含まれます。 SQL ステートメントの違いは、結果セットの制限、データの挿入、更新および削除の操作などに反映されます。その他の違いには、ID 列、ビュー、ストアド プロシージャの作成方法が含まれます。異なるデータベース システムを使用する際のエラーを回避するには、これらの違いを理解することが重要です。

6 月 7 日のこのサイトのニュースによると、GEIL は 2024 台北国際コンピューター ショーで最新の DDR5 ソリューションを発表し、SO-DIMM、CUDIMM、CSODIMM、CAMM2、および LPCAMM2 バージョンから選択できるように提供しました。 ▲画像出典:Wccftech 写真に示すように、Jinbang が展示した CAMM2/LPCAMM2 メモリは非常にコンパクトな設計を採用しており、最大 128GB の容量と最大 8533MT/s の速度を実現できる製品もあります。 AMDAM5 プラットフォームで安定しており、補助冷却なしで 9000MT/s までオーバークロックされます。レポートによると、Jinbang の 2024 Polaris RGBDDR5 シリーズ メモリは最大 8400 のメモリを提供できます。

新作ファンタジー妖精MMORPG『朱仙2』の「武威試験」が4月23日より開始されます。原作から数千年後の朱仙大陸で、どのような新たな妖精冒険物語が繰り広げられるのでしょうか?六界の不滅の世界、フルタイムの不滅のアカデミー、自由な不滅の生活、そして不滅の世界のあらゆる種類の楽しみが、不滅の友人たちが直接探索するのを待っています! 「Wuwei Test」の事前ダウンロードが開始されました。Fairy friends は公式 Web サイトにアクセスしてダウンロードできます。サーバーが起動する前に、アクティベーション コードは事前ダウンロードとインストール後に使用できます。完成されました。 『朱仙2』「不作為試験」開催時間:4月23日10:00~5月6日23:59 小説『朱仙』を原作とした朱仙正統続編『朱仙2』の新たな童話冒険篇原作の世界観をベースにゲーム背景を設定。

TrendForceの調査レポートによると、AIの波はDRAMメモリとNANDフラッシュメモリ市場に大きな影響を与えています。 5 月 7 日のこのサイトのニュースで、TrendForce は本日の最新調査レポートの中で、同庁が今四半期 2 種類のストレージ製品の契約価格の値上げを拡大したと述べました。具体的には、TrendForce は当初、2024 年第 2 四半期の DRAM メモリの契約価格が 3 ~ 8% 上昇すると予測していましたが、現在は NAND フラッシュ メモリに関しては 13 ~ 18% 上昇すると予測しています。 18%、新しい推定値は 15% ~ 20% ですが、eMMC/UFS のみが 10% 増加しています。 ▲画像出典 TrendForce TrendForce は、同庁は当初、今後も継続することを期待していたと述べた。

5月6日のニュースによると、vivoは本日、新しいvivoX100シリーズが5月13日19時に正式にリリースされると正式に発表しました。このカンファレンスでは、vivoX100s、vivoX100sPro、vivoX100Ultraの3モデルと、vivoの自社開発イメージングブランドBlueImageブループリントイメージング技術が発表される予定であることがわかった。デジタルブロガー「Digital Chat Station」も本日、これら3モデルの公式レンダリング、メモリ仕様、カラーマッチングを公開しており、このうちX100sはストレートスクリーンデザインを採用しているのに対し、X100sProとX100Ultraは曲面スクリーンデザインを採用している。ブロガーは、vivoX100s にはブラック、チタン、シアン、ホワイトの 4 つの色があることを明らかにしました。 メモリの仕様。
