MYSQL编程:怎样猎取SQL Server数据库里表的占用容...
人力成本上的节省,MySQL的用户Spacemonkey实验室的首席执行官MitchPirtle如此表示:“维护MySQL使得你不需要一个年薪15万美元的DBA。server|数据|数据库实在只需利用体系内置的存储历程sp_spaceused就能够失掉表的相干信息如:sp_spaceusedtablename
以下是为了便利写的一个存储历程,目标是把以后的一切表的相干信息全体都保留在一个指定的内外面
CREATEPROCEDUREget_tableinfoAS
ifnotexists(select*fromdbo.sysobjectswhereid=object_id(N.)andOBJECTPROPERTY(id,NIsUserTable)=1)
createtabletablespaceinfo--创立了局存储表
(nameinfovarchar(50),
rowsinfoint,reservedvarchar(20),
datainfovarchar(20),
index_sizevarchar(20),
unusedvarchar(20))
deletefromtablespaceinfo--清空数据表
declare@tablenamevarchar(255)--表称号
declare@cmdsqlvarchar(500)
DECLAREInfo_cursorCURSORFOR
selecto.name
fromdbo.sysobjectsowhereOBJECTPROPERTY(o.id,NIsTable)=1
ando.namenotlikeN#%%orderbyo.name
OPENInfo_cursor
FETCHNEXTFROMInfo_cursor
INTO@tablename
WHILE@@FETCH_STATUS=0
BEGIN
ifexists(select*fromdbo.sysobjectswhereid=object_id(@tablename)andOBJECTPROPERTY(id,NIsUserTable)=1)
executesp_executesql
Ninsertintotablespaceinfoexecsp_spaceused@tbname,
N@tbnamevarchar(255),
@tbname=@tablename
FETCHNEXTFROMInfo_cursor
INTO@tablename
END
CLOSEInfo_cursor
DEALLOCATEInfo_cursor
GO
实行存储历程
execget_tableinfo
<P>查询运转该存储历程后失掉的了局
select*
fromtablespaceinfo
orderbycast(left(ltrim(rtrim(reserved)),len(ltrim(rtrim(reserved))如果你在一个遵循GPL的自由(开源)项目中使用MySQL,那么你可以遵循GPL协议使用MySQL。然而,如果你的项目不是在GPL协议下的话,你必须为使用MySQL来支付许可费用,或者你可能因为这个因素而将你的项目改为遵循GPL。 作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题! 不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理? 代替了原来VB式的错误判断。比Oracle高级不少。 这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片? 语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的! 换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的 比如日志传送、比如集群。。。 但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。 原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!
页:
[1]