Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 4

MySQL 数据库笔试考卷

一、操作题:
1. 完成 Linux 环境下 MySQL 平台的安装,字符集 UTF-8;
2. 创建用户 test,密码 test123;
3. 为管理业务培训信息,建立 3 个表:
建立索引 idx_sn
S(S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号,学员姓名,所属单位,学员年龄
001 张三 一班 20
002 李四 二班 18
003 王五 三班 19
004 赵四 二班 16
005 钱多多 三班 17
C(C#,CN) C#,CN 分别代表课程编号,课程名称
C1 数学基础
C2 物理基础
C3 税收基础
C4 艺术基础
C5 天文基础
SC(S#,C#,G) S#,C#,G 分别代表学号,所选的课程编号,学习成绩
001 C1 92
001 C2 99
001 C3 98
001 C4 95
001 C5 93
002 C1 86
002 C2 95
002 C5 83
003 C3 76
004 C4 66
004 C2 92
005 C1 92
005 C5 88

(1)使用标准 SQL 嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名?


答案:select s# ,sn from s where S# in(select S# from c,sc where c.c#=sc.c# and cn=‘税收基础’)

(2) 使用标准 SQL 嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位?


答:select sn,sd from s,sc where s.s#=sc.s# and sc.c#=‘c2’

(3) 使用标准 SQL 嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位?


答:select sn,sd from s where s# not in(select s# from sc where c#=‘c5’)

(4)查询选修了课程的学员人数
答:select 学员人数=count(distinct s#) from sc;

(5) 查询选修课程超过 5 门的学员学号和所属单位?


答:select sn,sd from s where s# in(select s# from sc group by s# having count(distinct c#)>5)

4.备份数据库

二、笔试题:
1.您将使用 mysqldump 设置复制从机。您将需要从正在运行的生产服务器上获取一致的备
份。该进程应该对活动数据库连接的影响最小。为了实现这一点,您将把哪两个参数传递
给 mysqldump?

A. --skip-opt
B. --lock-all-tables
C. --create-apply-log
D. --single-transaction
E. --master-data

答案: DE

2.mysql 有几种事务隔离级别?
答案:
未提交读(READ UNCOMMITTED);
提交读(READ COMMITTED);
可重复读(REPEATABLE READ);
可串行化(SERIALIZABLE);

3.数据库事务的四个特征及含义;
答案:
原子性:要么全部完成,要么不完成,若发生错误会进行回滚操作;
一致性:开始到结束后,数据库完整性约束没收到破坏;(实体完整性,参照完整性,用
户定义的完整性)
隔离性:事务与事务之间相隔离,串行化执行;
持久性:事务完成对数据的影响是永久的;
4.mysql 有哪几种索引?
答案:
唯一索引
主键索引
聚集索引
普通索引
全文索引
组合索引

5.主从复制中涉及到哪三个线程?
答案:主要涉及三个线程:binlog 线程、I/O 线程和 SQL 线程。

6. 解释下什么叫脏读、不可重复读和幻读?
答案:

脏读:表示一个事务能够读取另一个事务中还未提交的数据。比如:某个事务尝试插入记
录 A,此时该事务还未提交,然后另一个事务尝试读取到了记录 A。
不可重复读 :是指在一个事务内,多次读同一数据。
幻读:指同一个事务内多次查询返回的结果集不一样。比如同一个事务 A 第一次查询时候
有 n 条记录,但是第二次同等条件下查询却有 n+1 条记录,这就好像产生了幻觉。发生幻
读的原因也是另外一个事务新增或者删除或者修改了第一个事务结果集里面的数据,同一
个记录的数据内容被修改了,所有数据行的记录就变多或者变少了。

综合论述题
(考察回答是否有逻辑,是否全面,能否具体详谈一两细节点)

谈谈 mysql 的性能优化该怎么做?
(如 1.突发类的性能问题,导致前端大部分业务响应卡死,如何应急处置?;
2.常规类的性能问题,(对业务影响一般,部分业务模块卡住)如何优化?)

答案关键点:
1. 突发类的性能问题,优先考虑的最短时间内恢复业务;
一般的操作可以是重启 mysql,kill 所有会话(query)等
重启前做好信息收集

2.常规类的性能问题,是否考虑下面几个点:
性能优化的核心是优先解决最大的,最突出的问题;
优化需要和业务场景关联:
如果是 olap 分析类,那么重点在 IO(顺序 IO),其次是内存调整;
Oltp 交易类,那么重点在 cpu 主频,IO(随机 IO),内存大小
关键点:
Cpu 层面:主频,核数,是否关闭节能模式

内存层面:mysql 的*Pool (innodb_buffer_pool_size)等参数设置

IO 存储层面:文件系统类型选型,IO 调度算法,mysql 配置 o_direct 等

网络层面:网卡带宽,操作系统网络参数,mysql 相关网络参数

操作系统层面:windows, linux 高并发环境建议使用 linux,是否考虑和 mysql 的适配

Mysql 参数层面:redolog 大小,组数,连接数等等

Sql 优化层面:(生产实践中这是最重要的点)
如果找出慢 sql,
如何解读 mysql 执行计划,
如何优化 sql,
如何优化索引,
如何设计索引;

You might also like