从去年4月到现在的开博以来,我写了不少关于MS SQL的文章,感觉自己对MS SQL越来越了解,今天下午在一个SQL Server的技术群文档看到了一个文档,是黄钊吉上传的,我对他的印象,总觉得他是MS SQL的大牛,不管是从他的博客,还是出版的《 数据库技术丛书:SQL Server性能优化与管理的艺术》。前段时间看他在群里招人,是以师带徒的形式,估计是升职,或者自己要请假一段时间,找个靠谱的助手。看了下自己对MS SQL的了解,还是觉得不能太胜任。这事也就随着群里聊天记录的不断刷屏慢慢淡忘了。今天在群里翻看了下群文件,发现了"我踩过的听过的那些坑.txt"文档,我看了下,对自己蛮有启发的。

因此,我打算写篇文章来回答他在文档里提的一些问题,我觉得,这些问题对于想从事DBA工作的都有一定的借鉴意义,本人水平有限,如果回答不正确,欢迎各位留言帮我一起修正,谢谢大家!

  1. SQL Server 最小存储单元是什么?多大?再上一层存储单元是什么?多大?
    答:页或page,8kb大小,上一层是区,一个区有8个页,共64k。
  2. 堆表和非堆表的本质区别?
    答:堆表没有聚集索引,非堆表有,看具体情况,可以是聚集索引和非聚集索引。
  3. SQL Server目前有多少种高可用技术?分别是什么?
    答:这个不是很清楚,目前只知道公司现在服务器在用的群集技术,有2个节点,允许一台服务器当机,另一台服务器会自动继续服务。
  4. SQL Server有多少种索引?尽可能列出来。
    答:总的有聚集索引和非聚集索引,另外有覆盖索引和过滤索引。聚集索引和非聚集索引都是B树结果,区别是聚集索引的叶子节点保存的是表的聚集键,非聚集索引根据所在表的不同,如果在聚集表(表里已经有一个聚集索引),则页子节点保存的是指向聚集索引的聚集键,如果在堆表(没有索引),则叶子节点保存的是RID(即文件号:页号:槽号)。覆盖索引是非聚集索引的叶子节点也保存了要查询的列,可以用来避免书签查找。过滤索引包含条件的索引,这些索引只针对符合条件的数据进行建立,可以针对命中这些条件的记录提高查询效率。
  5. SQL Server有多少个系统库?
    答:4个,mater,model,msdb,tempdb。
    其实还有两个系统数据库,一个是Resource Database,另一个是distribution(建了复制才有)。(感谢FishParadise完善)
  6. 如果一个报表存储过程很慢,你的思路是什么?
    答:看下执行计划,看看是不是缺少索引,还是统计信息过期,还是具体的查询语句问题。
  7. 图形化执行计划阅读顺序?
    答:从右到左,从下到上。
  8. 怎么在SSMS中得知某个SQL语句的物理读、逻辑读次数?
    答:可以使用SET STATISTICS IO  ON。
  9. Profiler/SQL Trace和Extent Event相比,在过滤数据的行为上有什么不同?
    答:目前只了解过Profile,可以用它来跟踪SQL语句,区别不知道。
  10. 有下面一个表:
    1 CREATE TABLE T(ID Int identity(1,1),aqty int,bqty int)

    大致数据如下:

    1 1 2
    2 2 3
    3 2 1
    4 3 5
    ....
    假设数据有几百万,现在有个语句很慢:

    1 SELECT ID
    2 FROM T
    3 WHERE aqty>bqty

    列上已经有索引,你能想到root cause是什么?你会怎么优化?

    答:表扫描。(感谢韩庆刚完善。)
    补充:这个当然是表扫描,条件无法使用索引,只能一条条的判断了。而且表扫描也不是最慢的,在有些场景下如果索引和查询使用的不好会导致性能暴跌,甚至不如表扫描。(感谢Daniel Cai完善)

  11. 你觉得为什么跨服务器多表关联查询时“可能”性能很差?你能想到哪些可以提升跨服务器查询时性能低下的方法?
    答:暂无思路。
    可以参考下分布性查询或分布性事务,您也许有所发现:)(感谢FishParadise完善)
  12. 如何清空有外键的表的数据?
    答:可以尝试取消外键约束,再用truncate后加会外键约束。
  13. LDF暴增怎么办?你先查哪个DMV?
    答:可以先进行一次完成备份,收缩下日志;空间允许的情况下,先修改日志文件大小,待收缩后,再还原为原来的大小。sys.dm_db_log_space_usage
  14. 如果某个JOB的所有者是sa,能不能禁用sa?
    答:应该不可以吧,除非还有别的管理员账号。
    你可以测试下。如果不行,那么原来用sa创建的job,后来禁用了sa,所有job都不能运行吗?(感谢FishParadise完善)
  15. SSMS修改一个表的一列的数据类型 ,与用T-SQL实现ALTER TABLE 的底层实现区别在哪?
    答:不是很清楚,一般小表用SSMS可以修改成功,大表会提示超时,只能用T-SQL语句来修改。
  16. UNION 和UNION ALL从性能上的区别是什么?
    答:暂无思路。只知道UNION可以踢掉重复的记录。
    补充:如果确认两个查询无重复记录用UNION ALL更好些,不需要去重步骤。(感谢韩庆刚完善。)
  17. 初始安装SQL Server 2008及其以上版本时,SQL Server默认是什么启动账号?
    答:应该是network service。
  18. 不在域中的两台服务器做数据库镜像,与在域环境相比,必不可少的一个操作是什么?
    答:设置host文件。(感谢FunLove回答)
    必需创建证书。这是镜像在域或非域中最大的区别。(感谢FishParadise完善)
  19. 事务复制对表最起码有哪个硬性要求?
    答:表必须有主键!(感谢davidhou回答)
  20. 你能不能猜到什么结果?为什么?
    1 DECLARE @demo VARCHAR
    2 SET @demo = '你猜猜会怎样?'
    3 SELECT @demo

    答:没有指定VARCHAR长度会显示空白,在SSMS里运行的真的是空白。(感谢FunLove回答)
    补充:你没有指定varchar长度,默认是长度1,中文占两个字节,显示?或者乱码,如果是下列语句:

    1 DECLARE @demo VARCHAR
    2 SET @demo = '123'
    3 select @demo

    会显示1。(感谢FunLove回答)
    补充:因为DECLARE @demo VARCHAR没有定义长度,而且存中文更建议用NVARCHAR。(感谢韩庆刚完善)

  21. 怎么优化这段代码?

    1 USE AdventureWorks2014  --AdventureWorks均可不一定是2014
    2 GO
    3 DECLARE @date DATE = '2013-09-30'
    4 SELECT SalesOrderID,
    5     SalesOrderDetailID,
    6     ModifiedDate
    7 FROM Sales.SalesOrderDetail
    8 WHERE CONVERT(VARCHAR(20), ModifiedDate, 23) = CONVERT(VARCHAR(20), @date, 23)

    答:不应该在条件里使用表达式,应该做如下修改:

    1 USE AdventureWorks2012  --AdventureWorks均可不一定是2014
    2 GO
    3 DECLARE @date DATE = '2013-09-30'
    4 SELECT SalesOrderID,
    5     SalesOrderDetailID,
    6     ModifiedDate
    7 FROM Sales.SalesOrderDetail
    8 WHERE ModifiedDate = CONVERT(datetime,@date)

  22. 十万左右的数据要作为临时数据,你用临时表还是表变量?大概说说理由。
    答:使用临时表,临时表上可以建立索引,可以使用统计信息来优化。
  23. 入职后大概工作:
    • 完成大概5~8份文档,所以你需要有一定的文档编写水平。
    • 协助我完成数据库源代码管控任务。
    • 逐步接手目前为止8台服务器大概60个数据库,目前只用了事务复制(这个最重要,…………你接不起常规管理到时就搞死我)
    • 常规管理包含但可能不仅限于:
      • 备份还原
      • 处理复制问题(不会的找X东大牛)
      • 初中级T-SQL优化
      • 数据库日常监控
    • 一年之内逐步读完这些书,不好意思,我没有中文版,也不会翻译好然后给你读
      • 《Training Kit (Exam 70-461)》
      • 《Training Kit (Exam 70-462)》
      • 《Microsoft SQL Server 2008 Internals》
      • 《microsoft_sql_server_2012_security_cookbook》
      • 《Syngress.Securing.SQL.Server.Feb.2011》
      • 《Troubleshooting Performance Problems in SQL Server 2008》
    • 协助我实现SQL Server运维自动化,但是目前我还没有想法,只知道要做。
    • 能满足的以后还有机会做你想做的事情。

