zhaobinglong / myBlog

https://zhaobinglong.github.io/myBlog/
MIT License
7 stars 0 forks source link

MySQL优化 #7

Open zhaobinglong opened 4 years ago

zhaobinglong commented 4 years ago

MySQL存储引擎

MySQL两个引擎MyISAM 和 InnoDB 作者:oscarwin 链接:https://www.zhihu.com/question/20596402/answer/211492971 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  1. InnoDB 支持事务和外键,MyISAM 不支持
  2. InnoDB 是聚集索引,MyISAM 是非聚集索引。聚簇索引的文件存放在主键索引的叶子节点上,因此 InnoDB 必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。而 MyISAM 是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。
  3. InnoDB 不保存表的具体行数,执行 select count(*) from table 时需要全表扫描。而MyISAM 用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;
  4. InnoDB 最小的锁粒度是行锁,MyISAM 最小的锁粒度是表锁。
zhaobinglong commented 3 years ago

查询层面的优化

zhaobinglong commented 3 years ago

字段层面的优化

zhaobinglong commented 3 years ago

写层面的优化

zhaobinglong commented 3 years ago

物理层面的优化

zhaobinglong commented 3 years ago

架构层面的优化