高性能Mysql(第一章)

  1. 事务的特性
    1. 原子性 a
    2. 一致性 c
    3. 隔离性 i
    4. 持久性 d
  2. 隔离级别
    1. read uncommited 未提交读-脏读-少用
    2. read commited 提交读-其他sql默认-不可重复读-两次执行查询的结果可能不同
    3. repeatable read 可重复读-mysql默认-幻读(MVCC解决)-多次读取结果相同
    4. serializable 可串行化-最高的隔离级别-避免幻读-加行锁-造成争锁问题-少用
  3. 死锁


    高性能Mysql(第一章)_第1张图片
    image.png

    mysql解决:将持有最少行级排它锁的事务进行回滚

  4. 多版本并发控制(MVCC)
  5. 存储引擎的选择:
    除非需要用到innodb不支持的特性,并且没有其他办法可以代替,否则都使用innodb。
    1. 如果需要全文索引,则优先考虑innodb+sphinx的组合,而不是使用支持全文索引的myisam。
    2. 如果不在乎扩展能力,并发,也不在乎崩溃后的数据丢失问题,却对innodb的空间占用比较敏感,这种场景下使用myisam比较合适。
    3. 除非万不得已,否则不建议使用混合存储引擎,可能有一些问题,比如事务。
    4. 如果需要事务,那么选择innodb是最稳定的选择,如果不需要事务,并且主要是select和insert操作,那么myisam是不错的选择,一般日志型的应用比较符合这一特性。
    5. 备份,如果可以定期的关闭服务来执行备份,那么备份的因素可以忽略,但是如果需要在线热备份,那么选择innodb就是基本的要求。
    6. 崩溃恢复,相对而言,myisam崩毁后发生损坏的概率比InnDB高得多,而且恢复速度也较慢,因此,即使很多人不需要事务,也会选择InnoDB。

你可能感兴趣的:(高性能Mysql(第一章))