专栏首页MYSQL轻松学MYSQL 必考面试题10道(多选)

MYSQL 必考面试题10道(多选)

1

MySQL偶尔会出现OOM(内存溢出)现象,导致MySQl服务重启,以下哪种方式能有效缓解OOM的情况发生()

A.适当调低innodb_buffer_pool_size大小,5.7之前需要重启MySQL服务。 B.降低并发,避免查询分组排序和更多table cache。 C.开启swap。 D.将一个实例下库表拆成多个库表(分库分表)。

2

INSERT BUFFER即合并插入缓存,从innodb 1.0.x版本开始引入CHANGE BUFFER,下面关于insert buffer说法正确的是()

A.合并插入只适用非唯一的辅助索引。 B.合并插入的目的是使随机io变顺序io,提升性能。 C.合并插入的频率为每1s和10s都会进行。 D.合并插入由master thread控制。

3

在MySQL的众多存储引擎中,只有InnoDB支持事务,关于事物隔离级别,以下说法错误的是()

A.Read uncommitted、Read committed 、Repeatable read、Serializable四种隔离级别并行性能依次降低,安全性依次提高。 B.脏读是某一事务读取了另外一个事务未提交的数据,不可重复读是读取了其他事务提交的数据,脏读和不可重复读都可以通过事物隔离级别控制。 C.RR隔离级别,只能返回比当前事务早的提交插入、更新、删除值。 D.RR和RC隔离级别都存在幻读,无法避免。

4

Innodb为实现MVCC所使用的内部快照采用read view方式,关于read view 说法正确的是()

A.RR是每个事务重建读视图,整个事务存在期间都用这个视图。

B.RC是每条SQL创建读视图,在每个SQL语句开始执行的时候创建的,隔离作用域仅限该条SQL语句。 C.Read uncommitted是不创建读视图的,直接返回记录上的最新值。 D.read view 存在物理结构,跟普通视图一样,记录当时事物执行时的数据信息。

5

Undo log回滚日志,提供回滚操作,是为了满足事物的原子性,关于undo说法正确的是()

A.MySQL5.6版本以后支持独立的undo表空间,可设置多个表空间。8.0之前默认为128个回滚段,启动后不能动态修改。5.7以后可以清理undo log。

B.undo log是为了满足事务的原子性,也可以用来辅助完成事务的持久化。 C.undo由purge cleaner thread控制,负责回收已经使用并分配的undo页,事物提交时,会立即删除undo log。 D.insert事物提交时,undo log直接删除,不进行purge操作;update和delete操作会放入undo log链表,等待purge线程删除。

6

关于MySQL Innodb 行记录隐藏字段的说法正确的是()

A.每行记录都有三个隐藏字段:事务ID(DB_TRX_ID)、回滚指针(DB_ROLL_PTR)、隐藏的ID(DB_ROW_ID)。

B.DB_TRX_ID记录的是行变化发生时的版本号,而不是事件实际发生的时间。 C.DB_ROLL_PTR为指向写到rollback segment(回滚段)的一条undo log记录。 D.DB_ROW_ID用于索引中,主键和唯一索引就是利用这个值实现。

7

MySQL默认页的大小为16K,操作系统为4K,在意外掉电时很容易引起部分写失败问题,所以引入doablewrite来避免此问题,innodb_doublewrite参数可以控制是否开启。以下关于double write的说法,正确的是()

A.脏页和redo log都需要写doublewrite,都是为了解决部分写失败问题。 B.doublewrite由两部分组成,一部分为内存中的doublewrite buffer,另一部分为磁盘上共享表空间中,大小都为2M。 C.脏页刷新过程为先写入doublewrite buffer中,再分两次,每次1M写入共享表空间中,然后再将doublewrite buffe脏页离散写入各个表空间文件中。 D.如果在写入共享表空间时失败,在恢复时会通过重做日志重新写入到doublewrite buffer;如果共享表空间写入成功,但在写入磁盘时失败,在恢复时会用doublewrite空间中的数据来恢复异常页面的数据。

8

MySQL的二进制日志binlog可以说是MySQL最重要的日志,关于binlog说法正确的是()

