范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

SQLServer数据库收缩相关知识

  1、为什么要进行数据库收缩?
  SQL Server 数据库采取预先分配空间的方法来建立数据库的数据文件或者日志文件,比如数据文件的空间分配了300MB,而实际上只占用了20MB空间,这样就会造成磁盘存储空间的浪费。可以通过数据库收缩技术对数据库中的每个文件进行收缩,删除已经分配但没有使用的页。从而节省服务器的存储的成本。2、数据库收缩的原理
  官方解释:收缩数据文件通过将数据页从文件末尾移动到更靠近文件开头的未占用的空间来恢复空间。在文件末尾创建足够的可用空间后,可以取消对文件末尾的数据页的分配并将它们返回给文件系统。3、数据库收缩的限制和局限
  收缩后的数据库不能小于数据库最初创建时指定的大小。 或是上一次使用文件大小更改操作(如 DBCC SHRINKFILE)设置的显式大小。
  比如:如果数据库最初创建时的大小为 10 MB,后来增长到 100 MB,则该数据库最小只能收缩到 10 MB,即使已经删除数据库的所有数据也是如此。
  不能在备份数据库时收缩数据库。 反之,也不能在数据库执行收缩操作时备份数据库。4、数据库收缩的方式4.1 收缩数据库 DBCC SHRINKDATABASE
  介绍:收缩指定数据库中的数据文件大小。
  语法格式:DBCC SHRINKDATABASE     ( database_name [ , target_percent ]         [ , { NOTRUNCATE | TRUNCATEONLY } ]  )
  参数说明:database_name:是要收缩的数据库名称target_percent:是数据库收缩后的数据库文件中所要的剩余可用空间百分比。NOTRUNCATE:导致在数据库文件中保留所释放的文件空间。如果未指定,将所释放的文件空间释放给操作系统。TRUNCATEONLY:导致将数据文件中的任何未使用的空间释放给操作系统,并将文件收缩到上一次所分配的大小,从而减少文件大小,而不移动任何数据。不试图重新定位未分配页的行。使用 TRUNCATEONLY 时,忽略 target_percentis。4.2 收缩数据库文件 DBCC SHRINKFILE
  介绍:收缩当前数据库的指定数据或日志文件的大小,或通过将数据从指定的文件移动到相同文件组中的其他文件来清空文件,以允许从数据库中删除该文件。文件大小可以收缩到比创建该文件时所指定的大小更小。这样会将最小文件大小重置为新值。
  语法格式:DBCC SHRINKFILE  (     { file_name | file_id }      { [ , EMPTYFILE ]      | [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ]     } ) [ WITH NO_INFOMSGS ]
  参数说明:file_name:要收缩的文件的逻辑名称。file_id:要收缩的文件的标识 (ID) 号。若要获得文件 ID,请使用 FILE_IDEX 系统函数,或查询当前数据库中的 sys.database_files 目录视图target_size:用兆字节表示的文件大小(用整数表示)。如果未指定,则 DBCC SHRINKFILE 将文件大小减少到默认文件大小。默认大小为创建文件时指定的大小。注意:可以使用 DBCC SHRINKFILE target_size 减小空文件的默认大小。
  例如,如果创建一个10MB 的文件,然后在文件仍然为空的时候将文件收缩为2 MB,默认文件大小将设置为2 MB。这只适用于永远不会包含数据的空文件。EMPTYFILE:将指定文件中的所有数据迁移到同一文件组中的其他文件。由于数据库引擎不再允许将数据放在空文件内,因此可以使用 ALTER DATABASE 语句来删除该文件。NOTRUNCATE:在指定或不指定 target_percent 的情况下,将已分配的页从数据文件的末尾移动到该文件前面未分配页。文件末尾的可用空间不会返回给操作系统,文件的物理大小也不会更改。因此,指定 NOTRUNCATE 时,文件看起来未收缩。NOTRUNCATE 只适用于数据文件。日志文件不受影响。TRUNCATEONLY:将文件末尾的所有可用空间释放给操作系统,但不在文件内部执行任何页移动。数据文件只收缩到最后分配的区。如果随 TRUNCATEONLY 指定了 target_size,则会忽略该参数。TRUNCATEONLY 只适用于数据文件。WITH NO_INFOMSGS:取消显示所有信息性消息。5、示例-- 将TestDB数据库中的TestDB文件的大小收缩到20MB。 USE TestDB ; GO DBCC SHRINKFILE (TestDB, 20) ; -- 将减小 UserDB 用户数据库中数据文件和日志文件的大小,以便在数据库中留出 10% 的可用空间 DBCC SHRINKDATABASE (TestDB, 30);  -- 清理数据库日志文件为2M USE master ALTER DATABASE TestDB SET RECOVERY SIMPLE WITH NO_WAIT ALTER DATABASE TestDB SET RECOVERY SIMPLE --简单模式 USE TestDB DBCC SHRINKFILE (N"TestDB_log" , 2, TRUNCATEONLY)    --设置压缩后的日志大小为2M,可以自行指定 USE master ALTER DATABASE TestDB SET RECOVERY FULL WITH NO_WAIT ALTER DATABASE TestDB SET RECOVERY FULL --还原为完全模式
  另附SqlServer常见问题解答 1、SqlServer数据库正在还原的解决办法
  1)管理器不会主动刷新,需要手工刷新一下才能看到最新状态(性能方面的考虑)
  2)很少情况下,恢复进程被挂起了。这个时候假设你要恢复并且回到可访问状态,要执行:
  RESTORE database dbname with recovery
  这使得恢复过程能完全结束。
  3)如果你要不断恢复后面的日志文件,的确需要使数据库处于"正在还原状态",
  这通常是执行下面命令:
  RESTORE database dbname with norecovery2、SQL SERVER占用CPU过高排查和优化
  原来SQL Server对服务器内存的使用策略是用多少内存就占用多少内存,只用在服务器内存不足时,才会释放一点占用的内存,所以SQL Server 服务器内存往往会占用很高。我们可以通过DBCC MemoryStatus来查看内存状态。
  SQL SERVER运行时会执行两种缓存:
  1. 数据缓存:执行个查询语句,SQL SERVER会将相关的数据页(SQL SERVER操作的数据都是以页为单位的)加载到内存中来, 下一次如果再次请求此页的数据的时候,就无需读取磁盘了,大大提高了速度。
  2.执行命令缓存:在执行存储过程,自定函数时,SQL SERVER需要先二进制编译再运行,编译后的结果也会缓存起来, 再次调用时就无需再次编译。
  可以调用以下几个DBCC管理命令来清理这些缓存:DBCC FREEPROCCACHE  --清除存储过程相关的缓存 DBCC FREESESSIONCACHE  --会话缓存 DBCC FREESYSTEMCACHE("All")  --系统缓存 DBCC DROPCLEANBUFFERS  --所有缓存
  但是,这几个命令虽然会清除掉现有缓存,为新的缓存腾地方,但是Sql server并不会因此释放掉已经占用的内存。SQL SERVER并没有提供任何命令允许我们释放不用到的内存。因此我们只能通过动态调整SQL SERVER可用的物理内存设置来强迫它释放内存。
  解决SQLSERVER内存占用过高的方法:
  1、清除所有缓存  DBCC DROPLEANBUFFERS
  2、调整SQLSERVER可使用的最大服务器内存。
  在SQL管理器,右击实例名称
  右击实例名称选择属性
  在属性实例属性里面找到内存选项
  最大内存建议不超过系统内存的1/2
  把最大内存改成合适的内存,确定后内存就会被强制释放,然后重启实例。再看看任务管理器,内存使用率就降下来啦。SQL优化方法:
  1、查看连接对象
  USE master
  GO
  --如果要指定数据库就把注释去掉
  SELECT * FROM sys.[sysprocesses] WHERE [spid]>50 --AND DB_NAME([dbid])="gposdb"
  当前连接对象有67个其中‘WINAME’的主机名,‘jTDS’的进程名不属于已知常用软件,找到这台主机并解决连接问题。在360流量防火墙中查看有哪个软件连接了服务器IP,除之。
  2、然后使用下面语句看一下各项指标是否正常,是否有阻塞,正常情况下搜索结果应该为空。
  SELECT TOP 10
  [session_id],
  [request_id],
  [start_time] AS "开始时间",
  [status] AS "状态",
  [command] AS "命令",
  dest.[text] AS "sql语句",
  DB_NAME([database_id]) AS "数据库名",
  [blocking_session_id] AS "正在阻塞其他会话的会话ID",
  [wait_type] AS "等待资源类型",
  [wait_time] AS "等待时间",
  [wait_resource] AS "等待的资源",
  [reads] AS "物理读次数",
  [writes] AS "写次数",
  [logical_reads] AS "逻辑读次数",
  [row_count] AS "返回结果行数"
  FROM sys.[dm_exec_requests] AS der
  CROSS APPLY
  sys.[dm_exec_sql_text](der.[sql_handle]) AS dest
  WHERE [session_id]>50 AND DB_NAME(der.[database_id])="gposdb"
  ORDER BY [cpu_time] DESC
  查看是哪些SQL语句占用较大可以使用下面代码
  --在SSMS里选择以文本格式显示结果
  SELECT TOP 10
  dest.[text] AS "sql语句"
  FROM sys.[dm_exec_requests] AS der
  CROSS APPLY
  sys.[dm_exec_sql_text](der.[sql_handle]) AS dest
  WHERE [session_id]>50
  ORDER BY [cpu_time] DESC
  3、如果SQLSERVER存在要等待的资源,那么执行下面语句就会显示出会话中有多少个worker在等待
  SELECT TOP 10
  [session_id],
  [request_id],
  [start_time] AS "开始时间",
  [status] AS "状态",
  [command] AS "命令",
  dest.[text] AS "sql语句",
  DB_NAME([database_id]) AS "数据库名",
  [blocking_session_id] AS "正在阻塞其他会话的会话ID",
  der.[wait_type] AS "等待资源类型",
  [wait_time] AS "等待时间",
  [wait_resource] AS "等待的资源",
  [dows].[waiting_tasks_count] AS "当前正在进行等待的任务数",
  [reads] AS "物理读次数",
  [writes] AS "写次数",
  [logical_reads] AS "逻辑读次数",
  [row_count] AS "返回结果行数"
  FROM sys.[dm_exec_requests] AS der
  INNER JOIN [sys].[dm_os_wait_stats] AS dows
  ON der.[wait_type]=[dows].[wait_type]
  CROSS APPLY
  sys.[dm_exec_sql_text](der.[sql_handle]) AS dest
  WHERE [session_id]>50
  ORDER BY [cpu_time] DESC;
  4、查询CPU占用最高的SQL语句
  SELECT TOP 10
  total_worker_time/execution_count AS avg_cpu_cost, plan_handle,
  execution_count,
  (SELECT SUBSTRING(text, statement_start_offset/2 + 1,
  (CASE WHEN statement_end_offset = -1
  THEN LEN(CONVERT(nvarchar(max), text)) * 2
  ELSE statement_end_offset
  END - statement_start_offset)/2)
  FROM sys.dm_exec_sql_text(sql_handle)) AS query_text
  FROM sys.dm_exec_query_stats
  ORDER BY [avg_cpu_cost] DESC;
  5、索引缺失查询
  SELECT
  DatabaseName = DB_NAME(database_id)
  ,[Number Indexes Missing] = count(*)
  FROM sys.dm_db_missing_index_details
  GROUP BY DB_NAME(database_id)
  ORDER BY 2 DESC;
  SELECT TOP 10
  [Total Cost] = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0)
  , avg_user_impact
  , TableName = statement
  , [EqualityUsage] = equality_columns
  , [InequalityUsage] = inequality_columns
  , [Include Cloumns] = included_columns
  FROM sys.dm_db_missing_index_groups g
  INNER JOIN sys.dm_db_missing_index_group_stats s
  ON s.group_handle = g.index_group_handle
  INNER JOIN sys.dm_db_missing_index_details d
  ON d.index_handle = g.index_handle
  ORDER BY [Total Cost] DESC;
  找到索引缺失的表,根据查询结果中的关键次逐一建立索引。

