03 MySQL

Wu Jun 2020-02-12 19:59:14
20 笔记梳理

binlog 异步么

acid

B+树、索引结构、索引的分类、乐观锁、悲观锁、共享锁、排它锁、MVCC、GAP、ACID特性、隔离级别、事务原理、造成数据库死锁的原因,如何避免数据库死锁、如何使用explain、什么情况下会导致索引失效、如何进行数据库优化、建立索引需要注意什么

01 关系数据库

三范式

02 锁

1 锁粒度

2 锁类型

3 间隙锁(Next-Key Locks)

03 事务

MySQL 默认采用自动提交模式。如果不是显式地开始一个事务,那么每个查询都会被当做一个事务自动提交。

1 ACID

原子性(Atomicity,回滚日志 undo log)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability,重做日志 redo log)

2 隔离级别

未提交读(脏读)、提交读(不可重复性读)、可重复读(默认级别,MVCC+间隙锁 解决幻读)、可串行化

04 多版本并发控制

MVCC 是行级锁的一个变种,尽可能避免加锁,用“事务版本号”比较“行版本号”和“行删除标识”,进行校验

05 存储引擎

06 索引

索引(Index)是帮助 MySQL 高效获取数据的数据结构。在存储引擎中实现。

07 水平垂直拆分

08 主从复制

09 其它

1 SQL注入

2 删除重复记录

NOT IN

DELETE FROM visitor_province_yn
 WHERE id NOT IN(
  SELECT id
  FROM(
   SELECT MIN(vpy.id) AS id
   FROM visitor_province_yn AS vpy
   GROUP BY vpy.visitor, vpy.province, vpy.yn
    ) AS tmp
  );