• 1207MySQL 面试题


    转自http://blog.itpub.net/26435490/viewspace-1133659/

    1, mysql的复制原理以及流程。

    (1)先问基本原理流程,3个线程以及之间的关联。

    (2)再问一致性,延时性,数据恢复。

    (3)再问各种工作遇到的复制bug的解决方法



    3,问mysql中varchar与char的区别以及varchar(50)中的30代表的涵义。

    (1)varchar与char的区别

            char是一种固定长度的类型,varchar则是一种可变长度的类型

    (2)varchar(50)中50的涵义

             最多存放50个字节

    (3)int(20)中20的涵义

             int(M)中的M indicates the maximum display width (最大显示宽度)for integer types. The maximum legal display width is 255.

    (4)为什么MySQL这样设计?

          


    4,问了innodb的事务与日志的实现方式。 

    (1)有多少种日志

    错误日志:记录出错信息,也记录一些警告信息或者正确的信息

    慢查询日志:设置一个阈值,将运行时间超过该值的所有SQL语句都记录到慢查询的日志文件中。

    二进制日志:记录对数据库执行更改的所有操作

      查询日志:记录所有对数据库请求的信息,不论这些请求是否得到了正确的执行。

    (2)日志的存放形式

    (3)事务是如何通过日志来实现的,说得越深入越好。

    隔离性: 通过 锁 实现

    原子性、一致性和持久性是通过 redo和undo来完成的。



    5,问了mysql binlog的几种日志录入格式以及区别

    (1)各种日志格式的涵义

    (2)适用场景

    (3)结合第一个问题,每一种日志格式在复制中的优劣。



    6,问了下mysql数据库cpu飙升到500%的话他怎么处理?

    (1) 没有经验的,可以不问

    (2)有经验的,问他们的处理思路



    7,sql优化。

    (1)explain出来的各种item的意义

    (2)profile的意义以及使用场景。

    (3)explain中的索引问题。


    8, 备份计划,mysqldump以及xtranbackup的实现原理,

    (1) 备份计划

    (2)备份恢复时间

    (3)备份恢复失败如何处理


    9, 500台db,在最快时间之内重启。


    10, 在当前的工作中,你碰到到的最大的mysql db问题是?


    11, innodb的读写参数优化

    (1)读取参数,global buffer pool以及 local buffer

    (2)写入参数

    (3)与IO相关的参数

    (4)缓存参数以及缓存的适用场景

    12 ,请简洁地描述下MySQL中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?

    SQL标准定义的四个隔离级别为:

    read uncommited

    read committed

    repeatable read

    serializable

    Read Uncommitted(读取未提交内容)

          在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。

    Read Committed(读取提交内容)

          这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别也支持所谓的不可重复读(Nonrepeatable Read),因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果。

    Repeatable Read(可重读)

          这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读(Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control 间隙锁)机制解决了该问题。注:其实多版本只是解决不可重复读问题,而加上间隙锁(也就是它这里所谓的并发控制)才解决了幻读问题。

    Serializable(可串行化)

    这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。

           

    对于不同的事务,采用不同的隔离级别分别有不同的结果。不同的隔离级别有不同的现象。主要有下面3种现在:

    1、脏读(dirty read):一个事务可以读取另一个尚未提交事务的修改数据。

    2、非重复读(nonrepeatable read):在同一个事务中,同一个查询在T1时间读取某一行,在T2时间重新读取这一行时候,这一行的数据已经发生修改,可能被更新了(update),也可能被删除了(delete)。

    3、幻像读(phantom read):在同一事务中,同一查询多次进行时候,由于其他插入操作(insert)的事务提交,导致每次返回不同的结果集。

    不同的隔离级别有不同的现象,并有不同的锁定/并发机制,隔离级别越高,数据库的并发性就越差,4种事务隔离级别分别表现的现象如下表:

    隔离级别 脏读 非重复读 幻像读
    read uncommitted 允许 允许 允许
    read committed   允许 允许
    repeatable read     允许
    serializable      

    13,表中有大字段X(例如:text类型),且字段X不会经常更新,以读为为主,请问

    (1)您 是选择拆成子表,还是继续放一起?
    拆成子表

    (2)写出您这样选择的理由?
    1   提高检索效率

    14,MySQL中InnoDB引擎的行锁是通过加在什么上完成(或称实现)的?为什么是这样子的
    通过   行多版本控制

    15  MyISAM 与innodb的区别

    (1) 问5点不同

                            MyISAM                  Innodb

    事物支持 :   不支持                     支持

    锁的粒度:     table                      Row

    存储容量:    没有上限               64TB

    哈希索引 :   不支持                       支持

    全文索引:   支持                         不支持

    外键:            不支持                    支持


    (2) 问各种不同mysql版本的2者的改进
    (3)2者的索引的实现方式

    16   B+ 树

    http://blog.csdn.net/ggxxkkll/article/details/7551766

    我的理解

    事务的ACID
    A原子性
    C一致性
    I隔离性
    D持久性

    数据库的三范式
    1第一范式就是无重复的列
    2通常需要为表加上一个列,以存储各个实例的惟一标识
    3第三范式就是属性不依赖于其它非主属性。(我的理解是消除冗余)

    数据库如何优化
    设计优化
    查询优化 WHERE字句
    索引优化
    硬件优化

    事务是如何通过日志来实现的,说得越深入越好。???
    隔离性: 通过 锁 实现
    原子性、一致性和持久性是通过 redo和UNDO来完成的。


    理解BIN-LOG-FORMAT的三种模式
    mix ROW statement

    EXPLAIN的每一个字段
    EXPLAIN SELECT 1 FROM DUAL;
    EXPLAIN的每一个字段
    id[SELECT次序] KEY[使用哪个索引] ps_key key_length TABLE TYPE[获取数据类型] ref ROWS[扫描行数] extra


    备份计划,mysqldump以及xtranbackup的实现原理???
    包括文件系统快照(LVM),逻辑备份工具Mysqldump,Mydumper,以及物理备份工具Xtrabackup
    http://www.cnblogs.com/zengkefu/p/5669512.html

    请简洁地描述下MySQL中INNODB支持的四种事务隔离级别名称,以及逐级之间的区别???
    不可重复读
    可重复读
    序列读

    MySQL中INNODB引擎的行锁是通过加在什么上完成(或称实现)的?为什么是这样子的
    也就是MVCC


    MYISAM 与INNODB的区别
    事务
    外键
    数据文件和索引文件是否分开

  • 相关阅读:
    Netty和Akka有什么不同?
    GitHub & Bitbucket & GitLab & Coding 的对比分析
    Log4j和Log4j2的区别
    Spring中MultipartHttpServletRequest实现文件上传 生成缩略图
    JSP显示-下拉框
    jsp页面 date转化成string
    tomcat直接访问
    web项目中各种路径的获取HttpServletRequest
    遍历Map的四种方法
    mybatis There is no getter for property named 'xx' in 'class java.lang.String
  • 原文地址:https://www.cnblogs.com/qcfeng/p/6140537.html
Copyright © 2020-2023  润新知