Mysql面试题----MyISAM和InnoDB的区别

数据存储结构

  • MyISAM:将表数据和索引分开存储,数据文件和索引文件分别以.MYD 和.MYI 为扩展名。数据文件按照记录插入的顺序存储,索引文件则是 B + 树结构,叶子节点存储的是数据记录的物理地址。
  • InnoDB:采用聚集索引的方式存储数据,将数据和索引存储在同一个文件中,通常以.ibd 为扩展名。表数据按照主键的顺序存储在聚簇索引的叶子节点中,如果没有显式定义主键,InnoDB 会选择一个唯一的非空索引作为聚簇索引的键,如果没有这样的索引,InnoDB 会自动生成一个隐藏的主键。

事务支持

  • MyISAM:不支持事务,这意味着在执行多个操作时,如果出现错误,无法进行回滚操作来保证数据的一致性。它适用于对事务要求不高,以读操作为主的应用场景,如一些简单的博客系统、数据仓库等。
  • InnoDB:支持事务,遵循 ACID 特性(原子性、一致性、隔离性、持久性),能够保证在事务执行过程中,数据的完整性和一致性。它提供了多种事务隔离级别,可以根据具体的业务需求进行选择。

锁机制

  • MyISAM:采用表级锁,即在执行操作时,会对整个表进行锁定。这意味着在同一时间内,只能有一个线程对表进行写操作,读操作可以并发进行,但写操作会阻塞读操作和其他写操作,并发性能较差。
  • InnoDB:支持行级锁和表级锁,默认采用行级锁。行级锁可以精确地控制对数据行的访问,在并发操作时,只有涉及到的行才会被锁定,

你可能感兴趣的:(Java面试题,mysql,数据库)