如何查看SQLServer数据库每个表占用的空间大小

如何查看SQLServer数据库每个表占用的空间大小,第1张

创建存储过程:

CREATE PROCEDURE [dbo][sys_viewTableSpace]

AS

BEGIN

SET NOCOUNT ON;

CREATE TABLE [dbo]#tableinfo(

表名 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,

记录数 [int] NULL,

预留空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,

使用空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,

索引占用空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,

未用空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL

)

insert into #tableinfo(表名, 记录数, 预留空间, 使用空间, 索引占用空间, 未用空间)

exec sp_MSforeachtable "exec sp_spaceused ''"

select from #tableinfo

order by 记录数 desc

drop table #tableinfo

END

使用的时候直接 :exec sys_viewtablespace

1 查看所有表空间大小 SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_data_files 2 group by tablespace_name; 2 已经使用的表空间大小 SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_free_space 2 group by tablespace_name; 3 所以使用空间可以这样计算 select atablespace_name,total,free,total-free used from ( select tablespace_name,sum(bytes)/1024/1024 total from dba_data_files group by tablespace_name) a, ( select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space group by tablespace_name) b where atablespace_name=btablespace_name; 4 下面这条语句查看所有segment的大小。 Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name 5 还有在命令行情况下如何将结果放到一个文件里。 SQL> spool outtxt SQL> select from v$database; SQL> spool off

统计信息是数据库基于成本的优化器最重要的参考信息;统计信息不准确,优化器可能给出不够优化的执行计划或者是错误的执行计划。对统计信息的计算分为非持久化统计信息(实时计算)与持久化统计信息。

非持久化统计信息

统计信息没有保存在磁盘上,而是频繁的实时计算统计信息;

每次对表的访问都会重新计算其统计信息;

假设针对一张大表的频繁查询,那么每次都要重新计算统计信息,很耗费资源。

持久化统计信息

把一张表在某一时刻的统计信息值保存在磁盘上;

避免每次查询时重新计算;

如果表更新不是很频繁,或者没有达到 MySQL 必须重新计算统计信息的临界值,可直接从磁盘上获取;

即使 MySQL 服务重启,也可以快速的获取统计信息值;

统计信息的持久化可以针对全局设置也可以针对单表设置。

接下来,详细说 MySQL 统计信息如何计算,何时计算,效果评估等问题。在 MySQL Server 层来控制是否自动计算统计信息的分布,并且来决策是持久化还是非持久化。

SELECT sum(dfTOTAL_SIZE) - sum(dfFREE_SIZE) as used ,

sum(dfTOTAL_SIZE) as total,

sum(dfFREE_SIZE) as free

FROM "SYS"V$TABLESPACE AS ts, "SYS"V$DATAFILE AS df WHERE tsID = dfGROUP_ID;

以上就是关于如何查看SQLServer数据库每个表占用的空间大小全部的内容,包括:如何查看SQLServer数据库每个表占用的空间大小、怎么查看oracle数据库表的大小、如何用sql统计数据库表的大小等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10195628.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存