MySQL

一、RC和RR区别:

二、mysql中的锁

SELECT ... LOCK IN SHARE MODE 和 SELECT ... FOR UPDATE 的 区别

下面链接里内容需要更正一下:

意向锁是表级锁,是InnoDB存储引擎自动加的,不需要用户干预。

SELECT ... LOCK IN SHARE MODE是共享锁,在加共享锁前必须先取得该表的意向共享锁(IS);

SELECT ... FOR UPDATE是排他锁,在加排他锁前必须先取得该表的意向排他锁(IX);

用法见下面链接:

谈谈 MySQL 锁

mysql表锁:频繁插入(insert)的业务,用什么存储引擎更合适? | 数据库系列

三、mysql索引

一、MyISAM的索引

MyISAM的索引与行记录是分开存储的,叫做非聚集索引(UnClustered Index)。

其主键索引与普通索引没有本质差异:

(1)有连续聚集的区域单独存储行记录;

(2)主键索引的叶子节点,存储主键,与对应行记录的指针;

(3)普通索引的叶子结点,存储索引列,与对应行记录的指针;

画外音:MyISAM的表可以没有主键。

主键索引与普通索引是两棵独立的索引B+树,通过索引列查找时,先定位到B+树的叶子节点,再通过指针定位到行记录。

二、InnoDB的索引

  • InnoDB的主键索引与行记录是存储在一起的,故叫做聚集索引(Clustered Index):

(1)没有单独区域存储行记录

(2)主键索引的叶子节点,存储主键,与对应行记录(而不是指针);

因为这两个特性,InnoDB的表必须要有聚集索引,并且查询是非常快的聚集索引,也只能够有一个,因为数据行在物理磁盘上只能有一份聚集存储

聚集索引选择:

(1)如果表定义了PK,则PK就是聚集索引;

(2)如果表没有定义PK,则第一个非空unique列是聚集索引;

(3)否则,InnoDB会创建一个隐藏的row-id作为聚集索引;

  • InnoDB的普通索引可以有多个,与行记录也是分开存储的,属于非聚集索引

(1)普通索引的叶子节点,存储主键(也不是指针)

先通过普通索引找到主键,再通过主键索引找到行记录(回表)

MySQL 索引入门 :索引模型类别、什么情况下创建索引但是没有走索引?(情况:查询优化器选择性)

Mysql索引面试题 - 割肉机 - 博客园:mysql5.6有索引下推。

hash索引使用场景比较局限

  1. hash索引仅适用于‘=’、‘<=>’和‘in’操作,所以hash仅仅适用于精确查找。
  2. 不适用于查询排序,因为hash后的数据并不会像原数据一样保持有序。
  3. 不适用于模糊查询,也就是不能使用like关键字。
  4. 既然不支持排序,也肯定不支持范围查询咯
  5. 数据量大容易有hash碰撞,导致查询效率低

sql优化实战:

MySQL的or/in/union与索引优化 | 架构师之路

同一个SQL语句,为啥性能差异咋就这么大呢?(1分钟系列)

四、mysql主从复制

1、日志

​​​​​​MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结 - MSSQL123 - 博客园

mysql如何保证数据不丢失:        蚂蚁金服一面:十道经典面试题解析

总结:

  • redolog一般默认有两个,循环使用;当数据库事务提交成功时会把page标记为dirty,当脏页刷新到磁盘,redolog的作用也就结束了。

2、主从复制

启动时从库向主库申请拉取binlog之后主库有更新时推送给从库

Mysql主从复制&半同步复制原理_Vincent's tech blog-CSDN博客_mysql半同步复制原理

MySQL主从延时这么长,要怎么优化?

mysql总结:关于MySQL,你未必知道的!

五、数据库架构及表设计

典型数据库架构设计与实践 | 架构师之路

1对多业务,数据库水平切分架构一次搞定 | 架构师之路

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值