ITPub博客

首页 > 数据库 > SQL Server > SQL SERVER学习

SQL SERVER学习

SQL Server 作者:wo515800082 时间:2011-07-31 03:02:33 0 删除 编辑

SQL SERVER学习,太混杂了!

1.磁盘柜上有14块73G的磁盘, 数据库为200G 大小包括日志文件,如何设置磁盘(要解释这14磁盘是怎么用的)?

这个问题该当是摸底硬件知识和数据库物理安排。

率先必需懂得这些磁盘是否要用于储藏数据库备份文件和数据库功能(读/写)要求。来定夺raid的级别。
1)、万一偏重于功能琢磨,而且无须储藏数据库备份文件的话,琢磨利用raid0+1,这么可利用的磁盘容量为:14*73*50%=511G。
2)、万一读/写功能要求不高,而且还比拟抠门的话,能够琢磨raid5,这么可利用的磁盘容量为:13*73=949G。

至于如何利用该当是说数据库物理文件的安排。当心说出将tempdb,data file,log file离别储藏以收缩I/O竞争即可。其告终在的条带化磁盘等闲都会积极将文件分存,人为的散布曾经越来越不重要了。

2.有两服务器云集,离别为node1和node2 目前要打win200系统补丁,打完后,要重新启用,如何打补丁,不能波及用户利用(要用云集的术语翔实解释)。

这个翔实垄断有点忘了。大约是:率先看哪个节点正在利用,穿越节点IP(私有)拜会另一个安逸节点,为其打上补丁,然后在云集管教器中静止该节点(也能够用号召行措施),重新启用。等到启用告终,将切换利用节点,为另一个节点打补丁。然后重新启用。

3.有一个A 数据库,离别复制到B和C B 要求 每次数据更新 也同时更新,C 每天更新顺次就行,如何制订复制计策!

这个该当摸底的是复制知识。

a->b
1)、万一利用SQL Server复制功能,那么让a->b利用事务性复制措施(同步复制)。
2)、万一表不多,也能够自己写引发器,利用linkserver+distribute transaction。

a->c
1)、万一利用SQL Server复制功能,那么让a->b利用快照复制措施,在某一工夫点举行顺次性复制。
2)、也能够自己写bat,将a备份后,穿越ftp传输备份介质,还原c。(比拟繁琐,不评比)


4.有一个order 表,有90个字段,20个索引,15个复合索引,其中有3个索引字段超过10个,如何举行优化

这个问题问的比拟没程度。你不翔实解释这个表的利用措施(读写类的,还是几乎是静态表),就问人家怎么优化?!!还不及问问索引的散布拜会原理更好。

看得出他就想让你说:那三个索引超过10个,B树遍例效率很低,贴切收缩字段数目。万一是SQL2005,能够将抉择性不好的字段放在“索引附带字段”中,以保证索引遮蔽。而且SQL Server由于有锁升级的缺点,能够琢磨拆开表。


5.有一个数据库200G大小,每天添置50M 批准用户随时拜会,制订备份计策(翔实解释)。

这种情形能够批准增量备份措施。每周日做顺次全备份,周一到周六作增量备份(由于数据量较少,能够琢磨每30分钟增量备份顺次)。这么能够尽量收缩功能花费,而且万一transaction log失落的情形下,能够保证最多失落30分钟数据。


6.管教50台数据库,平时工作是察看数据库作业是否告终,你该如何告终这项察看工作?

这个比拟容易。在每台机器上发生linkserver,然后在DBA管教服务器上做个散布式视图,每次查询该视图,各个机器上的作业情形一目了然。散布式视图写法:

create view vw_job
as

select '机器一' as MName,* from linkserver1..sysjobactivity
union all
select '机器二' as MName,* from linkserver2..sysjobactivity
union all
select '机器三' as MName,* from linkserver3..sysjobactivity
。。。
7.自定义函数和存储过程的差异是什么,什么情形下只能用自定义函数,什么情形下只能用存储过程

这个该当是摸底存储过程编写经验。等闲自定义函数重要用于其他sql中的调用,如:

select yourfunc(...) from table

这种情形下,等闲只能穿越函数告终。

存储过程的功能要远远强于函数,例如动态厉行sql(sp_executesql)的利用和一些特异的功能,自定义函数中是不扶持的,只能用存储过程告终。


