事务的隔离级别
**
- 读未提交(脏读)
- 读已提交(默认大多数数据库的隔离级别)
- 可重复读(mysql默认的隔离级别,幻读:事务A修改某些行,事务B在此期间又添加了一行,事务A回头一看我艹,还有没修改的行,我他妈难道产生幻觉了吗,为啥没修改成功这一行呢)
- 序列化:最高的隔离级别,强制事务排序,使它们不可能冲突,从而解决幻读问题。通过在每个读的数据行上加上共享锁,可能会导致读超时和锁竞争。 **
mysql可重复读实现原理
多版本并发控制,每行数据多了2列版本信息,每次读<=当前版本信息的值
mysql索引:BTree索引、hash索引、全文索引
**
- MyISAM引擎使用B+Tree作为索引结构
- 虽然InnoDB也使用B+Tree作为索引结构,但具体实现方式却与MyISAM截然不同。 **
mysql索引
**
- 最左前缀匹配原则-注意索引会终止到范围查询
- 尽量选择区分度高的列作为索引,区分度的公式是count(distinct col)/count(*),表示字段不重复的比例,比例越大我们扫描的记录数越少 **