數據庫中的表大小
回答
在MySQL中,你可以使用這個查詢來顯示錶的大小:
SELECT table_name AS "Table",
round(((data_length + index_length)/1024/1024), 2) "Size in MB"
FROM information_schema.TABLES
WHERE table_schema = "$DB_NAME"
AND table_name = "$TABLE_NAME";
在SQL:
註釋sp_spaceused可以得到你的表所使用的磁盤空間信息,索引視圖或整個數據庫。
USE MyDatabase; GO
EXEC sp_spaceused N'dbo.MyTable'; GO
使用這種一次性爲所有表:
USE MyDatabase; GO
sp_msforeachtable 'EXEC sp_spaceused [?]' GO
其實我陷入了一種情況,我有一個表t,它有w int column1,column2可以爲null值。如果我在column1中插入值,並且column2爲null,那麼它將在行級別獲得多少字節。 – 2014-09-30 09:58:17
SQL NULL值在記錄目錄中保留一個或兩個字節。除此之外,如果存儲在可變長度列中,則SQL NULL值在記錄的數據部分保留零字節。在固定長度的列中,它在記錄的數據部分中保留列的固定長度。 – deadman 2014-09-30 10:03:51
有空的列會佔用空間嗎? 4字節的int? http://stackoverflow.com/questions/26112601/how-memory-allocation-is-assign-to-each-attribute-in-database – 2014-09-30 10:17:19
的一種方法是看sys.dm_db_index_physical_stats
輸出。
min_record_size_in_bytes,max_record_size_in_bytes和avg_record_size_in_bytes會給你你想要的尺寸。
如果你想看到一個特定記錄的大小,另一種方式是找到物理排位置,看到
SQL Server 2008: New (undocumented) physical row locator function.
然後你可以轉儲行物理結構,看到記錄的剖析。
這稍微參與T-SQL語句會給你完全相同的信息sp_spaceused
回報:
WITH pages AS
(
SELECT
object_id,
SUM(reserved_page_count) AS reserved_pages,
SUM(used_page_count) AS used_pages,
SUM(CASE
WHEN (index_id < 2)
THEN (in_row_data_page_count + lob_used_page_count + row_overflow_used_page_count)
ELSE lob_used_page_count + row_overflow_used_page_count
END) AS pages
FROM
sys.dm_db_partition_stats
GROUP BY
object_id),
extra AS
(
SELECT
p.object_id,
SUM(reserved_page_count) AS reserved_pages,
SUM(used_page_count) AS used_pages
FROM
sys.dm_db_partition_stats p
INNER JOIN
sys.internal_tables it ON p.object_id = it.object_id
WHERE
it.internal_type IN (202, 204, 211, 212, 213, 214, 215, 216)
GROUP BY
p.object_id)
SELECT
SchemaName = s.NAME,
TableName = t.NAME,
CompleteName = s.NAME + '.' + t.NAME,
(p.reserved_pages + ISNULL(e.reserved_pages, 0)) * 8 AS reserved_kb,
pages * 8 AS data_kb ,
(CASE
WHEN p.used_pages + ISNULL(e.used_pages, 0) > pages
THEN (p.used_pages + ISNULL(e.used_pages, 0) - pages)
ELSE 0
END) * 8 AS index_kb ,
(CASE
WHEN p.reserved_pages + ISNULL(e.reserved_pages, 0) > p.used_pages + ISNULL(e.used_pages, 0)
THEN (p.reserved_pages + ISNULL(e.reserved_pages, 0) - p.used_pages + ISNULL(e.used_pages, 0))
ELSE 0
END) * 8 AS unused_kb
FROM
pages p
INNER JOIN
sys.tables t ON t.object_id = p.object_id
INNER JOIN
sys.schemas s ON s.schema_id = t.schema_id
LEFT OUTER JOIN
extra e ON p.object_id = e.object_id
WHERE
t.is_ms_shipped = 0
ORDER BY
s.Name, t.Name
當然,理想情況下,你會「隱藏」這個你自己的一個很好的可用存儲過程讓它在任何需要的時候都可用...
- 1. Monetdb - 數據庫中的表大小
- 2. MySQL數據庫的最大表大小
- 3. 在sql server中的文件表大小與數據庫大小
- 4. 數據庫和表的內存大小
- 5. HSQL數據庫的大小
- 6. 數據庫觸發器限制Postgres中的最大表大小
- 7. TFS_Main數據庫中tbl_version表的大小被認爲是「大」
- 8. 如何查詢數據庫中的歷史表的大小在紅移來確定數據庫大小增長
- 9. 數據庫文件大小或表大小? SQLite
- 10. MongoDB中的數據庫大小
- 11. 從表中刪除後數據庫大小變大
- 12. Drupal數據庫大小
- 13. 境界數據庫大小
- 14. H2數據庫列大小
- 15. SQL Server數據庫大小
- 16. SQL CE數據庫大小
- 17. 數據庫大小不明
- 18. Postgresql - caculate數據庫大小
- 19. 數據庫大小計算?
- 20. 數據庫大小問題
- 21. 限制數據庫大小
- 22. TFS2010數據庫大小
- 23. Android:SQLite數據庫大小
- 24. MySQL數據庫大小
- 25. 猜測數據庫大小
- 26. PostgreSQL數據庫的大小(表空間大小)更大然後關係
- 27. 數據庫數據類型大小
- 28. 估計您的SQL Server數據庫中所有表的大小
- 29. 查詢以確定數據庫中表的大小? (MySQL的)
- 30. SQL Server - 丟棄表不會減小數據庫的大小
問題,爲什麼你需要桌子的尺寸? – Tanner 2014-09-30 10:24:54
坦納我需要我的問題的答案 http://stackoverflow.com/questions/26112601/how-memory-allocation-is-assign-to-each-attribute-in-database – 2014-09-30 10:26:37
這並不真正回答我的問題至於爲什麼你想/需要這些信息。 – Tanner 2014-09-30 10:40:06