zoukankan      html  css  js  c++  java
  • 查看数据库、表、索引的物理存储情况

    在管理、维护数据库时,经常需要查看数据库文件、日志文件所占用的磁盘空间,以及磁盘还剩下的磁盘空间,你可以通过下面几种方面
    查看数据库文件详细情况:
     
    1: 是通过远程连接(或VPN)连接到数据库服务器,直接去查看。
     
    2: 你连接到数据库后,可以通过mssms管理器,选择要查看的数据库,单击右键选择属性。然后选择文件选项,如下图所示。

     

    3: 通过SQL命令、脚本查看。

     

      3.1: sys.database_files 视图中保存着数据库文件(数据文件、日志文件)等的详细信息 

     SELECT * FROM sys.database_files

    --通过下面命令,查看系统各磁盘可使用空间。

    EXEC master..xp_fixeddrives

     

     

    当然你也可以用下面脚本只查看数据文件,日志文件大小。 

     

    代码

    SELECT  SUM(SIZE) * 8.0 / 1024   AS [FileSize(MB)] ,        
            
    CASE type
              
    WHEN 0 THEN 'DataBaseFileSize'
              
    WHEN 1 THEN 'DataBaseLogSzie'
            
    END AS Type
    FROM    sys.database_files
    GROUP BY type

     

     

     不过在删除或重新生成大型索引时,或者在删除或截断大型表时,数据引擎将延迟实际页释放以及关联锁,直至事物提交完毕为止。延迟的删除操作不会立即释放已分配的空间。因此,在删除或截断大型对象后,立即查询sys.database_files得到的数据可能没有反应实际可以用的磁盘空间。(具体可以看看MSDN)。

     

    3.2  使用系统存储过程SP_HELPDB 

     

    EXEC SP_HELPDB 'MyAssistant' 

     

     

     3.3 系统存储过程SP_SPACEUSED:

     SP_SPACEUSED它显示行数、保留的磁盘空间以及当前数据库中的表、索引视图或 SQL Server 2005 Service Broker队列所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间

    EXEC SP_SPACEUSED

     

     

     

    有时候你是不是想看看数据库里面的表、索引使用的磁盘空间情况,那么也有下面几种方法供你参考。

    1:选择你要查看的表单击右键,选择属性,你就可以看到表、索引空间使用情况。 

    2:还是使用系统存储过程SP_SPACEUSED

    EXEC SP_SPACEUSED 'bto_back_user'

     

    3:通过系统视图sysindexes来计算表以及它的索引所占的磁盘空间等情况,下表是它包含的字段详细说明

    列名 数据类型 说明

    name

    sysname

    列名或过程参数的名称。

    id

    int

    此列所属表的对象 ID,或者与此参数关联的存储过程的 ID。

    xtype

    tinyint

    sys.types 中的物理存储类型。

    typestat

    tinyint

    仅限内部使用。

    xusertype

    smallint

    扩展的用户定义数据类型的 ID。如果数据类型数超过 32767,则会发生溢出或返回 NULL。有关详细信息,请参阅查询 SQL Server 系统目录。

    length

    smallint

    sys.types 中的最大物理存储长度。

    xprec

    tinyint

    仅限内部使用。

    xscale

    tinyint

    仅限内部使用。

    colid

    smallint

    列 ID 或参数 ID。

    xoffset

    smallint

    仅限内部使用。

    bitpos

    tinyint

    仅限内部使用。

    reserved

    tinyint

    仅限内部使用。

    colstat

    smallint

    仅限内部使用。

    cdefault

    int

    此列的默认值的 ID。

    domain

    int

    此列的规则或 CHECK 约束的 ID。

    number

    smallint

    过程分组时的子过程号。

    0 = 非过程项

    colorder

    smallint

    仅限内部使用。

    autoval

    varbinary(8000)

    仅限内部使用。

    offset

    smallint

    此列所在行的偏移量。

    collationid

    int

    列的排序规则的 ID。对于非字符列,此值为 NULL。

    status

    tinyint

    用于说明列或参数的属性的位图:

    0x08 = 列允许空值。

    0x10 = 添加 varchar 或 varbinary 列时,执行 ANSI 填充。保留 varchar 列的尾随空格以及 varbinary 列的尾随零。

    0x40 = 参数为 OUTPUT 参数。

    0x80 = 列为标识列。

    type

    tinyint

    sys.types 中的物理存储类型。

    usertype

    smallint

    sys.types 中的用户定义数据类型的 ID。如果数据类型数超过 32767,则会发生溢出或返回 NULL。有关详细信息,请参阅查询 SQL Server 系统目录。

    printfmt

    varchar(255)

    仅限内部使用。

    prec

    smallint

    此列的精度级别。

    -1 = xml 或大值类型。

    scale

    int

    此列的小数位数。

    NULL = 数据类型不是数值。

    iscomputed

    int

    指示列是否为计算列的标志:

    0 = 非计算列。

    1 = 计算列。

    isoutparam

    int

    指示过程参数是否为输出参数:

    1 = True

    0 = False

    isnullable

    int

    指示列是否允许空值:

    1 = True

    0 = False

    collation

    sysname

    列的排序规则的名称。如果不是基于字符的列,则为 NULL。

    代码
    SELECT  OBJECT_NAME(id) AS TableName ,
            rowcnt  
    AS ROWS,
            reserved 
    * 8.0 AS Reserved ,
            dpages 
    * 8.0 AS USED ,
            (used 
    - dpages)* 8.0  AS index_size,
            ( reserved 
    - used ) * 8.0 AS Unused 
    FROM    sysindexes
    WHERE   indid = 1
            
    AND OBJECT_NAME(id) = 'users'
    ORDER BY reserved DESC

    EXEC SP_SPACEUSED 'users'

     

     

    对比看看两者下图的执行结果吧

     

     

    扫描上面二维码关注我
    如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
  • 相关阅读:
    前端带队之漫谈
    css3之currentColor
    安装及升级node
    谈JavaScript代码封装
    再玩儿一次——深入理解闭包
    【学习笔记】ES6标准入门
    【学习笔记】移动Web手册(PPK力作)
    使用webstorm操作git
    使用webstorm调试node程序
    前端代理nproxy
  • 原文地址:https://www.cnblogs.com/kerrycode/p/1824481.html
Copyright © 2011-2022 走看看