摘要:
概述 表级锁是MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持。最常使用的MYISAM与INNODB都支持表级锁定。表级锁定分为表共享读锁(共享锁)与表独占写锁(排他锁)。 特点:开销小,加锁快;不会出现死锁;锁定粒度大,发出锁冲突的 阅读全文
摘要:
在上一篇文章,我们学习了间隙锁和next-key lock,但是不知道怎么加锁,有哪些规则。间隙锁的概念不太好理解,尤其是配合上行锁后,很容易在判断是否会出现锁等待的问题上犯错。 今天我们就来学习一下加锁规则吧。 在学习前要说明一点,以下的规则只限于版本范围:5.x系列<=5.7.24,8.0系列< 阅读全文
摘要:
主备同步,也叫主从复制,是MySQL提供的一种高可用的解决方案,保证主备数据一致性的解决方案。 在生产环境中,会有很多不可控因素,例如数据库服务挂了。为了保证应用的高可用,数据库也必须要是高可用的。 因此在生产环境中,都会采用主备同步。在应用的规模不大的情况下,一般会采用一主一备。 除了上面提到的数 阅读全文
摘要:
概述 前面两篇文章介绍了MySQL的全局锁和表级锁,今天就介绍一下MySQL的行锁。 MySQL的行锁是各个引擎内部实现的,不是所有的引擎支持行锁,例如MyISAM就不支持行锁。 不支持行锁就意味着在并发操作时,就要使用表锁,在任意时刻都只能有一个更新操作在执行,这样会影响业务的并发性。这也是为什么 阅读全文
摘要:
数据库锁设计的初衷是处理并发问题,这也是数据库与文件系统的最大区别。 根据加锁的范围,MySQL里大致可以分为三种锁:全局锁、表锁和行锁。接下来我们会分三讲来介绍这三种锁,今天要讲的是全局锁。 全局锁 全局锁,顾名思义,就是对整个数据库加锁。MySQL 提供了一个加全局读锁的方法,命令是 Flush 阅读全文
摘要:
简单来说,事务就是要保证一组数据库操作,要么全部完成,要么全部失败。 为什么要有事务 数据库中的数据是共享资源,因此数据库系统通常要支持多个用户的或不同应用程序的访问,会出现并发存取数据的现象。 数据库系统必须对这种并发操作提供一种相应的处理机制来保证,访问彼此之间不受任何干扰,从而保证数据库的正确 阅读全文
摘要:
首先我们来了解 MySQL 的逻辑架构,对 MySQL 有一个整体的认识。 例如在执行下面的一条语句时: mysql> select * from T where ID=10; 我们看到的结果是返回一条记录,那么 MySQL 是如何执行这条 SQL 查询语句呢? 首先我们来看一下 MySQL 的逻辑 阅读全文
摘要:
为什么要有 redo log 用个酒店掌柜记账的例子说明 redo log的作用。 酒店掌柜有一个粉板,专门用来记录客人的赊账记录。如果赊账的人不多,那么他可以把顾客名和账目写在板上。但如果赊账的人多了,粉板总会有记不下的时候,这个时候掌柜一定还有一个专门记录赊账的账本 如果有人要赊账或者还账的话, 阅读全文
摘要:
ocelot 中间件的变化 Intro# 之前我们使用 ocelot 的时候自定义了一些中间件来实现我们定制化的一些需求,最近博客园上有小伙伴问我怎么使用,他用的版本是 16.0 版本,16.0 和 17.0 版本的差异不是特别大,就以 17.0 版本为例看一下 ocelot 中间件的变化 Samp 阅读全文