很多开发人员都想成为一名dba,也有很多人一开始就把自己定位成为一名dba,dba究竟需要掌握些什么知识和技能呢?以下是我 做dba工作和面试dba时,整理的一些dba方面的三十个问题,三十个大问题中还有许多小的问题,涵括了sqlserver dba比较多的技 术知识点,
很多开发人员都想成为一名dba,也有很多人一开始就把自己定位成为一名dba,dba究竟需要掌握些什么知识和技能呢?以下是我
做dba工作和面试dba时,整理的一些dba方面的三十个问题,三十个大问题中还有许多小的问题,涵括了sqlserver dba比较多的技
术知识点,与大家分享下,希望给有志做dba的朋友们一些帮助:
1. char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储
过程和使用t-sql查询数据有啥不一样;
2. 系统db有哪些,都有什么作用,需不需要做备份,为什么;损坏了如何做还原(主要是master库);
3. 有哪些操作会使用到tempdb;如果tempdb异常变大,可能的原因是什么,该如何处理;
4. index有哪些类型,它们的区别和实现原理是什么,索引有啥优点和缺点;如何为sql语句创建合适的索引,索引创建时有哪些需要
注意的项,如何查看你创建的索引是否被使用;如何维护索引;索引损坏如何检查,怎么修复;t-sql有更好的索引存在,但是运行
时并没有使用该索引,原因可能是什么;
5. 视图上我们能建索引吗,如果能建的话,会啥好处和坏处;视图上建索引和表上建索引有啥区别;
6. job信息我们可以通过哪些表获取;系统正在运行的语句可以通过哪些视图获取;如何获取某个t-sql语句的io、time等信息;
7. 在线系统,一个表有五千万记录,现在要你将其中的两千万条记录导入到另一台服务器的某个表中,导完后,需要将这两千万数据删
除,你预备如何处理,优缺点是什么;
8. 数据库服务器报磁盘空间不足,你将如何应对,要求尽快恢复;
9. 临时表、表变量、cte(公用表表达式)有啥区别和联系,保存位置有啥不一样,使用时如何决定选哪种;
10. sqlserver有哪些隔离级别,默认级别是哪个;数据库有哪些主要的锁类型;行版本控制是如何实现的;
11. 死锁如何跟踪;阻塞如何跟踪和查找;发现有问题的语句后,如何进行处理;用profile做跟踪时,一般我们需要跟踪哪些事件;
12. windows日志主要有哪几种,sqlserver日志一般保留几个,什么情况下会产生新的sql日志;数据库日志恢复模式有哪几种,
区别是什么;数据库日志突然变得很大,而且你无法收缩,可能的原因是什么,怎么查找原因,分别将如何处理;
13. 分区表和分区视图是什么概念,一般是在什么情况下使用,有啥好处;
14. 如何比较两个同结构的表数据的差异;如果表损坏了,如何修复;如何在备份文件有问题的情况下尽量还原数据;如何将一个表
的identity属性归零;
15. checkpoint、lazywriter和eager write的区别和作用;ddl trigger 和 dml trigger的区别和作用;
16. mirroring 和logshipping 的区别和使用场景;sqlserver的mirroring与oracle的哪像技术比较接近,它们的区别是啥;
17. mirroring的搭建步骤,mirroring三种模式的区别,mirroring 中同步和异步的原理和要求,搭建了mirroring后,需要对数据库日志做
什么处理;
18. replication配置和使用场景;replication有哪几种模式;push和pull有啥区别;搭建replication后会产生一个什么库;报错时
用什么来查看报错的具体语句,清理掉某个库的replication使用什么语句,查看同步链信息主要通过哪些表;
19. replication发布端的表能truncate吗,为什么;replication identity列如何处理、缺失字段错误如何处理、主键冲突错误如何处
理、如何跳过指定的错误、订阅端表被删除了如何处理、大规模改动数据如何处理;某条同步链因为其中的某个表一次性改动数据很
大造成同步链的严重延时,要求尽快恢复同步链,如何处理。
20. ssb(service broker)使用场景,如何创建,都会创建些什么对象,有啥优缺点,主要通过什么方式实现不同服务器之间的消息
传递;可以通过哪些方式排错;
21. 跟踪数据库数据的变更有哪些方法,它们(cdc(change data capture)、ct(change tracking)、trigger等)使用上的
优缺点;
22. sql调优步骤,如何来判断sql语句存在问题,怎么定位问题,如何解决这些问题;nested join、merge join和hash join的区别;
23. 数据库故障排查步骤,如何处理紧急数据库问题;
24. 如何考虑和制定数据库备份计划;公司要求对一个非常大的数据库或者表做备份,而且要求数据量尽可能少丢失,你可能会采用什么
方法;
25. 如果要你做数据库监控,你会关注那些指标(包括sqlserver和windows),如何制定性能基线,你使用过哪些监控软件;
26. 数据库迁移步骤;重建一套比较大的测试系统(最少10个数据库实例),如果原来db数据量都不大,但db比较多,新搭建的系统数据
都不需要,如何快速实现;
27. 创建cluster 简要步骤,最少需要几个ip,需要安装些什么服务,需要哪些固定的磁盘,raid如何设置,磁盘如何划分;sqlserver
cluster与mysql cluster 和 oracle rac的区别等;
28. 如果遇到一个性能不理想、代码复杂的存储过程,很难通过数据库方面的调优来解决问题,你如何说服开发人员修改它(可能开发人
员并不愿意修改);
29. 你有没有遇到过因为你的误操作造成系统故障发生的情况,你当时是如何处理的;如果没有,假定你误删了一个重要的表,你该如何
处理;
30. 你准备成为一名什么样的dba,为此你将如何准备(或者你有怎样的职业规划,准备怎样度过你的dba生涯);如果你进入公司,你
最想获得的是什么。