TOP 投稿 過去ログ 管理用 RSS RDF

質問:「sp_MStablespace」の「DataSpaceUsed」って単位はキロバイトですか?

MS SQLServerでテーブルの使用量を調べるストアド「sp_MStablespace」っていうのがあるのだけれど、得られる結果「DataSpaceUsed」単位って何なのでしょう。バイト、キロバイト、メガバイト?

クエリアナライザでストアドを実行して確認。
exec sp_MStablespace "dbo.Table1"
・新規でテーブルを作って⇒0
・ちょっとデータを入れて⇒8
・300行くらい挿入して⇒144

1文字入れただけで1バイト以上にはなるので、単位としてバイトは流石にないし、MBだと大きすぎる気がします。やはりキロバイトでしょうか。

mikehibm2005 様のSQLServerのDB内の全テーブルのデータ容量を表示するで公開されているSQLでは、実行結果を表示する部分で
(T_DATA+T_INDEX) / 1024 AS TOTAL_MB
とされています。テーブルとインデックスの容量を足して1024で割るとメガバイト。ということは元の数値はキロバイトという認識です。

ちょっとだけ関連するかと…。⇒ストアド「sp_MStablespace」を実行したとき常に正しい行数が取得できるとは限らないようです。定期的に調べた結果をどこにまとめているのでしょう。ストアド「sp_MStablespace」を実行する前に、
DBCC UPDATEUSAGE データベース名
を実行しておくとページと行のカウントが更新され、正しい結果が返って来るそうです。
※SQL Server 2000からアップグレードした場合、最初に実行しておくこと。以後適切に管理されます。
※SQL Server 2005以降では「DBCC UPDATEUSAGE」を定期的に実行しません。
※大規模なDBでは処理に時間がかかります。

【SQL Server】テーブルの使用量を確認する
SQLServerのDB内の全テーブルのデータ容量を表示する
ディスク使用量の概要レポート - MSDN
【SQLServer】 行数の取得
DBCC UPDATEUSAGE (Transact-SQL) - MSDN