MySQL 乐观锁

一、乐观锁说明 乐观锁的使用原理是在数据表中添加一个版本字段,每次先查询当前的版本,在更新数据的时候判断版本是否和查询到的版本一致,一致就说明数据没有被修改,可以操作数据并把版本号+1;如果版本号不一致就说明数据已经被更改了,不进行操作。 相对悲观锁来说,乐观锁用得更广泛一点,但乐观锁的缺点是操作失 ... 阅读更多

MySQL 悲观锁

一、什么是悲观锁 前文说明了 MySQL 事务在并发环境下会导致脏读和不可重复读等等的现象,数据库通过事务隔离级别也就是我们常说的锁来解决这个问题。悲观锁的工作原理是假设每次事务都会被其他事务打断,所以在每次操作数据时,都把数据设置成锁定状态,使得其他事务无法再操作。悲观锁能有效的防止数据并发带来的各种 ... 阅读更多

MySQL 的事务隔离级别

一、事务并发带来的问题 1.1 第一类丢失更新 两个事务同时更新一行数据,第一个事务正常更新,第二个事务中途退出回滚数据到初始状态,导致第一个事务更新失效。 如:银行卡存储了用户甲的余额 4000,此时事务 A 和 B 同时开始更新余额,事务 A 将余额更新到 5000 后正常退出,事务 B 执行出错导致更新失败,然后回 ... 阅读更多

MySQL 事务的基本用法

一、什么是事务 事务是一组 SQL 语句构成的语句集合,它保证所有的 SQL 都能全部执行或者全部不执行。 事务必须满足四个条件 (ACID):Atomicity 原子性 Consistency 一致性 Isolation 隔离性 Durability 持久性 原子性:一个事务 (transaction) 中的所 ... 阅读更多

源码编译安装 Redis 6.x

一、编译安装 Redis 官网地址:redis 官网,官网可能会打不开,可以在 github 的发布页中下载:Release-redis 。 当前最新版 6.0-rc1,下载 redis:

编译 redis6.0 需要 GCC5 以上版本,低版本会报错,如 ... 阅读更多

MySQL 中 CHAR(m) 、 VARCHAR(m) 和 INT(m) 的区别

一、区别 char(m):m 表示长度,固定 m 宽度的字符,不足用空格补齐,取出数据时会删掉尾部的空格。 varchar(m):m 表示长度,不固定,有多少字符就存多少字符,不会删除尾部的空格。 int(m):m 表示显示的位数,不会决定 int 的范围大小,需配合 zerofill 字段一起使用。 二、示例 创 ... 阅读更多

MYSQL 中的分组 GROUP BY 的使用方法

一、概述     题外话:MYSQL 这个东西在工作前都用得少,因为在学校也没怎么学习过,就学了一点很浅的,了解有这个东西。然后后来自学才勉强算是把」 增删改查 「 这四个基本操作学会,工作之后才发现远远不够,后面疯狂补才把一些稍微高级一点的东西学会。分组这个东西应该算是高级的东西了吧,用处也是十分广泛 ... 阅读更多

MYSQL 时间戳 TIMESTAMP 的更新:CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP

一、概述 在工作中,经常需要用到更新时间戳的操作,比如在插入一行语句之后要把时间设置成插入时间,或者修改了一行数据也要把时间设置为更新的时间。如果每次都是手动去获取时间然后通过 update 去更新字段,就很麻烦了。这时候可以利用 mysql 提供的两个操作来完成:CURRENT_TIMESTAMP O ... 阅读更多

Linux 源码安装 mysql 5.6

一、概述 源码安装 mysql 的步骤比较繁琐,各种不小心然后导致了各种错误,鼓捣了一下午终于搞定,建议直接用 yum install mysql 命令 安装,简单省事 。 系统环境:CentOS6.9,腾讯云。 下载地址:https://dev.mysql.com/downloads/mysql/,特别小 ... 阅读更多

MySQL 连接 join 的使用方法

一、概述 join 可以用来描述多个表之间的关系,主要有以下几种用法: left join:左连接 right join:右连接 inner join:内连接 cross join:交叉连接,笛卡尔积。 语法形式为:

二、建表 首先准 ... 阅读更多