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

与缓存一致性

  • 先更新数据库,避免刚删完缓存就被其他线程刷入旧数据
  • 缓存使用删除而不是更新,避免更新时数据库内容已经变了


posted @ 2023-03-30 15:32  何童鞋  阅读(14)  评论(0编辑  收藏  举报