|
|||
由于公司采用SQL Server 2005作为后台数据库,所以接触的机会多一些。个人感觉SQL Server 2005比SQL Server 2000有了很大的提高,但是按照微软的实力5年作出来这样的产品,还是让人感觉有些遗憾。数据库现在越来越向大而全的方向发展,但是数据库产品最最基础的东西才是最重要,也是最需要掌握的。这段时间主要关注了一下方面,在下面大致说说SQL Server 2005的新特性,顺便和Oracle的一些特性进行一下比较。请大家多多指教。 一、数据库设计方面 varbinary(max)代替image也让SQL Server的字段类型更加简洁统一。 XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!) 2、外键的级联更能扩展 3、索引附加字段 4、计算字段的持久化 5、分区表 分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右) 6、CLR类型 微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。但是作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题! 其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!还不是性能有问题!否则面向对象的数据库早就实现了! 建议使用CLR的地方一般是和应用的复杂程度或操作系统环境有很高的耦合度的场景。如你想构建复杂的算法,并且用到了大量的指针和高级数据模型。或者是要和操作系统进行Socket通讯的场景。否则建议慎重! 7、索引视图 索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。 8、语句和事务快照 语句级快照和事务级快照终于为SQL Server的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的! 9、数据库快照 原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜! 10、Mirror 二、开发方面 1、Ranking函数集 select ROW_NUMBER() OVER (order by aa) 会先执行aa的排序,然后再进行bb的排序。 可能有的朋友会抱怨集成的order by,其实如果使用ranking函数,Order by是少不了的。如果担心Order by会影响效率,可以为order by的字段建立聚集索引,查询计划会忽略order by 操作(因为本来就是排序的嘛)。 2、top 3、Apply 4、CTE 5、try/catch 6、pivot/unpivot SQL语句这方面个人感觉邹建和子陌都到了天神级的了。不再班门弄斧了。 三、DBA管理方面 1、数据库级触发器 2、多加的系统视图和实时系统信息 这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。 3、优化器的改进 4、profiler的新事件观察 5、sqlcmd 习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQL Server Management Studio的朋友使用。
1、登陆的控制 2、数据库物理框架没有变动 3、还是没有逻辑备份 4、SSIS(DTS)太复杂了 SQL Server的异构移植功能个人感觉最好了。(如果对比过SQL Server的链接服务器和Oracle的透明网关的朋友会发现SQL Server的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。) |