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

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;
  找到索引缺失的表,根据查询结果中的关键次逐一建立索引。

超全母乳喂养指南!母乳会遇到的问题看这篇就够啦如何高效开奶如果宝宝在身边妈妈的第一次哺喂应在宝宝出生的半小时左右,尽早的开奶有有助于刺激催乳素的产生,有利于更快下奶母婴同室可以保证按需哺乳,增进母子感情,促进乳汁的分泌母婴同室顺产VS剖宫产到底哪个好?终于有医生讲明白了,看完请多爱护女性黄女士今年33岁,目前已经怀孕9个多月了,越是临近预产期黄女士感到自己越害怕,尤其是近段时间,她总是无法控制自己的情绪,每天莫名感到心情烦躁。随着孩子在腹中慢慢长大,黄女士的肚子明有声绘本小黑鱼让孩子懂得勇气和协作乐爸导读今天分享的绘本故事叫小黑鱼,故事讲述了大海的一个角落里住着一群小鱼,大家都是红色的,只有一条是黑色的。有一天,一只凶猛的金枪鱼吃掉了所有的小红鱼,只有小黑鱼逃走了。他孤身一什么是真正意义上的富养女儿女儿要富养,是很多妈妈都认同的一种教育方式。但我要说,真正的富养并不是满足孩子的物质需求,而是给予孩子丰富的精神世界。这其中有父母要做好榜样示范作用,培养女儿正确的三观开阔格局,让定位百元级,长续航可追剧玩游戏的全能平板对于很多人来说,在日常生活中,平板电脑的使用场景越来越多,它可以提供比智能手机更便捷的体验,比如在学习游戏办公方面,特别是现在冬天到了,没有什么比窝在被窝里用平板电脑刷剧玩游戏更舒小米13系列外观揭晓!标准版正面绝了,Pro版细节打磨的更好延期的小米13系列无疑是目前最受关注的新机,这点从延期的这段时间里,小米13系列一直有保密的信息被曝光就看得出来。现在,随着小米13系列重新定档12月8日的新日期确定,官方又开始了深空之眼角色介绍游戏介绍深空之眼,是一款由勇仕网络自研自发的小队同屏3D动作手游,于2021年9月16日开启不计费删档测试。玩家将在游戏中化身深空之眼组织的管理员,与修正者小队并肩作战,清除视骸,Steam玩家一定要拥有的游戏是什么?给个清单吧1。饥压根不知道荒2。双人成反正我不行3。爱上各式各样美少女的火车4。陶艺捏泥巴爱好者大师5。侠盗号封号挂逼走开猎车手56。刺死你钱包不偿命客信条7。荒野大镖这次不能白嫖上海良心寺庙,不收门票斋饭免费吃,庭院禅意十足却鲜为人知虽然说我国的本土宗教应该是道教,但自从佛教从印度传入我国以后,在经过了一系列我国自己的传统文化的融合和本土化之后。佛教如今已经成了我们国家信众最多的宗教之一了,甚至在数千年来的封建老年人戴一口活动假牙,5个细节要注意,想要牙口好,护理少不了年纪大了,身体里面的骨质会逐渐流失,牙齿作为身体里最坚硬的骨骼,也逃不过松动的迹象。牙齿松动的老人饮食上面就要有所节制了,冷热酸甜不是想吃就吃,脸最爱吃的肉都不行,所以佩戴假牙是唯CBA最新排名!浙江稳居榜首,辽宁第2,广东冲进前8,上海倒数第3北京时间12月9日,CBA第十轮继续开打,对于积分榜的格局而言,由于大部分的球队经历窗口期调整,再加上外援的磨合到位,几乎每一轮都发生比较大的变化,尤其是前12队伍,第一集团和第二
太空易的辉煌职业生涯后姚时代的中国男篮门面担当易建联,今天聊聊他的传奇职业生涯。0203赛季随东莞银行参加CBA,初出茅庐拿下赛季最佳新人。广东东莞的789号相信是很多球迷美好的记忆。7个总冠军,5个李嘉诚卖掉125架飞机,一次性套现了332亿,难怪说他是隐形首富李嘉诚又有大动作了,他卖掉了旗下的125架飞机,一次性套现了332亿。其实这次出售,很多人才发现李嘉诚竟然有这么多飞机。其实很多人不知道,李嘉诚不仅仅拥有私人飞机,而且他名下还有1军旅歌手王丽达34岁做妈妈,结婚11年如初恋,丈夫人品被母亲夸小时候她曾经说过,没有钢琴也能学歌。如今几十年过去,她已经成了知名的歌者。王丽达是1978年生人,童年的一部分时光记忆,全部汇聚在株洲市的渌口镇。6岁之后,他们全家人搬到了市里居住从可见光到毫米波的超宽带碲光电探测器研究背景光电探测器可以将光转换为电信号,这是获取信息的核心。目前,光电探测技术正朝着高灵敏度和宽带响应方向发展。高性能宽带光电探测在成像通信医学等多种前沿技术中具有重要意义。此外,CBA三消息北控签下第三外援,杜锋用人引热议,徐长锁质疑体能爱国篮,爱CBA,我是洛姐,小伙伴们看完记得点赞!北控队一直是CBA联赛中的一支土豪球队,球迷们都非常清楚,只要联盟允许球队引进多名外援,北控队一般来说是绝对不会放过这种机会的,上风评为何不对李小璐仁慈?午夜梦回时她可曾后悔过李小璐之所以会摔得如此惨,相信远远不止她和贾乃亮之间的爱恨情仇,或许在观众的仇视背后,她的故事远比我们想象得要更加炫彩夺目!1981年出生的李小璐,也可谓是一位顺风顺水的公主,毕竟吴亦凡的背后,真是一幅娱乐百丑争鸣图,令人叹为观止当吴亦凡没有出事时,娱乐圈里的很多大佬以各种各样的方式夸赞他,如今吴亦凡倒了,那些曾经夸过他的大佬们,不是消失得无影无踪,就是选择了沉默。当昔日的顶流明星吴亦凡,在一夜之间沦为人人双12换机清单3款旗舰机跌到史低价,懂行人教你买对不买贵往年的双12都是雷声大雨点小,今年的双十二压根就没打雷,也能看得出来今年双12很多厂商的优惠都没有双11那么肆无忌惮,仿佛大家今年的业绩目标都已完成,但是也依然还有正在冲业绩的厂商构建中国自己的半导体产业体系为什么要自主研发国产CPU?胡伟武认为,实际上做芯片做整机并不重要,重要的是控制解决方案,控制产业什么时候升级,中国IT产业的根本出路在于构建自己新的体系。现在全世界信息产业有两个令人厌恶的五大明星,是天生不够讨人喜欢,还是因为行为举止?有些人说不出有多好,就是路人的人气极好,但事情有好就有坏。有喜欢的艺人,自然就有不喜欢的,甚至有的艺人看到都感到恼火和厌恶。是天生就不够讨人喜欢,还是因为他们的举止而令人厌恶?列举外交部再次督促美方停止针对有报道称,美方表示,此前向中方提出签证申请的官员不是参加北京冬奥会的外交或官方代表,外交部发言人赵立坚在12月28日例行记者会上说,美方一面声称不会有任何外交或官方代表,一面又