MySQL 的事务隔离级别

一般为读未提交

事务隔离是为了解决脏读(读未提交)、不可重复读、幻读等问题;

InnoDB 和 MyISAM 的区别

InnoDB的特点

  1. 事务支持
    1. InnoDB支持事务 遵从ACID(原子性、一致性、隔离性、持久性)MyISAM不支持事务,可能会导致数据不一致
  2. 锁定级别
    1. InnoDB支持行级锁定,再并发读写的时候,之锁定行,不锁定表,提高并发性能和吞吐量
    2. 行级锁定是如何实现的:通过索引的索引项枷锁实现,只能通过索引条件来检索数据、不论使用主键索引、唯一索引还是普通索引,InnoDB都会使用行锁来对数据加锁。
    3. MyISAM锁定表,并发性能下降
  3. 数据完整性(与事务支持有关)
    1. InnoDB实现外键约束,和回滚日志保证数据的一致性和完整性、InnoDB适合数据关系复杂的程序
  4. 并发性能的差距(与锁定级别有关)
    1. 读写性能的差异:InnoDB的增删改查性能高,MyISAM的查询性能高
  5. 索引方式
    1. InnoDB使用聚集索引、及数据按照主键 的顺序存储,所以基于主键的查找会提高效率
    2. MyISAM使用非聚集索引,索引和数据存储和表定义是分开的,所以需要磁盘IO等
    3. MyISAM支持全文索引
  6. 外键支持
    1. InnoDB支持外键,MyISAM不支持
  7. 存储方式(InnoDB存储在一个文件,MyISAM存储分三份文件)
  8. InnoDB是MySQL5.5之后的默认引擎

MySQL 索引,以及它们的好处和坏处

索引:指向表行的指针,蕴蓄查询操作快速确定哪些符合条件,并检索到这些行的其他列值的数据结构

分为:普通索引、唯一索引、主键索引、外键索引、全文索引、复合索引等