mysql面试题

面试题:mysql的整理

mysql数据库默认的使用是innodb,在5.5之前使用的是mylsam存储方式

区别:

主要是在性能和事务控制之上

mylsam被设计出来查频率大于写频率的数据,而innodb适合高并发读写的场景,并且支持事务,回滚,行级锁和外键约束,可以使用事务日志进行数据恢复

聚簇索引:数据和索引放在一起,只是索引结构的叶子节点保存了数据,即在最后一层保存数据

非聚簇索引:将数据和索引分开存储.索引结构的叶子节点指向了数据对应的位置

在innodb中,聚簇索引之上创建的索引称之为辅助索引,非聚簇的都是辅助索引,像复合索引、前缀索引、唯一索引。辅助索引叶子节点存储的不再是行的物理位置,而是主键值,辅助索引访问数据总是需要二次查找

innodb使用的是聚簇索引,将主键组织到一个b+树上,而行数据就存储在叶子节点上,如果是根据id查找就是根据b+树的特点进行查找,获取叶节点然后获取数据

聚簇索引具有唯一性,默认是主键

mylsam使用的是非聚簇索引,

innodb和mylsam两种存储方式,节点的结构完全一致只是存储的内容不同而已,主键索引B+树的节点存储了主键,辅助键索引B+树存储了辅助键。表数据存储在独立的地方,这两颗B+树的叶子节点都使用一个地址指向真正的表数据,对于表数据来说,这两个键没有任何差别。由于索引树是独立的,通过辅助键检索无需访问主键的索引树

innodb的事务方面:

  • 事务就是一个不可分割的工作单元,通常一个事务对应一个完整的业务.如银行账户转账操作,即是一个完整的业务,最小单元,不可分割
事务的四大特征:
  • 原子性,事务的最小单位,不可分割,要么全部执行要么回滚

  • 一致性,事务要求所有的语句操作的时候,必须保证同时成功或者同时失败

  • 隔离性,两个原子之间互不影响

  • 持久性,是事务的保证,事务终结的标志是内存的数据持久化到硬盘文件中

    事务有关的:commit和rollback

事务的隔离级别
  • 读未提交:脏读:(事务A未提交的数据,事务B可以读取)

  • 读已提交:不可重复读:(事务a提交之后,事务b才可以读取)

  • 可重复读:幻读:(事务A提交之后的数据,事务B读取不到)

  • 串行化:事务A和事务B,事务A在操作数据库时,事务B只能排队等待, 这种隔离级别很少使用,吞吐量太低,用户体验差可避免幻读

你可能感兴趣的:(mysql面试题)