- 博客(5)
- 收藏
- 关注
原创 MySQL中的锁
粗略的分,我们可以将MySQL中的锁分成三类,分别是:全局锁表级锁行级锁以上这三种锁都非常好理解,下面我依次给大家介绍下全局锁顾名思义,全局锁就是对整个数据库的实例加锁,在MySQL中有这样一个可以加全局锁的方法:FLUSH TABLES WITH READ LOCK(FTWRL)这句语句的作用是将当前数据库实例中所有的表都处于只读状态,我们用到这个这个语句的场景是在我们备份数据的过程中,下面我们举一个例子。假设我们有两个表分别是表a和表b,分别记录了一个用户的钱包余额以及已购商品列表,
2021-05-19 20:34:16 136 1
原创 到底什么是幻读,幻读究竟能造成什么问题
首先,为了说明白这个问题,我们先建一个表。create table t( id int NOT NULL, c int DEFAULT NULL, d int DEFAULT NULL, primary key (id), key c(c))engine=innoDB;insert into t values(0,0,0),(5,5,5),(10,10,10),(15,15,15),(20,20,20),(25,25,25);现在我们执行这样一行语句。select * from
2021-05-19 20:29:46 1436 4
原创 事务隔离级别的简介与MVCC的实现
大家对MySQL事物的隔离级别一定很清楚,分别有:读未提交读已提交可重复读串行化而mysql默认的隔离级别是可重复读,那么今天我就给大家说说可重复读的实现原理。可重复的的意思就是在在一个事务开始过后,无论是否其他事务对某一行或某几行进行了修改,只要本事务没有对其修改,那么这些行的数据在本事务中永远是不变的。所以在mysql内部究竟是如何实现这一机制的呢?实现这一机制是否会带来其他的问题呢?首先我们关注下这个事务执行的时序图事务A事务B开启事务开启事务查询得到值
2021-05-10 21:54:09 219 1
原创 Mysql架构以及SQL语句的执行流程
Mysql架构以及SQL语句的执行流程在平时的开发过程中,我们使用的数据库大多数看到的只是数据库的一个整体,一般都是输入一条语句,返回一个结果集,但是如果我们不知道其内部执行的细节,当我们在碰到一些异常情况的时候,可能不知道如何下手,更别谈对sql语句的优化了,在这篇文章中,我来简单的介绍下mysql设计的架构以及当我们输入一条SQL语句的时候在mysql内部是如何执行的。我们来举个例子,比如有如下一个简单的查询语句select * from T where id = 1;我们如果直接执行这条语
2021-05-05 16:02:52 1513 5
原创 设计模式之工厂模式总结
设计模式之工厂模式什么是工厂模式?工厂模式是一种常见的设计模式,将我们创建对象的行为封装(因为创建对象的行为往往是重复的)然后直接调用工厂模式所给出的方法创建对象即可。工厂模式有三种: 1. 简单工厂模式 2. 工厂方法模式 3. 抽象工厂模式接下来我依次进行说明。简单工厂模式简单工厂模式的实现非常简单。假设我们现在有如下的关系。ICourse接口,JavaCourse是...
2020-05-01 23:17:18 259
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人