前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MYSQL 必考面试题10道(多选)

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

作者头像
MySQL轻松学
发布2019-08-06 10:29:07
1.3K0
发布2019-08-06 10:29:07
举报
文章被收录于专栏:MYSQL轻松学MYSQL轻松学

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中的这个提交事物回滚。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MYSQL轻松学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档