参考sql2012存储过程写的统计所有用户表尺寸大小的示例

可以结合sp_MSforeachdb再遍历所有用户数据库查看所有表的尺寸大小,注意它的参数@sql不能超过nvarchar(2000),这里就不贴出代码了。
另外还可以定期运行并将结果保存下来,以便观察数据变化趋势。

查询单个数据库的所有用户表尺寸大小:

代码如下:

Select @@servername as ServerName,db_name() as DBName ,object_id as ObjectID, schema_name(schema_id) as SchName, name as TableName
    ,Rowcnt as Rows,Columns,Indexes,RowLength
    ,ReservedKb, TableUsedKb
    ,UsedKb-TableUsedKb as IndexUsedKb,ReservedKb-UsedKb as UnusedKb
    ,create_date as CreateDate,modify_date as LastModifiedDate, getutcdate() as TrackingUTCTime
From
(select
    object_id
    ,schema_id
    ,name
    ,(Select max(row_count) from sys.dm_db_partition_stats p with(nolock) where p.object_id=t.object_id and p.index_id < 2)  as Rowcnt
    ,(Select Count(1) from dbo.syscolumns with(nolock) where id = t.object_id) as Columns
    ,(Select Count(distinct index_id) from sys.dm_db_partition_stats p with(nolock) where p.object_id=t.object_id) as Indexes
    ,(SELECT SUM(length) FROM dbo.syscolumns with(nolock) WHERE id = t.object_id) as RowLength
    ,IsNull((Select SUM(reserved_page_count) from sys.dm_db_partition_stats p with(nolock) where p.object_id=t.object_id),0)*8
        + IsNull((Select sum(reserved_page_count)
                FROM sys.dm_db_partition_stats p2 with(nolock)
                inner join sys.internal_tables it with(nolock) on p2.object_id = it.object_id
                WHERE it.parent_id = t.object_id
                        AND it.internal_type IN (202,204,207,211,212,213,214,215,216,221,222,236)),0)* 8 as ReservedKb
    ,IsNull((Select SUM(in_row_data_page_count + lob_used_page_count + row_overflow_used_page_count)
                 from sys.dm_db_partition_stats p with(nolock) where p.object_id=t.object_id and p.index_id < 2),0)* 8 as TableUsedKb
    ,IsNull((Select SUM(used_page_count) from sys.dm_db_partition_stats p with(nolock) where p.object_id=t.object_id),0)*8
        + IsNull((Select sum(used_page_count)
                FROM sys.dm_db_partition_stats p2 with(nolock)
                inner join sys.internal_tables it with(nolock) on p2.object_id = it.object_id
                WHERE it.parent_id = t.object_id
                        AND it.internal_type IN (202,204,207,211,212,213,214,215,216,221,222,236)),0)* 8 as UsedKb
    ,create_date
    ,modify_date
from sys.tables t with(nolock)
where Type='U'
) A
order by ReservedKb desc

(0)

