MySQL知识点

  1. 语法
  2. MyISAM 和 InnoDB 的区别
  3. B树和B+树区别
  4. 索引
  5. 事务
    1. MVCC
  6. 日志

语法

排除记录时用 where,join on 是进行笛卡尔连接的。

当想要获得某个列(如工资)的排序,可以考虑表自连接。

(select s1.salary from salaries s1, salaries s2 where s1.salary <= s2.salary group by s1.salary having count(distinct(s2.salary)) = 2)

MyISAM 和 InnoDB 的区别

  • 行级锁:MyISAM 只有表级锁,InnoDB 支持行级锁和表级锁
  • B+树:二者都是把B+树作为索引结构,但 MyISAM 的索引都是非聚簇索引(叶子节点的data部分放数据记录的地址),InnoDB 的主键索引使用的是聚簇索引(叶子节点部分就是数据),二级索引使用的是非聚簇索引。
  • 事务:MyISAM不支持事务。
  • 外键:MyISAM不支持外键。

B树和B+树区别

  • B+树非叶子节点不放数据只放索引,B树非叶子节点放数据也放索引

  • 范围查询时,B+树的叶子节点之间形成了双向链表,B树则需要进行中序遍历找到查询的下限。

  • 查询时,B树对范围内的节点作二分查找,找到就结束了;B+树则肯定会查询到底,效率比较稳定。

索引

索引失效的情况

  • like 左模糊或全模糊查询
  • 最左匹配失效
  • where 错误使用 or 关键字
  • 索引隐式类型转换
  • 对索引使用函数

事务

MVCC

readview 是事务 在开始执行时创建的一个快照,它包含了事务 B 开始时已经提交的事务的 ID。

可重复读如何实现

启动事务时创建一个 Read View,整个事务期间用这个 Read View。

日志


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1216271933@qq.com

×

喜欢就点赞,疼爱就打赏