《Training Kit (Exam 70-461)》和《Training Kit (Exam 70-462)》需要的童鞋可以站内短信联系(发现自己可以用微云分享,现已经加上链接),由于文件太大,不能上传到博客园文件,我会发到你邮箱。

对于上述加粗的问题,大家如有更好的回答,欢迎帮我一起修正。

让我们一起继续前行!

注:此文章为WoodyTu学习MS SQL技术,收集整理相关文档撰写,欢迎转载,请在文章页面明显位置给出此文链接!
若您觉得这篇文章还不错请点击下右下角的推荐,有了您的支持才能激发作者更大的写作热情,非常感谢!

sqlserver DBA基础知识相关推荐

  1. SqlServer数据库基础知识整理(不断更新~)

    1.SQL Server中@@ROWCOUNT返回受上一语句影响的行数,返回值类型为 int 整型. 如果行数大于 20 亿,则需要使用 ROWCOUNT_BIG. @@ROWCOUNT和@@ERRO ...

  2. delphi7存取配置文件与sqlserver数据库连接_SQL Server基础知识概念要点详细讲解

    SQL Server基础知识概念要点详细讲解 目录 基础概念 1.网状模型数据库 2.层次模型数据库 3.关系模型数据库 知识点实例总结 基础概念 SQL语言中,between and表示包括两边参数 ...

  3. SQLServer DBA 三十问(加强版)

    SQLServer DBA 三十问(加强版) 原文链接:http://www.cnblogs.com/fygh/p/3288701.html 距离最初发布SQLServer DBA 三十问 已有一年多 ...

  4. MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物

    MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物 前言 1.MySQL概述 1.1数据库相关概念 1.2MySQL数据库 1.2.1版本 1.2.2下载 1.2.3安装 ...

  5. Analysis Services基础知识——深入SQL Server 2008

    Analysis Services基础知识 --深入SQL Server 2008 这一节中,我们将介绍Analysis Services的体系结构,这个体系结构在SQLServer2005中建立,并 ...

  6. Quartz.NET基础知识概述

    Quartz.NET是什么 由于我现在使用的Quartz.NET2.2版本,相对2.x变化不大,主要是相对于1.x更新了很多东西,如下基础知识摘录网络. Quartz.NET是一个开源的作业调度框架, ...

  7. Oracle 基础知识——客户端连接oracle数据库服务端的四种方法

    Oracle基础知识 Oracle Database 11g 快捷版 (Oracle Database XE) 是一款基于 Oracle Database 11g 第 2 版代码库的小型入门级数据库, ...

  8. SQL Server基础知识概念要点详细讲解

    SQL Server基础知识概念要点详细讲解 目录 基础概念 1.网状模型数据库 2.层次模型数据库 3.关系模型数据库 知识点实例总结 基础概念 SQL语言中,between and表示包括两边参数 ...

  9. 2020年信息系统项目管理师真题讲解:基础知识1/3

    2020年信息系统项目管理师真题讲解:基础知识,共75题真题,本实体解析分三篇文章,本篇为第一篇 1.(   )使系统的描述及信息模型的表示与客观实体相对应,符合人们的思维习惯,有利于系统开发过程中用 ...

