BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

SQL Server面试问答之31天汇总

| 作者 Jonathan Allen 关注 594 他的粉丝 ,译者 高翌翔 关注 0 他的粉丝 发布于 2011年8月8日. 估计阅读时间: 3 分钟 | AICon 关注机器学习、计算机视觉、NLP、自动驾驶等20+AI热点技术和最新落地成功案例。

Pinal Dave最近发布了名为“SQL Server——面试问题及答案”的博文,这系列博文由31个部分组成,始于诸如“规范化是什么?”等常规主题,进而拓展到诸如“在执行ALTER DATABASE期间,ROLLBACK IMMEDIATE与WITH NO_WAIT之间的区别是什么?”等鲜为人知的主题。而且其中还涉及到数据仓库,甚至有些访客回复还提到了SQL Azure。

为了吸引你去阅读他的系列博文,我们特意在这里引用了一些你即将学到的知识。例如,第7日中包括关于不同类型锁的内容。

  • 共享锁:用于不更改或不更新数据的操作(只读操作),比如SELECT语句。
  • 更新锁:用于可更新的资源。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见的死锁。
  • 排他锁:用于数据修改操作,比如INSERT 、UPDATE、或DELETE。确保不会同时对同一资源进行多重更新。
  • 意向锁:用于建立锁的层次结构。意向锁的类型如下:意向共享(IS)、意向排他(IX)、和意向排他共享 (SIX)。
  • 架构锁:在执行依赖于表架构的操作时使用。架构锁类型包括架构修改(Sch-M)和架构稳定性(Sch-S)。
  • 大容量更新锁:在向表进行大容量数据复制且指定了TABLOCK提示时使用。

此外,这系列文章还为在T-SQL下工作提供了很多小窍门,比如如何通过读取@@Rowcount或者@@Recordcount来清除存储在另一个变量中的值。

如果在Error检查语句之后检查@@Rowcount,那么由于@@Rowcount将被复位,因此@@Recordcount将得到0。而且如果在错误检查语句之前检查@@Recordcount,那么@@Error将会复位。为了在同一时间获得@@Error和@@Rowcount,我们应将二者包括在同一语句中并将它们存储在局部变量中。SELECT @RC = @@ROWCOUNT, @ER = @@ERROR

当你从OLTP(On-Line Transaction Processing,联机事务处理)和规范化的表的世界迁移到需要OLAP(On-Line Analytical Processing,联机分析处理)风格服务器的维度建模时,即使经验丰富的开发者可能也会发现这个系列是很有帮助的。

查看英文原文:31 Days of SQL Server Interview Questions and Answers

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT