SQL Server 2008には常に成長しているデータベースがあります。過去6か月間で最も成長を遂げたテーブルを知りたいのですが。
last_updated_at
タイムスタンプのようなauditing-type-infoがたまたま含まれている場合は、知識に基づいた推測を行うことができます。
SQL Server 2008には常に成長しているデータベースがあります。過去6か月間で最も成長を遂げたテーブルを知りたいのですが。
last_updated_at
タイムスタンプのようなauditing-type-infoがたまたま含まれている場合は、知識に基づいた推測を行うことができます。
回答:
SQL Serverはこの情報を追跡しません。今後、テーブルスペースのスナップショットを長期にわたって保持する、何らかの監視(ツールであろうと自社開発であろうと)が必要になります。これは単純でも複雑でもかまいません。
sys.dm_db_partition_stats
。これらの方法の1つ以上をすでに実装しているか、誰かがタイムマシンを発明していない限り、テーブルが6か月前、2週間前、または20分前にどれほど大きいかを理解するための良い方法はありません。
私はこれを顧客データベースで毎日実行して、個々のテーブルの成長を経時的に追跡します。
DECLARE @names TABLE (
tableName VARCHAR(128)
)
INSERT INTO @names
SELECT [name] FROM customerdb.dbo.sysobjects WHERE xtype='U'
WHILE (SELECT COUNT(tableName) FROM @names) > 0
BEGIN
DECLARE @thisTable VARCHAR(128)
SET @thisTable = (SELECT TOP 1 tableName FROM @names)
INSERT INTO mydb.dbo.mytable ([name], [rows], [reserved], [data], [index_size], [unused])
EXEC sp_spaceused @objname=@thisTable
DELETE FROM @names
WHERE tableName = @thisTable
END
追加のツールなしでMySQLでそれを行う方法:
「SHOW TABLE STATUS」のようなクエリを実行し、追加のタイムスタンプフィールドを含むテーブルに結果を保存します。
このデータを使用すると、各テーブルの履歴があり、データの長さ、行、または最大の差分についてテーブルを選択できます。時間とともに。
ステータスデータはバイト数が少ないため、毎日のcronジョブで実行できます。オンボードコマンドを使用して、完璧、簡単、無料で実行できます。
。
マリアンが以前に投稿したリンクと同じ手順。MS T-SQLコマンドは、「SELECT * FROM INFORMATION_SCHEMA.TABLES」のようにする必要があります-単にgoogle。私は数秒で2つの可能な解決策を見つけました:
データベース内のすべてのテーブルとその行数およびサイズのリスト:http : //www.sqlmatters.com/Articles/Listing%20all%20tables%20in%20a%20database%20and%20their%20row%20counts%20and%20sizes.aspx
SQL SERVER –各テーブルの行、列、ByteSizeの数を検索するクエリ:http ://blog.sqlauthority.com/2007/01/10/sql-server-query-to-find-number-rows-columns-bytesize- for-each-table-in-the-current-database-find-biggest-table-in-database /