MySQL 基本概念

MyISAM:无事务、锁表、读写互相阻塞、索引不缓存数据、数据与索引分离,都是【非聚集索引】
InnoDB:有事务,默认用主键or唯一非空列or隐藏列建立【聚集索引】(只能有一个),索引和数据在同一个B(平衡)树,影响增改性能,速度快,特性如下:

  • 插入缓冲(insert buffer)
  • 两次写(double write)
  • 自适应哈希索引(adaptive hash index,AHI)
  • 异步IO(asynchronous IO,AIO)
  • 刷新邻接页(flush neighbor page)

稠密索引、稀疏索引

下面三个是很常见的知识点,一定要反复复习记住

ACID

  • 原子性 atomicity
  • 一致性 consistency
  • 隔离性 isolation
  • 持久性 durability

隔离级别

隔离级别 脏读 不可重读 幻读 英文名 默认
RU 读未提交 Read uncommitted
RC 读已提交 × Read committed 其他
RR 可重读 × × Repeatable read MySQL
S 串行化 × × × Serializable
  • 读未提交 = 脏读,没有隔离性,Saga 分布式事务的缺点
  • 读已提交 = 不可重读:更新,一个事务两次读取内容不一样
  • 幻读:插入,一个事务两次读取条数不一样,MySQL 用 MVCC 解决
  • 多版本并发控制 MVCC Multiversion Concurrency Control
    • DB_TRX_ID 最近增改事务ID
    • DB_ROLL_PTR 回滚指针,上一版本 0x...
    • DB_ROW_ID 自增ID,没有主键时的聚簇索引
    • DELETED_BIT 删除

CAP

  • 一致性 Consistency
  • 可用性 Availability
  • 分区容错性 Partition tolerance

与缓存一致性

  • 先更新数据库,避免刚删完缓存就被其他线程刷入旧数据
  • 缓存使用删除而不是更新,避免更新时数据库内容已经变了
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容