1、基本知识
    2、关系型数据库和非关系型数据库
    3、mysql优化&索引失效
    4、MySQL主要提供2种方式的索引:B-Tree索引,Hash索引
    5、MyISAM与InnoDB 的区别
    6、面试官:MySQL索引为什么用B+树?

    答案:
    1、基本知识
    答:
    2、关系型数据库和非关系型数据库
    答:一、关系型数据库
    主流的有3个,mysql、sqlServer、Oracle
    以sql为例,关系型数据库存储结构是二维表结构,类似依据x,y可以定位一个数据;
    Relational DB ⇒ Databases ⇒ Tables ⇒ Rows ⇒ Columns
    关系型数据库 数据库 表 行 列(字段)
    基于行式存储,存储结构化数据,一行代表一条完整的信息。
    关系型数据库遵循ACID特性(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)),支持事务处理能力。
    但容量扩展性有限。
    数据库的ACID & 3种隔离级别 脏读、不可重复读、幻读
    适用场景:
    需要事务支持;
    基于sql的结构化查询存储,处理复杂的关系。
    二、非关系型数据库
    即NoSQL数据库(not only sql),一般以简单的key-value模式存储,因此大大增加了数据库的扩展能力,不支持ACID,远超于SQL的性能。
    一般用不着sql和用了sql也不行的情况,可以考虑使用Nosql。
    适用场景:
    对数据高并发的读写(mysql数据库存储在磁盘上,高并发会产生大量IO)
    对海量数据的读写(mysql数据库不支持海量数据)
    对数据高可扩展性的(例如key-value,redis中支持5种类型的value)

    1. 缓存型数据库
      (1)Redis
      存储结构:key -> value(String、list、set、hash(field-value)、zset(score-value))
      内存中数据有时间限制,也提供RDB和AOF两种持久化方式。
      (2)Memcached
      区别是不会持久化,完全基于内存,基本被Redis替代了。
      3、mysql优化&索引
      答:数据库索引失效的几种情况 https://blog.csdn.net/qq_34820803/article/details/105635720
      4、MySQL主要提供2种方式的索引:B-Tree索引,Hash索引
      答:B树索引具有范围查找和前缀查找的能力,对于有N节点的B树,检索一条记录的复杂度为O(LogN)。相当于二分查找。
      哈希索引只能做等于查找,但是无论多大的Hash表,查找复杂度都是O(1)。
      显然,如果值的差异性大,并且以等值查找(=、 <、>、in)为主,Hash索引是更高效的选择,它有O(1)的查找复杂度。
      如果值的差异性相对较差,并且以范围查找为主,B树是更好的选择,它支持范围查找。
      5、InnoDB和MyISAM的区别是什么?
      https://blog.csdn.net/qq_35642036/article/details/82820178
      1、InnoDB支持事务,MyISAM不支持;
      2、InnoDB表必须有主键(用户没有指定的话会自己找或生产一个主键),而Myisam可以没有
      3、InnoDB支持行级锁,MyISAM只支持表锁;
      4、InnoDB支持崩溃后的恢复,MyISAM不支持;
      5、InnoDB支持外键,MyISAM不支持;
      6、InnoDB不支持全文索引,MyISAM支持全文索引;
      6、面试官:MySQL索引为什么用B+树?
      https://zhuanlan.zhihu.com/p/69137713