最新公告
  • 欢迎您光临IO源码网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • MySQL面试题和答案 高手总结 仅供参考 下载

    MySQL面试题和答案 高手总结 仅供参考 下载

    本站整理下载:
    链接:https://pan.baidu.com/s/1d_25dVKnsZKZkwFn3ijERQ 
    提取码:kc5j 
    相关截图:

     

    主要内容:
    1 , mysql 的复制原理以及流程。
    (1) 先问基本原理流程,3 个线程以及之间的关联。
    MySQL 的复制原理:Master 上面事务提交时会将该事务的 binlog event 写入
    binlog file,然后 master 将 binlog event 传到 slave 上面,slave 应用该 binlog event 实现
    逻辑复制。
    MySQL 的复制是基于如下 3 个线程的交互(多线程复制里面应该是 4 类线程):
    a. Master 上面的 binlog dump 线程,该线程负责将 master 的 binlog event 传到
    slave;
    b. Slave 上面的 IO 线程,该线程负责接收 Master 传过来的 binlog,并写入 relay
    log;
    c. Slave 上面的 SQL 线程,该线程负责读取 relay log 并执行;
    d. 如果是多线程复制,无论是 5.6 库级别的假多线程还是 MariaDB 或者 5.7 的真
    正的多线程复制,SQL 线程只做 coordinator,只负责把 relay log 中的 binlog
    读出来然后交给 worker 线程,woker 线程负责具体 binlog event 的执行;
    (2) 再问一致性延时性,数据恢复。
    一 致性可以从以下几个方面来讲:
    a. 在 MySQL5.5 以及之前,slave 的 SQL 线程执行的 relay log 的位置只能保存
    在文件(relay-log.info)里面,并且该文件默认每执行 10000 次事务做一次
    同步到磁盘,这意味着 slave 意外 crash 重启时,SQL 线程执行到的位置和
    数据库的数据是不一致的,将导致复制报错,如果不重搭复制,则有可能会
    导致数据不一致。MySQL 5.6 引入参数 relay_log_info_repository,将该参
    数设置为 TABLE 时,MySQL 将 SQL 线程执行到的位置存到
    mysql.slave_relay_log_info 表,这样更新该表的位置和 SQL 线程执行的用
    户事务绑定成一个事务,这样 slave 意外宕机后,slave 通过 innodb 的崩溃
    恢复可以把 SQL 线程执行到的位置和用户事务恢复到一致性的状态。
    b. MySQL 5.6 引入 GTID 复制,每个 GTID 对应的事务在每个实例上面最多执行
    一次,这极大地提高了复制的数据一致性;
    c. MySQL 5.5 引入半同步复制,用户安装半同步复制插件并且开启参数后,设
    置超时时间,可保证在超时时间内如果 binlog 不传到 slave 上面,那么用户
    提交事务时不会返回,直到超时后切成异步复制,但是如果切成异步之前用
    户线程提交时在 master 上面等待的时候,事务已经提交,该事务对 master
    资源由 www.eimhe.com 美河 学习在线收集提供
    上面的其他 session 是可见的,如果这时 master 宕机,那么到 slave 上面该
    事务又不可见了,该问题直到 5.7 才解决;
    d. MySQL 5.7 引入无损半同步复制,引入参 rpl_semi_sync_master_wait_point,
    该参数默认为 after_sync,指的是在切成半同步之前,事务不提交,而是接
    收到 slave 的 ACK 确认之后才提交该事务,从此,复制真正可以做到无损
    的了。
    e. 可以再说一下 5.7 的无损复制情况下,master 意外宕机,重启后发现有 binlog
    没传到 slave 上面,这部分 binlog 怎么办???分 2 种情况讨论,1 宕机时
    已经切成异步了,2 是宕机时还没切成异步??? 这个 怎么判断 宕机时 有没
    有切成异步呢 ??? 分别怎么处理???
    延时性:
    可以讲下 5.5 是单线程复制,5.6 是多库复制(对于单库或者单表的并发操作是
    没用的),5.7 是真正意义的多线程复制,它的原理是基于 group commit,只要
    master 上面的事务是 group commit 的,那 slave 上面也可以通过多个 worker
    线程去并发执行。和 MairaDB10.0.0.5 引入多线程复制的原理基本一样。
    数据恢复???他想问什么???
    (3)再问各种工作遇到的复制 bug 的解决方法
    复制的 bug ??? 上面说的算吗?, 我还真没遇到过,5.6 的多库复制有时候自己会
    停止,我们写了一个脚本重新 start slave; 待补充…
    2 , mysql 中 中 myisam 与 与 innodb 的区别,至少 5 点。
    (1) 问 5 点不同
    a. Innodb 支持事务,myisam 不支持;
    b. Innodb 支持行级别锁,myisam 不支持;
    c. Innodb 不能通过直接拷贝表文件的方法拷贝表到另外一台机器,myisam
    支持;
    d. Innodb 是索引组织表,myisam 是堆表;
    e. Innodb 表不容易损坏,myisam 容易;
    f. Innodb 表支持多种行格式,myisam 不支持;

     

    *** 次数:10600 已用完,请联系开发者***

    1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!384324621@qq.com
    2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
    3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
    4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有★币奖励和额外收入!

    IO 源码网 » MySQL面试题和答案 高手总结 仅供参考 下载

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    IO源码吧
    一个高级程序员模板开发平台

    发表评论

    • 157会员总数(位)
    • 12105资源总数(个)
    • 97本周发布(个)
    • 0 今日发布(个)
    • 537稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情