相关推荐

  • 参考sql2012存储过程写的统计所有用户表尺寸大小的示例

    可以结合sp_MSforeachdb再遍历所有用户数据库查看所有表的尺寸大小,注意它的参数@sql不能超过nvarchar(2000),这里就不贴出代码了.另外还可以定期运行并将结果保存下来,以便观察数据变化趋势. 查询单个数据库的所有用户表尺寸大小: 复制代码 代码如下: Select @@servername as ServerName,db_name() as DBName ,object_id as ObjectID, schema_name(schema_id) as SchName,

  • 利用Mysql定时+存储过程创建临时表统计数据的过程

    1.mysql定时任务简单介绍 mysql的定时任务是使用event(事件)来实现的,自mysql5.1.6版本起,增加了这个功能 - 事件调度器(event scheduler),它可以精确到每秒钟执行一个任务,在一些对数据实时性要求比较高的场景非常使用,接下来我将用mysql的event事件来实现定时统计数据. 2.准备工作 (1)查看定时策略是否开启 show variables like '%event_sche%'; 执行结果如下 ON表示处于开启状态,如果是OFF则表示处于关闭状态,

  • SpringSession通过Redis统计在线用户数量的实现代码

    最近遇到一个比较紧急的任务,要求统计在线用户,目的是配合性能测评,要求证明自己系统的在线用户能够达标,不过系统因为历史原因,并没有这个功能,所以只能去springSession官网和网上搜资料,想到通过统计redis里缓存的数据 因为系统原先的逻辑是使用Spring Session加上Redis做的会话共享实现的单点登录,登录之后会在session设置一个key值表示用户已经登录过,同时重写HttpServletRequestWrapper 设置remoteUser数据值 class Remot

  • python写程序统计词频的方法

    在李笑来所著<时间当作朋友>中有这么一段: 可问题在于,当年我在少年宫学习计算机程序语言的时候,怎么可能想象得到,在20多年后的某一天,我需要先用软件调取语料库中的数据,然后用统计方法为每个单词标注词频,再写一个批处理程序从相应的字典里复制出多达20MB的内容,重新整理-- 在新书<自学是门手艺>中,他再次提及: 又过了好几年,我去新东方教书.2003 年,在写词汇书的过程中,需要统计词频,C++ 倒是用不上,用之前学过它的经验,学了一点 Python,写程序统计词频 --<

  • SpringBoot使用Redis的zset统计在线用户信息

    统计在线用户的数量,是应用很常见的需求了.如果需要精准的统计到用户是在线,离线状态,我想只有客户端和服务器通过保持一个TCP长连接来实现.如果应用本身并非一个IM应用的话,这种方式成本极高. 现在的应用都趋向于使用心跳包来标识用户是否在线.用户登录后,每隔一段时间,往服务器推送一个消息,表示当前用户在线.服务器则可以定义一个时间差,例如:5分钟内收到过客户端心跳消息,视为在线用户. 在线用户统计的实现 基于数据库实现 最简单的办法,就是在用户表,添加一个最后心跳包的日期时间字段 last_act

  • Springboot+SpringSecurity+JWT实现用户登录和权限认证示例

    如今,互联网项目对于安全的要求越来越严格,这就是对后端开发提出了更多的要求,目前比较成熟的几种大家比较熟悉的模式,像RBAC 基于角色权限的验证,shiro框架专门用于处理权限方面的,另一个比较流行的后端框架是Spring-Security,该框架提供了一整套比较成熟,也很完整的机制用于处理各类场景下的可以基于权限,资源路径,以及授权方面的解决方案,部分模块支持定制化,而且在和oauth2.0进行了很好的无缝连接,在移动互联网的授权认证方面有很强的优势,具体的使用大家可以结合自己的业务场景进行选

  • 用Python写脚本,实现完全备份和增量备份的示例

    需求: 在/root/backup下面有两个文件夹dst和src.要求在周一的时候进行完全备份,其余日子进行增量备份.从src备份到dst. 思路及关键点: 建立一个文件,以字典方式记录src的文件名以及文件对应的md5的值 完全备份的时候将文件名和md5值写在一个文件里面.cPickle的知识点. 增量备份的时候比较文件名是否在key里面,没有就要备份:有的话,这个文件的md5值是否改变,改变了就要备份 os.path.join()拼接路径,os.listdir(),os.chdir() ti

  • Laravel5.5 实现后台管理登录的方法(自定义用户表登录)

    最近群里很多人文档,laravel如何做会员和管理两个身份登录,今天把教程分享一下 自定义用户表登录 认证是由 guards 和 providers 两部分构成的, defaults 配置是默认选择一个 guard 认证驱动,所以我们在这两个配置项中分别添加一个 admin 和 admins 选项. <?php 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'admin' =

  • django框架自定义用户表操作示例

    本文实例讲述了django框架自定义用户表操作.分享给大家供大家参考,具体如下: django中已经给我生成默认的User表,其中的字段已经可以满足我们的日常需求. 但有时候,我们需要更多的字段,我们就可以自定义.来替换django自带的User表. models.py from django.contrib.auth.models import AbstractUser class UserProfile(AbstractUser): nick_name = models.CharField(

  • Django自定义用户表+自定义admin后台中的字段实例

    1.自定义用户表 注意事项 必须在settings中配置AUTH_USER_MODEL这个字段 # 覆盖默认的用户模型,使用自定义用户模型 # 语 法:'app的名称.自定义用户模型的名称' AUTH_USER_MODEL = 'admi.UserModel' 2.在models文件中编写UserModel类 from django.db import models from django.contrib.auth.models import AbstractUser # Django框架将cr

随机推荐