最新文章

  1. java培训面试技巧分享
  2. centeros7网络服务无法启动_Linux网络服务02——DHCP原理与配置
  3. 35张图,看懂肠道和大脑的魔性关系,绝对涨知识!
  4. Dell服务器使用集成RAID卡
  5. 如何在数据表中存取图片 - 回复 三足乌 的问题
  6. 无法登录a6服务器可以修复么,航天A6登录常见问题
  7. Intel 中断和异常处理 - 目录
  8. 如何让linux自动回收内存,linux – 什么可以导致非活动内存增加以及如何回收它?...
  9. Altium AD20分屏显示,交叉选择模式使用,原理图和PCB器件的同步选择
  10. Atitit  hre框架v5 新特性  HREv5
  11. 使用ERStudio创建数据表ER图并导出数据表的SQL(DDL)语句
  12. java对象创建、对象内存布局、对象的访问定位、句柄池、直接指针
  13. QQ农场外挂、QQ牧场外挂专偷QQ号
  14. GD32F103学习笔记(4)——GPIO接口使用
  15. 《自然语言处理技术综述(第三版)》(1)----正则表达式
  16. 电脑控制台命令的简单操作方式(黑窗口)
  17. 【linux kernel】一文总结initramfs的使用
  18. 互斥锁Mutex解锁两次
  19. php linter,是否有PHP的linter使所有异常像Java一样显式?
  20. matlab程序作分形蕨,matlab学习第一天笔记

热门文章

  1. 关于Modelsim SE软件Fatal License Error的解决方法
  2. QT中的中英文翻译(ts和qm使用方法)
  3. 计算机应用文摘 2008年12月下 第24期
  4. 朗读评价语言集锦_课堂评价语言集锦
  5. 现在做什么小生意赚钱?
  6. 基于android的理财软件技术,基于Android的个人理财系统的设计与实现
  7. 软件测试到底在测啥?看完这篇,你就懂!
  8. aardio - vlist虚表控件的使用
  9. Shell是什么?1分钟理解Shell的概念!
  10. 杭州 GraphQLParty 第一场-GraphQL 数据聚合层解放前后端文字版