仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1140|回复: 7
打印 上一主题 下一主题

[学习教程] MSSQL编程:有关日记紧缩

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:29:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Mysql的存储引擎接口定义良好。有兴趣的开发者可以通过阅读文档编写自己的存储引擎。紧缩
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSOFF
GO


CREATEPROCEDUREstrink_logspace
AS
SETNOCOUNTON
DECLARE@LogicalFileNamesysname,
@MaxMinutesINT,
@NewSizeINT

SELECT@LogicalFileName=rtrim(name),
@MaxMinutes=10,--最年夜实行工夫
@NewSize=10--最小空间
fromsysfileswherestatus&0x40=0x40

--Setup/initialize
DECLARE@OriginalSizeint
SELECT@OriginalSize=size--in8Kpages
FROMsysfiles
WHEREname=@LogicalFileName

SELECTdb_name()+日记原始巨细+
CONVERT(VARCHAR(30),@OriginalSize)+pages/8K或+
CONVERT(VARCHAR(30),(@OriginalSize*8/1024))+MB
FROMsysfiles
WHEREname=@LogicalFileName

CREATETABLEDummyTrans
(DummyColumnchar(8000)notnull)

--Wraplogandtruncateit.
DECLARE@CounterINT,
@StartTimeDATETIME,
@TruncLogVARCHAR(255)
SELECT@StartTime=GETDATE(),
@TruncLog=BACKUPLOG[+db_name()+]WITHTRUNCATE_ONLY
--Tryaninitialshrink.
DBCCSHRINKFILE(@LogicalFileName,@NewSize)

EXEC(@TruncLog)

--Wrapthelogifnecessary.
WHILE@MaxMinutes>DATEDIFF(mi,@StartTime,GETDATE())--timehasnotexpired
AND@OriginalSize=(SELECTsizeFROMsysfilesWHEREname=@LogicalFileName)--theloghasnotshrunk
AND(@OriginalSize*8/1024)>@NewSize--Thevaluepassedinfornewsizeissmallerthanthecurrentsize.
BEGIN--Outerloop.
SELECT@Counter=0
WHILE((@Counter<@OriginalSize/16)AND(@Counter<50000))
BEGIN--update
INSERTDummyTransVALUES(FillLog)--Becauseitisacharfielditinserts8000bytes.
DELETEDummyTrans
SELECT@Counter=@Counter+1
END--update
EXEC(@TruncLog)--Seeifatruncofthelogshrinksit.
END--outerloop

DBCCSHRINKFILE(@LogicalFileName,@NewSize)

SELECTdb_name()+日记最初巨细+
CONVERT(VARCHAR(30),size)+pages/8K或+
CONVERT(VARCHAR(30),(size*8/1024))+MB
FROMsysfiles
WHEREname=@LogicalFileName
DROPTABLEDummyTrans
PRINT***数据库日记紧缩乐成***
SETNOCOUNTOFF

GO
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO

--used
execstrink_logspace
MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQLAB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。
再现理想 该用户已被删除
沙发
发表于 2015-1-18 19:59:46 | 只看该作者
微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。
飘飘悠悠 该用户已被删除
板凳
发表于 2015-1-23 09:37:11 | 只看该作者
现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
飘灵儿 该用户已被删除
地板
发表于 2015-1-31 15:34:06 | 只看该作者
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
山那边是海 该用户已被删除
5#
发表于 2015-2-6 20:00:56 | 只看该作者
无法深入到数据库系统层面去了解和探究
简单生活 该用户已被删除
6#
发表于 2015-2-18 12:06:10 | 只看该作者
SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)
第二个灵魂 该用户已被删除
7#
发表于 2015-3-12 21:27:04 | 只看该作者
无法深入到数据库系统层面去了解和探究
因胸联盟 该用户已被删除
8#
发表于 2015-3-20 03:39:11 | 只看该作者
连做梦都在想页面结构是怎么样的,绝非虚言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-3-14 03:54

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表