8.SQL 2005 的新个性是什么 ? 与oracle 有什么差异?

SQL 2005 的新个性等闲都是和Oracle学的。

下面是当时被leimin逼着写的,你能够做个参看:

一、数据库设计方面
1、字段种类。
varchar(max)/nvarchar(max)种类的引入大大的长进了编程的效率,能够利用字符串函数对CLOB种类举行垄断,这是一个亮点。然而这就引起了对varchar和char效率谈论的老问题。究竟如何分配varchar的数据,是否会揭示大规模的碎片?是否碎片会引起效率问题?这都是必需进一步摸索的东西。

varbinary(max)轮换image也让SQL Server的字段种类更加简明统一。

XML字段种类更好的处理了XML数据的垄断。XQuery确乎不错,然而个人对其没好感。(CSDN的开发者该当是相当的熟了!)

2、外键的级联更能伸展
可能大局部的同行在设计OLTP系统的时候都不甘心发生外键,都是穿过程序来扼制父子数据的全面性。然而再开发调试阶段和OLAP环境中,外键是能够发生的。新版本中加入了SET NULL 和 SET DEFAULT 属性,能够供给能好的级联设置。

3、索引附带字段
这是一个不错的新个性。固然索引的附带字段未曾索引键值效率高,然而相比拟射到数据表中效率还是长进了许多。我做过试探,在我的实验环境中会比照射到表中长进30%左右的效率。

4、计算字段的永远化
本来的计算字段其实和虚构字段很像。只是管教方面好了而已,功能方面长进不多。然而SQL2005供给了计算字段的永远化,这就长进了查询的功能,然而会激化insert和update的担负。OLTP慎用。OLAP能够大规模利用。

5、分区表
分区表是个亮点!从分区表也能看出微软要做大作强SQL Server的决计。材料许多,这里不翔实说。然而关键打听的是:目前的SQL Server2005的表,都是默感受分区表的。因为它要扶持挪动窗口的这个个性。这种个性对历史数据和实时数据的处理是很有帮助的。
然而必需当心的一点,也是我利用过程中觉察的一个问题。在发生function->www.do1k.com;schema->table后,万一在现有的分区表上发生未曾显式声明的聚集索引时,分区表会积极变为非分区表。这一点很让我猜忌。万一你感受我的非分区索引无法对起子分区,
你能够提醒我一下呀!未曾任何的提醒,直接就变成了非分区表。不懂得这算不算一个bug。大家也能够试试。

分区表效率问题确定是大家关怀的问题。在我的试探中,万一按照分区字段举行的查询(过滤)效率会高于未分区表的雷同语句。然而万一按照非分区字段举行查询,效率会低于未分区表的雷同语句。然而随着数据量的增大,这种成本差距会逐渐减小,趋于混同。(500万数量级只相差10%左右)

6、CLR种类

微软对CLR作了大篇幅的宣扬,这是因为数据库产品终于融入.net系统中。最开始我们也是狂喜,感受对象数据库的一些观念能够告终了。然而作了些试探,觉察利用CLR的存储过程或函数在到达定然的阀值的时候,系统功能会呈指数级下滑!这是极其风险的!只利用几个可能未曾问题,当一旦大规模利用会构成严重的系统功能问题!

其实能够做一下类比,Oracle等数据库产品老早就扶持了java编程,而且供给了java池参数作为用户搭配接口。然而目前有哪些系统大度利用了java存储过程?!连Oracle自己的利用都无须为什么?!还不是功能有问题!否则面向对象的数据库早就告终了!

提倡利用CLR的地方等闲是和利用的混杂程度或垄断系统环境有很高的耦合度的场景。如你想发生混杂的算法,并且用到了许多的指针和高级数据模型。可能是要和垄断系统举行Socket通信的场景。否则提倡端庄!

7、索引视图

索引视图2k就有。然而2005对其效率作了一些改进然而schema.viewname的作用域真是太局限了它的利用面。还有一大堆的环境参数和种种局限都让人对它有点后退。

8、语句和事务快照

语句级快照和事务级快照终于为SQL Server的并发功能带来了突破。个人感受语句级快照大家该当利用。事务级快照www.boston-eo.info,万一是高并发系统还要慎用。万一一个用户总是被提醒修正不获胜要求重试时,会杀人的!

9、数据库快照

