Bootstrap

腾讯云DBA面试(一面)

摘要:腾讯云前端时间约了个了维护工程师的面试,总结下面试题。

1、oracle索引原理和mysql索引原理的区别,性能差异?b tree 和 b+ tree 区别。

(1) B+树改进了B树, 让非叶子结点只作索引使用, 去掉了其中指向data record的指针, 使得每个结点中能够存放更多的key, 因此能有更大的出度. 这有什么用? 这样就意味着存放同样多的key, 树的层高能进一步被压缩, 使得检索的时间更短.

(2)当然了,由于底部的叶子结点是链表形式, 因此也可以实现更方便的顺序遍历, 但是这是比较次要的, 最主要的的还是第(1)点.对于范围查找来说,b+树只需遍历叶子节点链表即可,B树却需要重复地中序遍历。对于全表扫描也是的。

2、mysql半同步和增强版同步的原理、优化点,各自存在什么问题,如何解决?

总结: after_commit和after_sync的区别:

after_commit半同步复制(mysql5.5和mysql5.6) 在innodb commit之后多了一步相应给客户端,响应客户端之前等待slave ack。

after_sync半同步复制(mysql5.7)是在innodb commit之前等待slave ack。

主要区别: 半同步复制与无损复制的主要区别在于半同步复制在事务 commit后等待Slave ACK(需要收到至少一个Slave节点回复的ACK), 无损复制在binlog sync后与Slave确认。虽然都同样避免不了数据丢失的风险,但是由于ack确认的位置不同, 这样就有一个大的区别在于其他事务是否看得见这个事务的修改操作,半同

;