题目
- 1、查询中哪些情况不会使用索引?
- 2、MySQL数据库索引,底层是怎样实现的,为什么要用B+树索引?
- 3、Mysql主从同步的实现原理?
- 4、MySQL是怎么用B+树?
- 5、谈谈数据库乐观锁与悲观锁?
- 6、有使用过哪些NoSQL数据库?MongoDB和Redis适用哪些场景?
- 7、描述分布式事务之TCC服务设计?
- 8、Redis 的数据结构以及优势
- 9、海量数据过滤,黑名单过滤一个 url
- 10、讲一讲AtomicInteger,为什么要用CAS而不是synchronized?
解答
题目一
- 题干:查询中哪些情况不会使用索引?
- 分析:
-
换个思路知道哪些情况下可以用到索引就可以了:
全值匹配
匹配左边的列
匹配范围值
精确匹配某一列并范围匹配另外一列
用于排序
用于分组
此外:我们要知道MySQL底层索引采用B+树结构,做到了索引即数据,数据即索引,真正的用户记录都在最底层的叶子结点中,从根节点到非页子节点都是目录页,联合索引都是根据索引列的顺序依次排序的。 - 回答:
-
找出一些不符合适用情况的,诸如:没有匹配最左前缀like zhangsan%,对索引列使用函数等。
题目二
- 题干:MySQL数据库索引,底层是怎样实现的,为什么要用B+树索引?
- 分析:
-
考察对于MySQL数据库的理解,首先MySQL底层的数据库索引的实现取决于底层所使用的存储引擎的类型,常见的有MyIsAM和InnoDB,使用最多的是InnoDB,所以我们一般都是讨论InnoDB底层索引的实现。InnoDB底层索引的实现是B+树。
- 回答:
-
底层使用B