原理很容易,对要求伙计夫计算某一工夫点的报表生成和防用户垄断讹谬很有帮助。然而比起Oracle10g的闪回技巧还是细粒度不够。惋惜!

10、Mirror
Mirror能够算是SQL Server的Data guard了。然而能不能被大伙用起来就不懂得了。

二、开发方面

1、Ranking函数集
其中最知名的该当是row_number了。这个终于处理了用临时表生成序列号的历史,而且SQL Server2005的row_number比Oracle的更良好。因为它把Order by集成到了同时,无须像Oracle那样还要用子查询举行封装。然而大家当心一点。如下面的例子:

select ROW_NUMBER() OVER (order by aa)
from tbl
order by bb

会先厉行aa的排序,然后再举行bb的排序。

可能有的朋友会埋怨集成的order by,其实万一利用ranking函数,Order by是少不了的。万一担心Order by会波及效率,可感受order by的字段发生聚集索引,查询计划会疏忽order by 垄断(因为本来即便排序的嘛)。

2、top
能够动态传入参数,省却了动态SQL的拼写。

3、Apply
对递归类的树遍历很有帮助。

4、CTE
个人感受这个真是太棒了!阅读打听,极其有时代感。

5、try/catch
轮换了本来VB式的讹谬推断。比Oracle高级不少。

6、pivot/unpivot
个人感受未曾case直观。而且默认的第三字段(还可能更多)作为group by字段很轻率构成新手的讹谬。

三、DBA管教方面

1、数据库级引发器
记得在最开始利用2k的时候即将用到这秉功能,惋惜2k未曾,万网域名管理目前有了作处理计划的朋友会很开心吧。

2、多加的系统视图和实时系统消息

这些东西对DBA挑优极其有帮助,然而感受粒度还是不太细。

3、优化器的改进
始终以来个人感受SQL Server的优化器要比Oracle的伶俐。SQL2005的更是比2k伶俐了不少。(有次作试探觉察有的语句在200万级时还比50万级的雷同语句要快show_text的一些提醒未曾找到解释。始终在独到。)
论坛例子:
http://community.csdn.net/Expert/topic/4543/4543718.xml?temp=.405987

4、profiler的新事件考察
这一点很好的加深了profiler的功能。然而提到profiler提醒大家当心一点。windows2003要安装sp1补丁能力启用profiler。否则点击未曾反响。

5、sqlcmd

适应敲号召行的朋友可能会爽一些。然而功能有限。合乎机器跑不动SQL Server Management Studio的朋友利用。

四、缺憾

1、登陆的扼制
始终缺憾SQL Server的登陆无法分配CPU/内存挪借等指标数。万一你的SQL Server给旁人分配了一个只能够读几个表的权限,而这个家伙疯狂的死循环举行连接查询,会给你的系统带来很大的担负。而SQL Server万一能像Oracle一样可感受登陆分配如:5%的cpu,10%的内存。就能够处理这个破绽。

2、数据库物理框架未曾改变
undo和redo都放在数据库得transaction中,个人感受是个败笔。万一说我们在设计数据库的时候琢磨分多个数据库,可能能在定然程度上避免I/O效率问题。然而同样会为索引视图等利用带来繁琐。看看行级和事务级的快照数据放在tempdb中,就能感受到现在架构的没趣。

3、还是未曾逻辑备份
备份方面可能还是一个老大难的问题。不能独自备份几个表总是感受不爽。灵便备份的问题不懂得什么时候能力处理。

4、SSIS(DTS)太混杂了

SQL Server的异构移植功能个人感受良好了。(万一比拟过SQL Server的链接服务器和Oracle的透明网关的朋友会觉察SQL Server的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)
过去的DTS轻便容易。然而目前的SSIS固然功能壮大了许多,然而总是让人感受太繁琐。看看论坛中盘问SSIS的贴子就懂得。做的功能太壮大了,经常会有许多用户不会用了。


与oracle 有什么差异?

这个问题相当***!不同点我能给他讲一天!率先名字就不一样嘛!! :)


9.DBA 的功德该当有哪些,你有哪些, 有什么欠缺的?

10。万一想搭配SQL Mail 该当在服务器安装哪些软件!混杂度当然是相对的,但当我们面对,

子集和

第一局部:绪论

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8511215/viewspace-1118040/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论