MySQL 日志:undo log、redo log、binlog 有什么用?
语句的执行
那么,执行一条 update 语句,期间发生了什么?比如这一条 update 语句:
UPDATE t_user SET name = 'xiaolin' WHERE id = 1;
查询语句的那一套流程,更新语句也是同样会走一遍:
客户端先通过连接器建立连接,连接器自会判断用户身份;
...
MySQL 死锁了,怎么办?
有个业务主要逻辑就是新增订单、修改订单、查询订单等操作。然后因为订单是不能重复的,所以当时在新增订单的时候做了幂等性校验,做法就是在新增订单记录之前,先通过 select … for update 语句查询订单是否存在,如果不存在才插入订单记录。
而正是因为这样的操作,当业务量很大的时候,就可能会出现死锁。
接下来跟大家聊下为什么会发生死锁,以及怎么避免死...
MySQL 有哪些锁?
这次,来说说 MySQL 的锁,主要是 Q&A 的形式,看起来会比较轻松。
在 MySQL 里,根据加锁的范围,可以分为全局锁、表级锁和行锁三类。
全局锁
全局锁是怎么用的?
要使用全局锁,则要执行这条命令:
flush tables with read lock
执行后,整个数据库就处于只读状态了,这时其他线程执行以下操作,都会被阻塞:
...
前言
如果你知道 MySQL 一行记录的存储结构,那么这个问题对你没什么难度。
如果你不知道也没关系,这次我跟大家聊聊 MySQL 一行记录是怎么存储的?
知道了这个之后,除了能应解锁前面这道面试题,你还会解锁这些面试题:
MySQL 的 NULL 值会占用空间吗?
MySQL 怎么知道 varchar(n) 实际占用数据的大小?
varchar(n) 中 n 最大取值为多少?
...