还剩13页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
运维数据库面试题和答案
一、选择题(本题型共15题,每题1分,共15分)
1.以下哪种数据库类型不属于关系型数据库?()A.MySQL B.Oracle C.MongoDB D.PostgreSQL
2.数据库事务的“原子性”(Atomicity)指的是?()A.事务中的操作要么全部完成,要么全部不完成B.事务的操作结果对所有用户可见C.事务执行过程中不会被其他事务干扰D.事务可以被恢复到执行前的状态
3.MySQL中默认的存储引擎是?()A.MyISAM B.InnoDB C.Memory D.CSV
4.以下哪个不是数据库备份的常用策略?()A.全量备份B.增量备份C.差异备份D.日志备份
5.数据库连接池的核心作用是?()A.提高数据库查询速度B.管理数据库连接的创建、复用和释放C.加密数据库数据D.监控数据库性能
6.当多个用户操作同一数据时,为避免数据不一致,数据库通常会使用?()A.索引B.锁机制C.事务隔离D.连接池
7.PostgreSQL相比MySQL,在以下哪个方面有明显优势?()A.事务处理性能B.对JSON数据类型的原生支持C.社区活跃度D.初始安装复杂度
8.数据库主从复制中,从库(Slave)的数据同步依赖于主库(Master)的什么文件?()第1页共15页A.配置文件(my.cnf)B.错误日志(error.log)C.binlog日志D.慢查询日志(slow.log)
9.以下哪种索引类型适用于频繁的范围查询(如“大于”“小于”)?()A.哈希索引B.全文索引C.B+树索引D.主键索引
10.数据库“隔离级别”中,可能出现“不可重复读”问题的是?()A.读未提交(Read Uncommitted)B.读已提交(ReadCommitted)C.可重复读(Repeatable Read)D.串行化(Serializable)
11.以下哪项不是数据库性能优化的常见手段?()A.添加合适的索引B.增加数据库服务器CPU核心数C.频繁执行全表查询D.优化SQL语句(如避免SELECT*)
12.数据库中“外键”(Foreign Key)的主要作用是?()A.提高查询效率B.保证数据的完整性和参照性C.加速表连接D.限制用户操作权限
13.MongoDB属于以下哪种数据库类型?()A.关系型数据库B.文档型数据库C.列族型数据库D.键值型数据库
14.当MySQL的“max_connections”参数设置过小时,可能导致的问题是?()A.数据库查询变慢B.连接超时或拒绝连接C.数据丢失D.索引失效
15.数据库“审计日志”(Audit Log)的主要作用是?()A.记录数据库的所有操作,用于安全审计和问题排查第2页共15页B.优化数据库查询计划C.备份数据库数据D.加密敏感数据
二、判断题(本题型共10题,每题
0.5分,共5分)
1.Oracle数据库是开源的关系型数据库()
2.事务的“一致性”(Consistency)要求事务执行前后,数据库从一个一致性状态转换到另一个一致性状态()
3.InnoDB存储引擎支持行级锁和事务()
4.数据库索引越多,查询性能一定越好()
5.主从复制中,从库可以直接修改数据并同步到主库()
6.PostgreSQL不支持存储过程和触发器()
7.数据库备份后,必须通过恢复操作验证备份文件的完整性()
8.乐观锁适用于写冲突频率较低的场景()
9.MySQL的binlog日志类型为“Row”时,记录的是SQL语句而非具体数据()
10.数据库连接池的“maxWait”参数表示最大连接数()
三、填空题(本题型共15题,每题1分,共15分)
1.数据库三范式中,第一范式要求属性不可再分,第二范式要求非主属性完全依赖于主键,第三范式要求非主属性不传递依赖于主键,这三种范式的核心是为了减少数据的______
2.MySQL中,查看当前数据库连接数的命令是______
3.数据库备份的“全量备份”通常包括数据文件、______文件和配置文件,以确保完整恢复
4.主从复制的“半同步复制”指的是主库写入binlog后,等待至少______个从库确认接收binlog后才返回成功,以提高数据安全性第3页共15页
5.数据库“事务隔离级别”中,隔离级别越高,数据一致性越好,但并发性能越______
6.InnoDB的“undo log”主要用于事务的______操作,保证事务回滚时数据的一致性
7.数据库“慢查询日志”(slow_query_log)的作用是记录执行时间超过______秒的SQL语句,用于性能优化
8.MongoDB中,______是一组相关文档的集合,相当于关系型数据库中的表
9.数据库“锁机制”中,______锁是指只锁定当前操作的数据行,其他事务可以操作其他行,适用于写冲突少的场景
10.PostgreSQL中,创建索引的基本语法是“CREATE INDEXindex_name ONtable_name column_name;”,其中“index_name”是______
11.数据库“增量备份”通常基于______日志,只备份上一次备份后发生变化的数据
12.MySQL的“my.cnf”配置文件中,[mysqld]是______部分,用于配置数据库服务器的全局参数
13.数据库“乐观锁”的实现通常通过添加一个版本号(version)字段,更新数据时判断版本号是否匹配,这属于______锁的一种
14.当数据库出现“死锁”时,通常可以通过查看数据库的______(如MySQL的information_schema.innodb_lock_waits)来定位锁等待关系
15.数据库安全中,“最小权限原则”要求用户只能拥有完成其工作所必需的______
四、简答题(本题型共10题,每题3分,共30分)第4页共15页
1.请简述数据库事务的ACID特性,并说明每个特性的含义
2.什么是数据库索引?请列举3种常见的索引类型,并说明各自的适用场景
3.MySQL的InnoDB存储引擎相比MyISAM,有哪些主要优势?
4.请描述数据库主从复制的基本原理和核心作用
5.什么是数据库连接池?使用连接池有哪些好处?请列举3个常用的连接池参数及其作用
6.数据库备份的方式有哪些?请简述全量备份、增量备份和差异备份的区别
7.什么是数据库事务隔离级别?请按隔离级别从低到高的顺序排列,并说明“不可重复读”和“幻读”的区别
8.当发现数据库查询性能变慢时,通常可以从哪些方面进行排查和优化?(至少列举4点)
9.什么是数据库锁机制?请说明行级锁、表级锁、乐观锁和悲观锁的适用场景和优缺点对比
10.数据库“binlog”日志有什么作用?MySQL的binlog日志有哪几种类型?分别适用于什么场景?
五、案例分析题(本题型共5题,每题10分,共50分)
1.场景某电商平台数据库在“双11”促销期间,用户下单时频繁出现“数据库连接超时”错误,导致部分订单无法提交请分析可能的原因,并说明排查步骤和解决措施
2.场景某公司MySQL数据库中,一张用户表(user)数据量超过1000万行,执行“SELECT*FROM userWHERE age30;”时查询耗时超过10秒请分析可能的优化方案,并说明具体操作步骤第5页共15页
3.场景某系统主从复制突然中断,从库数据落后主库2小时,且无法自动恢复请描述排查主从复制中断的可能原因(至少3点),并说明手动恢复的基本流程
4.场景某团队在开发中发现,多个用户修改同一商品的库存时,出现“超卖”问题(如库存本应剩10,结果卖出20)请分析问题原因,并设计一个基于数据库锁机制的解决方案
5.场景某公司需要对Oracle数据库进行数据迁移,从旧服务器迁移到新服务器,且要求迁移过程中数据不中断服务请设计一个合理的迁移方案,包括迁移前准备、迁移步骤和迁移后验证
六、SQL操作题(本题型共15题,每题5分,共75分)请根据以下表结构,完成SQL操作题(表名student,字段idINT,主键,nameVARCHAR,ageINT,class_idINT,scoreDECIMAL)
1.查询所有学生的姓名和年龄,按年龄升序排列
2.插入一条新学生记录id=100,name=李四,age=20,class_id=3,score=
95.
53.更新class_id=3的学生年龄为
214.删除id=100的学生记录
5.查询年龄大于等于18岁的学生姓名、班级ID和分数,按分数降序排列
6.查询每个班级的平均年龄,结果按平均年龄升序排列,显示班级ID和平均年龄(取整)
7.查询至少有2名学生的班级ID和学生数量(班级ID去重,只保留学生数≥2的班级)
8.查询class_id=2的学生中,年龄最大的学生姓名和年龄第6页共15页
9.查询所有学生的姓名,其中name字段中包含“张”或“李”的学生(使用LIKE关键字)
10.查询学生表中age字段的最大值、最小值和平均值,结果显示为max_age、min_age、avg_age
11.对student表的name字段创建索引,索引名为idx_name
12.查询班级ID为
1、
2、3的学生姓名和年龄,按班级ID分组,每个班级显示3条记录(使用LIMIT和GROUP BY)
13.查询student表中score字段不为空的学生姓名和分数,按分数降序取前5名
14.将class_id=5的学生score字段更新为原分数的
1.1倍(保留一位小数)
15.删除student表中age小于10岁的学生记录,并确认删除成功(提示使用DELETE语句,并可通过SELECT语句验证)
七、概念辨析题(本题型共10题,每题2分,共20分)
1.主键(Primary Key)和唯一键(Unique Key)的区别
2.数据库“读已提交”(Read Committed)隔离级别和“可重复读”(Repeatable Read)隔离级别在“不可重复读”问题上的差异
3.MySQL的“binlog”和“redo log”的区别和联系
4.关系型数据库(如MySQL)和NoSQL数据库(如MongoDB)在数据模型上的核心差异
5.数据库“乐观锁”和“悲观锁”在实现方式和性能上的对比
6.索引(Index)和约束(Constraint)的区别和联系
7.数据库“全量备份”和“增量备份”在备份效率和恢复复杂度上的对比第7页共15页
8.PostgreSQL的“MVCC”(多版本并发控制)机制和MySQL InnoDB的“MVCC”机制的主要差异
9.数据库“事务”和“存储过程”的区别
10.数据库“连接池”的“最大活跃连接数”(maxActive)和“最大等待时间”(maxWait)参数的作用及设置原则答案汇总
一、选择题
1.C
2.A
2.B
4.D
3.B
6.B
4.B
8.C
5.C
10.B
6.C
12.B
7.B
14.B
8.A
二、判断题
1.×
2.√
2.√
4.×
3.×
6.×
4.√
8.√
5.×
10.×
三、填空题
1.冗余
2.SHOW PROCESSLIST
3.日志(或binlog/redo log)第8页共15页
4.1(或一)
5.低
6.回滚(或撤销)
7.1(或一)
8.集合(或collection)
9.行级(或R行锁)
10.索引名
11.binlog(或日志)
12.全局配置(或mysqld配置)
13.乐观
14.锁等待信息(或innodb_lock_waits表)
15.权限(或操作权限)
四、简答题
1.数据库事务ACID特性原子性(Atomicity)指事务中所有操作要么全完成要么全不完成;一致性(Consistency)指事务执行前后数据库状态从一致到一致;隔离性(Isolation)指事务并发执行时互不干扰;持久性(Durability)指事务提交后结果永久保存
2.索引是对表中列的值进行排序的数据结构,用于加速查询常见类型B+树索引(适用于范围查询、排序、等值查询)、哈希索引(适用于等值查询,不支持范围查询)、全文索引(适用于文本内容搜索)
3.InnoDB相比MyISAM的优势支持事务和行级锁,数据一致性和并发性能更好;支持外键,保证参照完整性;崩溃恢复能力强,通过redo log和undo log确保数据安全;支持MVCC,提高并发读性能第9页共15页
4.主从复制原理主库将数据变更记录到binlog日志,从库通过I/O线程读取主库binlog并写入relay log,再通过SQL线程执行relaylog中的SQL,实现数据同步作用:读写分离(从库分担读压力)、故障恢复(主库故障时切换到从库)、数据备份
5.数据库连接池是管理数据库连接的机制,提前创建一定数量的连接,供应用程序复用好处减少连接创建/释放的开销,提高性能;控制连接总数,避免连接耗尽;统一管理连接,保障系统稳定性常用参数initialSize(初始连接数)-启动时创建的连接数;maxActive(最大活跃连接数)-允许的最大并发连接数;maxWait(最大等待时间)-连接耗尽时的最大等待时长
6.数据库备份方式全量备份(备份所有数据)、增量备份(仅备份上一次备份后新增/变更的数据)、差异备份(备份上一次全量备份后新增/变更的数据)区别全量备份耗时最长但恢复简单;增量备份耗时短但需按顺序恢复多个备份;差异备份恢复时只需全量+差异,比增量快
7.事务隔离级别(从低到高)读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)、串行化(Serializable)不可重复读同一事务内两次读取同一数据,因其他事务修改导致结果不同;幻读同一事务内两次查询同一范围,因其他事务新增/删除数据导致结果集行数不同
8.数据库性能排查优化方向检查索引是否合理(是否有冗余/缺失索引);优化SQL语句(避免全表扫描、SELECT*、JOIN过多表);检查数据库配置(如连接数、缓存参数);监控慢查询日志,优化高频慢SQL;考虑分库分表(数据量过大时);增加硬件资源(CPU、内存、I/O)第10页共15页
9.锁机制是控制并发访问的技术,确保数据一致性行级锁锁定单行,并发性能高,适合写冲突少的场景,实现如InnoDB的行锁;表级锁锁定整个表,实现简单,并发性能低,适合写冲突多的场景,如MyISAM锁;乐观锁通过版本号判断冲突,实现简单,并发性能高,适合写冲突少的场景;悲观锁提前加锁,并发性能低,适合写冲突多的场景
10.binlog作用记录数据库数据变更,用于主从复制、数据恢复、审计类型及场景Statement(记录SQL语句,适合简单操作,占用空间小但可能导致主从不一致);Row(记录具体数据变更,适合复杂SQL,主从不一致少但占用空间大);Mixed(混合使用,默认Statement,特殊情况自动转为Row)
五、案例分析题
1.可能原因连接池最大连接数不足、数据库服务器资源耗尽(CPU/内存/I/O)、网络延迟、SQL语句执行缓慢阻塞连接排查步骤:
1.查看数据库连接数(SHOW PROCESSLIST)和连接池状态(如HikariCP的activeConnections);
2.检查服务器资源监控(CPU使用率、内存占用、I/O读写速度);
3.分析慢查询日志,是否有耗时过长的SQL;
4.检查网络带宽和服务器负载解决措施
1.临时调大连接池maxActive参数;
2.优化慢SQL,添加索引;
3.升级服务器资源(增加CPU/内存/SSD);
4.实施读写分离,从库分担读压力
2.优化方案
1.添加索引(对age字段创建索引,如CREATE INDEXidx_age ONuserage;);
2.避免全表扫描,优化SQL(如仅查询必要字段,避免SELECT*);
3.分表处理(按用户ID哈希或范围分表,如user_
1、user_
2...);
4.数据归档(将历史数据迁移到归档表,保留近期数据)操作步骤先分析执行计划(EXPLAIN第11页共15页SELECT...)确认索引是否生效;若索引无效,优化SQL后测试;若数据量过大,评估分表策略并实施,验证查询耗时
3.可能原因
1.主库binlog损坏或未开启;
2.从库网络故障,无法连接主库;
3.主从复制参数配置错误(如log_slave_updates、read_only);
4.从库relay log损坏或执行错误手动恢复流程
1.检查主库binlog状态(SHOW BINARYLOGS)和从库连接状态(SHOWSLAVE STATUS);
2.修复网络或主库binlog;
3.若relay log损坏,删除relay log并重新同步;
4.若复制参数错误,修正后重启从库IO/SQL线程;
5.恢复后验证从库数据与主库一致
4.问题原因并发修改同一商品库存时,未加锁导致“超卖”(如两个事务读取库存10,都判断可以卖5,结果总卖10,实际库存-10后剩0,再卖5就超卖)解决方案使用悲观锁(SELECT...FORUPDATE,在事务中加行锁,确保同一时间只有一个事务修改);或使用乐观锁(更新时判断版本号,如UPDATE stockSET count=count-5,version=version+1WHERE id=1AND version=1AND count=5;,若影响行数为0则重试)
5.迁移方案
1.迁移前准备评估数据量(预估迁移时间),备份旧库,检查新旧数据库兼容性(如Oracle版本、字符集、参数);
2.迁移步骤1)在新服务器安装相同版本Oracle;2)创建新库,配置参数(字符集、内存、连接数等)与旧库一致;3)使用exp/expdp工具从旧库导出数据(expdp scott/tiger@olddb full=ydirectory=dmp_dir dumpfile=full.dmp);4)将dmp文件传输到新库,使用imp/impdp导入(impdp system/password@newdb full=ydirectory=dmp_dir dumpfile=full.dmp);
3.迁移后验证对比新旧库数据量(SELECT COUNT*FROM table;),验证关键业务功能第12页共15页(如查询、插入、事务),监控新库性能(CPU、内存、I/O),确认服务正常后切换流量
六、SQL操作题
1.SELECT name,age FROM student ORDER BY age ASC;
2.INSERT INTOstudent id,name,age,class_id,scoreVALUES100,李四,20,3,
95.5;
3.UPDATE studentSET age=21WHERE class_id=3;
4.DELETE FROMstudent WHEREid=100;
5.SELECT name,class_id,score FROMstudent WHEREage=18ORDERBY score DESC;
6.SELECT class_id,FLOORAVGage AS avg_age FROMstudentGROUP BYclass_id ORDERBY avg_ageASC;
7.SELECT class_id,COUNT*AS student_count FROMstudentGROUP BYclass_id HAVINGstudent_count=2;
8.SELECT name,age FROMstudent WHEREclass_id=2ORDER BYageDESC LIMIT1;
9.SELECT nameFROMstudent WHERE nameLIKE%张%OR nameLIKE%李%;
10.SELECT MAXageAS max_age,MINage ASmin_age,ROUNDAVGage,2ASavg_age FROMstudent;
11.CREATE INDEXidx_name ONstudentname;
12.SELECT class_id,name,age FROMstudent WHEREclass_id IN1,2,3GROUP BYclass_id LIMIT3;
13.SELECT name,score FROMstudent WHEREscore ISNOT NULLORDERBYscoreDESC LIMIT5;第13页共15页
14.UPDATE studentSET score=ROUNDscore*
1.1,1WHEREclass_id=5;
15.DELETE FROMstudentWHEREage10;SELECT COUNT*FROMstudent WHEREage10;(验证删除成功)
七、概念辨析题
1.主键(Primary Key)唯一标识表中每行,非空且唯一,一个表只能有一个主键;唯一键(Unique Key)值唯一但可空,一个表可多个唯一键,用于保证列值不重复但允许空值
2.读已提交(Read Committed)只能读取已提交的数据,可能出现不可重复读;可重复读(Repeatable Read)同一事务内多次读同一数据结果一致,避免不可重复读,但可能出现幻读(MySQL默认)
3.binlog记录数据变更SQL,用于主从复制和数据恢复,属于逻辑日志;redo log记录数据页变更,用于崩溃恢复时重做未完成事务,属于物理日志联系都是数据库恢复的核心日志,binlog用于主从同步,redo log用于实例内恢复
4.关系型数据库数据以二维表形式存储,有严格的表结构和关系(外键),支持SQL;NoSQL数据库无固定表结构,支持文档、键值、列族等模型,不强制关系,扩展性好,如MongoDB适合非结构化数据
5.乐观锁通过版本号/时间戳判断冲突,实现简单,并发性能高,适合写冲突少的场景;悲观锁提前加锁,并发性能低,实现复杂,适合写冲突多的场景
6.索引加速查询的数据结构;约束强制数据完整性的规则(如主键、外键、唯
一、非空)联系都可用于保证数据一致性,索引可能基于约束字段(如主键本身就是索引)第14页共15页
7.全量备份备份全部数据,耗时久但恢复简单;增量备份仅备份变化数据,耗时短但恢复需按顺序恢复多个备份;差异备份备份全量后变化数据,恢复时只需全量+差异,比增量快但备份量比增量大
8.PostgreSQL的MVCC基于事务ID和元组可见性,支持快照读,不阻塞读;MySQL InnoDB的MVCC基于undo log和版本链,通过readview判断可见性,读不加锁但写会阻塞读
9.事务一组SQL操作的逻辑单元,ACID特性;存储过程预编译的SQL集合,可带参数,一次编译多次执行,用于封装业务逻辑
10.maxActive(最大活跃连接数)允许的最大并发连接数,超过则等待或拒绝;maxWait(最大等待时间)连接耗尽时,线程等待获取连接的最大时长,超过则抛异常设置原则maxActive根据服务器性能和并发量设置,maxWait避免连接等待过久导致超时第15页共15页。
个人认证
优秀文档
获得点赞 0