能源危机席卷全球!中国建超级镜子发电站,德国也将全面弃核近段时间,随着天然气等各种能源价格不断飙升,一场波及全球的能源危机正在席卷而来。受能源短缺和价格上涨的影响,许多国家都出现了电力缺口,用电紧张的问题更是给生产和生活都带来了许多不便2024年,全球手机游戏市场将超过1160亿美元。苹果商店收入超400亿据国外市场机构Neuzoo预测,到2024年全球手机游戏市场收入将超过1160亿美元。Newzoo发布的2021年全球移动市场报告显示,2019年至2024年,全球玩家游戏付费的年中国与美挂钩引全球关注!75岁特朗普再上阵,扯下美国遮羞布在美国前总统特朗普对华发起贸易战之后,美中关系不断恶化,如今已经彻底降至冰点。拜登的上台,意味着美中迎来改善关系的契机,但是拜登上台后很长一段时间,仍旧延续特朗普政府的部分政策。不全球能源价格上涨,欧盟近300万人交不起供暖费,立陶宛的情况最糟现如今,全球范围诸多国家都面临着相当严重的能源危机,此前在我国境内也出现了拉闸限电的情况。不过在经过相应的调控之后,如今我国居民的日常生活用电已经能够得到保障。不过需要知道的是,包全球各国5G资费套餐出炉!网友我还是用4G吧目前,越来越多的国家开始5G商用,不少国家的运营商也已经推出了5G套餐资费标准。在众多5G套餐中,英国的5G普通套餐最便宜,但相对的,也被限速了。大部分的套餐资费均在500元左右,中国反对无效?联合国2912通过荒唐决议,马克龙表示将在全球推广根据最近的报道来看,有关所谓人权问题如今再次得到了外界的广泛关注。并且提到了所谓的死刑等话题,是否存在死刑显然是由各个国家自身所决定的。但是,此前法国却表示,要在全球范围内推广废除中国专家加入溯源!世卫最新调查组名单响彻全球,美又要失望了众所周知,世卫组织此前已经两次来华展开溯源工作。经过科学公正的调查之后,世卫公布新冠极不可能来自实验室的结果。然而美国等多个国家却试图推翻这些客观的结果,怂恿世卫继续前往中国展开新国米110周年专属定制款海鸥腕表曝光苏宁总裁亲自代言若有比生命更重大的,那就是荣誉。莎士比亚的名言成为国际米兰110周年专属定制纪念款海鸥腕表的灵感来源。7月27日,全球首届苏宁燃客节落地南京国际博览中心。占地10000平米的燃客城新能源汽车的大女主时代坦白说,在参与过今年的成都车展后,我是有一瞬间恍惚的我仿佛回到了十年前的大女主剧时代。从2011年起,甄嬛传陆贞传奇芈月传如懿传在近10年的时间里,每年都能找出至少一部有一定热度的造车新势力进入破万时代进入十月以后,各车企纷纷发布销量数据,尤其是造车新势力,整个9月可算是里程碑式表现。数据显示,有三家造车新势力9月销量相比8月出现明显的提升,其中蔚来汽车环比增幅超过80小鹏汽车环文剑居士谈音乐和器材之十三MP3时代的经历有朋友说想了解一下mp3时代的机器,我买过的mp3不是很多,大部分不是坏了就是掉了,有创新的微硬盘播放器,也有松下的mp3和艾利和的mp3,我都大致介绍一下吧。松下mp500,这是
开学装机记3000块钱大战3A大作配置推荐导读作为一个非常不着调的头条号小编,太不着调了,一次更新用一个月,从今天开始,小编要努力的更新,努力给大家推荐更多,更合适的电脑。今天是2月24号,距离开学已经一周左右了。我想很多川普做了档爆款节目,我赌你没看过2004年,美国NBC电视台推出了一档真人秀节目。节目是一群青年才俊,在一位商业帝国的总裁指导下,完成一项项极为严苛的商业任务。节目一经播出,收视爆灯,当第一季完结,成为了电视台创极限捡垃圾,用最少的钱,做最大的事情,200块钱办公电脑走起导读又到了老程心血来潮推荐垃圾佬配置的时间了,这次咱们不玩什么X58系列,也不玩什么X79系列了,咱们来玩点清晰脱俗的,G31系列电脑,可以这样说这个配置除了固态可能是最近的之外,28。89万起第四代嘉华成都车展开启预售在8月29日开幕的第二十四届成都车展上,东风悦达起亚携旗下智跑Ace凯酷(K5)傲跑等多款战略车型,以及全球模块化第三代iGMP平台和CVVD技术亮相,展现东风悦达起亚进入品牌破圈攀珠峰驮机车两年20万长城炮燃爆成都车展8月29日,第二十四届成都车展上,长城炮实现多炮齐发。不仅再次刷新长城炮速度完成第20万辆的交付,还上市了长城炮越野皮卡珠峰版,同时骑士拍档机车炮首发亮相,火炮电装炮旅装炮龙弹等也全新奔驰C级重磅上市成都车展轿车盘点本周日,一年一度的成都车展马上就要拉开帷幕了。官方称,本次车展亮相的新车要比年更多更有爆点。许多品牌的新车或在本次陈展中一一亮相,或是首发或是发布。那接下来就让我们来看看本次成都车夸大宣传冲销量?长安UNIT投诉指数暴增40倍近来,汽车门网的八月份投诉指数已经揭晓,许多车型的投诉指数或多或少出现了变动。但像长安UNIT在本月的投诉指数暴增40倍的还是很少见的,它也一跃成为了八月投诉指数最高的车型。那它到订单加价两万?30万的赛博版坦克300真的香吗?最近,在某二手交易平台上,涌现出了大量转让转订坦克300赛博版的交易帖。值得注意的是,这些转让赛博朋克版坦克300的订单是需要额外交钱的,从普遍的帖子上来看,一般来说需要额外交钱1计算机毕业设计之SpringBootVue应急物资调度系统系统介绍模拟应急事件发生时,从事件建立,物资申请,物资审批,物资流转等所有流程。功能模块应急物资,应急物资分类管理模块该模块主要是对应急物资以及其分类进行统一的管理,包含对应急物资计算机毕业设计之全网最好的Java家教平台系统开发技术SpringMVCSpringJDBCTemplateMySQL创新点1)接入了百度地图web服务API,在发布需求时填写家教地址能够匹配学员用户输入关键词的地点推荐列表,计算机毕业设计之SSM宠物领养救助系统平台功能模块功能图数据库设计ER图开发技术前端bootstrapjsp模板引擎ajaxjQuery百度echarts图表后端ssm框架maventomcat数据库mysql创新点特色数