摘要: MySQL 的行锁是在引擎层由各个引擎自己实现的。但并不是所有的引擎都支持行锁,比如 MyISAM 引擎就不支持行锁。不支持行锁意味着并发控制只能使用表锁,对于这种引擎的表,同一张表上任何时刻只能有一个更新在执行,这就会影响到业务并发度。InnoDB 是支持行锁的,这也是 MyISAM 被 Inno 阅读全文
posted @ 2020-01-18 16:23 者諹 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 本篇聊聊 MySQL 的锁。数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。 根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。本篇文章,分享全局锁和表级锁。 这里需 阅读全文
posted @ 2020-01-18 16:22 者諹 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 在开始这篇文章之前,我们先来看一下这个问题: 在下面这个表 T 中,如果我执行 select * from T where k between 3 and 5,需要执行几次树的搜索操作,会扫描多少行? 下面是这个表的初始化语句。 mysql> create table T ( ID int prim 阅读全文
posted @ 2020-01-18 16:18 者諹 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 提到数据库索引,我想你并不陌生,在日常工作中会经常接触到。比如某一个 SQL 查询比较慢,分析完原因之后,你可能就会说“给某个字段加个索引吧”之类的解决方案。但到底什么是索引,索引又是如何工作的呢?今天就让我们一起来聊聊这个话题吧。 数据库索引的内容比较多,我分成了上下两篇文章。索引是数据库系统里面 阅读全文
posted @ 2020-01-18 16:17 者諹 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 提到事务,你肯定不陌生,和数据库打交道的时候,我们总是会用到事务。最经典的例子就是转账,你要给朋友小王转 100 块钱,而此时你的银行卡只有 100 块钱。 转账过程具体到程序里会有一系列的操作,比如查询余额、做加减法、更新余额等,这些操作必须保证是一体的,不然等程序查完之后,还没做减法之前,你这 阅读全文
posted @ 2020-01-18 16:15 者諹 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。 那么,一条更新语句的执行流程又是怎样的呢? 之前你可能经常听 DBA 同事说,MySQL 可以恢复到半个月内任意一秒 阅读全文
posted @ 2020-01-18 16:13 者諹 阅读(212) 评论(0) 推荐(0) 编辑
摘要: mysql> select * from T where ID=10; 我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行过程。 把 MySQL 拆解一下,看看里面都有哪些“零件”。 希望借由这个拆解过程,让你对 MySQL 有更深入的理解。 MySQL 的逻辑架构 阅读全文
posted @ 2020-01-18 16:11 者諹 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 前言:电脑系统为window 10专业版,64位 相关步骤: 1、安装Git和配置好Git环境 安装成功的象征就是在电脑上任何位置鼠标右键能够出现如下两个选择 注意:一般出于安全考虑,只有在Git Bash Here中才能进行Git的相关操作。如果需要在cmd命令行里调用Git,那么就要配置电脑的环 阅读全文
posted @ 2020-01-18 16:09 者諹 阅读(201) 评论(0) 推荐(0) 编辑