mysql
知更鸟女孩
改变不了沙漠,就长成仙人掌
展开
-
间隙锁和next-key lock——幻读是什么,幻读有什么问题?
我们在举例加锁读的时候,用的是这个语句,select * from t where id=1 lock in share mode。由于 id 上有索引,所以可以直接定位到 id=1 这一行,因此读锁也是只加在了这一行上。表结构:CREATE TABLE `t` ( `id` int(11) NOT NULL, `c` int(11) DEFAULT NULL, `d` in...原创 2020-03-11 15:23:23 · 1203 阅读 · 0 评论 -
表锁、行锁和一致性读——为什么我只查一行的语句,也执行这么慢?
目录1、第一类:查询长时间不返回(1)等 MDL 锁(2)等 flush(3)等行锁2、第二类:查询慢(1)扫描行数多,所以执行慢(2)一致性读需要进行多次回滚操作1、第一类:查询长时间不返回mysql> select * from t where id=1;一般碰到这种情况的话,大概率是表 t 被锁住了。首先执行一下 show processl...原创 2020-03-11 11:29:59 · 351 阅读 · 0 评论 -
InnoDB的事务和锁——事务到底是隔离的还是不隔离的?
参考文章:https://time.geekbang.org/column/article/70562目录引例1、表结构2、事务执行流程3、事务启动方式4、“视图”概念“快照”在 MVCC 里是怎么工作的?1、行状态变更及多版本2、可重复读3、一致性视图4、数据版本的可见性规则4、事务A返回的结果为什么是k=1?判断方式一:利用数据版本的可见性规...原创 2020-02-04 15:49:00 · 453 阅读 · 0 评论 -
MYSQL的全局锁、表锁、行锁——行锁功过:怎么减少行锁对性能的影响?
参考文章:http://gk.link/a/101pG全局锁和表级锁:在server层实现行锁:在引擎层由各个引擎自己实现的。MyISAM 引擎就不支持行锁,并发控制只能使用表锁,对于这种引擎的表,同一张表上任何时刻只能有一个更新在执行,这就会影响到业务并发度;InnoDB 是支持行锁的两阶段锁协议在 InnoDB 事务中,行锁是在需要的时候才加上的,但并不是不需要了就立刻释放,而...原创 2020-02-02 17:57:44 · 350 阅读 · 0 评论 -
MYSQL的全局锁、表锁、行锁——全局锁和表锁:给表加个字段怎么有这么多阻碍?
参考文章:http://gk.link/a/101o8目录全局锁1、如何加全局锁和全局锁的使用场景2、备份为什么要加锁?3、官方自带mysqldump(–single-transaction )确保拿到一致性视图4、为什么还需要FTWRL?5、为什么不使用readonly使全局库只读?表级锁1、表锁2、元数据锁MDL3、如何安全地给小表加字段?根据加...原创 2020-02-02 15:29:51 · 821 阅读 · 0 评论 -
MYSQL的索引——深入浅出索引(下)
参考文章:https://time.geekbang.org/column/article/69236目录覆盖索引最左前缀原则索引下推回到主键索引树搜索的过程,我们称为回表。那么,有没有可能经过索引优化,避免回表过程呢?create table T (ID int primary key,k int NOT NULL DEFAULT 0, s varchar(16)...原创 2020-02-01 16:53:13 · 257 阅读 · 0 评论 -
MYSQL的索引——深入浅出索引(上)
参考文章:https://time.geekbang.org/column/article/68319目录索引的常见模型1、哈希表2、有序数组3、搜索树InnoDB 的索引模型索引维护索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。索引的常见模型1、哈希表哈希表是一种以键 - 值(key-value)存储数据的结构,只要输入待查找的值即 ke...原创 2020-02-01 15:59:58 · 391 阅读 · 2 评论 -
事务隔离级别与实现——事务隔离:为什么你改了我还看不见?
参考文章:https://time.geekbang.org/column/article/68963目录隔离性与隔离级别事务隔离的实现事务的启动方式事务就是要保证一组数据库操作,要么全部成功,要么全部失败。MySQL 原生的 MyISAM 引擎就不支持事务,本文以InnoDB 为例,剖析 MySQL 在事务支持方面的特定实现。隔离性与隔离级别1、事务的隔离性:AC...原创 2020-01-21 22:41:35 · 233 阅读 · 0 评论 -
MYSQL日志系统——一条SQL更新语句是如何执行的
参考文章:https://time.geekbang.org/column/article/68633目录redo log(重做日志)binlog(归档日志)怎样让数据库恢复到半个月内任意一秒的状态?两阶段提交创建表:mysql> create table T(ID int primary key, c int);更新数据:mysql> update T ...原创 2020-01-21 21:35:51 · 222 阅读 · 0 评论 -
MYSQL基础架构——一条SQL查询语句是如何执行的
参考文章:https://time.geekbang.org/column/article/68319目录MySQL 的逻辑架构图连接器查询缓存分析器优化器执行器MySQL 的逻辑架构图大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能...原创 2020-01-21 20:49:38 · 272 阅读 · 0 评论