A.当指定了binlog大小,如果有大事物,一个binlog放不下,会放到下一个binlog中,而不会导致binlog超过指定大小。

B.如果主库binlog格式为statement,主库执行分页删除时,可能造成从库数据不一致。 C.主从复制时,binlog dump线程将binlog cache中event推送给从库,而不是从binlog file中even推送给从库。 D.从库存在两个用户为system user的线程,分别为复制的io thread和sql thread。当从库执行stop slave时,不会主动通知主库的binlog dump线程。

9

MySQL Innodb数据是先写到内存的,再将内存数据写到磁盘,当脏页刷盘的时候会产生检查点,以下哪些情况会产生checkpoint()

A.flush lru list,如果free buffer少于1024个页,则会触发刷脏页到磁盘产生checkpoint。 B.master thread,每1s、10s会触发将脏页刷到磁盘产生checkpoint。 C.dirty page too much,默认当buffer pool中max_dirty_page_pct达75%时,会将脏页刷到磁盘产生checkpoint。 D.redo log full switch,重做日志写满,切换日志时会产生checkpoint。

10

不考虑组提交方式,当sync_binlog=1、innodb_flush_log_at_trx_commit=1时,一个事物的流程:加载数据页到内存-->修改数据undo-->更新数据到内存-->写入redolog(状态为prepare)-->写binlog-->redolog flush-->binlog flush-->提交事务(redolog状态修改为commit)。MySQL为了保证redo log 和binlog一致性,内部事物提交采用xa两阶段方式,以下关于这个事物的说法,正确的是()

A.如果redo log file中未提交,binlog file中存在,会将redo log中的这个未提交事物提交。

B.如果redo log file中未提交,binlog file中不存在,会将redo log中的这个未提交事物回滚。

C.如果redo log file中已提交,binlog file中存在,正常完成的事务,不需要恢复。

D.如果redo log file中已提交,binlog file中不存在,会将redo log中的这个提交事物回滚。

本文分享自微信公众号 - MYSQL轻松学(learnmysql),作者:Liang

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MYSQL 必考面试题10道(答案解释)

    MySQL偶尔会出现OOM(内存溢出)现象,导致MySQl服务重启,以下哪种方式能有效缓解OOM的情况发生()

    用户1338460
  • MYSQL8.0.11二进制安装

    https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.t...

    用户1338460
  • Percona Toolkit 常用工具使用介绍

    Percona Toolkit 是一组高级的命令行工具,用来管理 MySQL 和系统任务,主要包括: 1、验证主节点和复制数据的一致性 2、有效的对记录行进行归...

    用户1338460
  • MYSQL 必考面试题10道(答案解释)

    MySQL偶尔会出现OOM(内存溢出)现象,导致MySQl服务重启,以下哪种方式能有效缓解OOM的情况发生()

    用户1338460
  • MySQL(二)日志系统

    MySQL可以恢复到半个月内任意一秒的状态. mysql> create table T(ID int primary key, c int);

    JNJYan
  • 原来MySQL面试还会问这些...

    在前一阵子,大哥问过我:”你知道MySQL的原子性是怎么保证的吗“。我懵逼了,MySQL怎么保证原子性?我不会啊。

    乔戈里
  • 初识 redo log 和 binlog

    InnoDB 存储引擎是以页为单位来管理存储空间的, 我们的增删改查操作本质上都是在访问页面, 如读取一条数据, 会把这个数据所在的页加载到内存中, 而不仅仅是...

    一份执着✘
  • 机器学习笔试题精选(四)

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    红色石头
  • MySQL 8.0源码学习日记——redo log的一生

    | 作者:杨一迪,腾讯云数据库后台开发工程师,主要负责云数据库postgresql、云数据库CynosDB等产品的后台开发工作。 1 前言 1 最开始了解my...

    腾讯云数据库 TencentDB
  • 性能优化-SQL及索引优化

    2、准备数据 网址:https://dev.mysql.com/doc/sakila/en/sakila-installation.html

    cwl_java

扫码关注云+社区

领取腾讯云代金券