MySQL 主从同步原理

一、主从复制原理 MySQL 主从复制依赖 binlog,binlog 中记录了数据库中的执行过的语句,主从复制时,复制的并不是整个数据库中的所有数据,而是从上次同步到现在所执行过的 SQL 语句。 执行主从同步时,主库会有一个 Log-Dump 线程和从库同步,把 binlog 发送给从库。从库则有一个 I/O 线程和 ... 阅读更多

MySQL 用户操作:添加删除用户

一、创建用户

查询当前用户:

二、授权

三、修改用户密码 [crayon-694cf820789727 ... 阅读更多

MySQL 中的 unique 和 primary key

primary key 用于标识主键,字段被设置为主键后该字段所有值不可重复且不能为 null,每个表仅可有一个主键。 unique 设置字段不可重复,但不包括 null 值,每张表可以有多个 unique 字段,null 并不包括空值。 简单来说 primary key = unique + not null 。 一、 ... 阅读更多

SQL UNION 和 UNION ALL 用法

一、概述 union 和 union all 都用于合并多个查询的结果,用法为:

两者的区别是 union all 中会有重复记录,而 union 中没有。 二、示例 创建两张表 ch ... 阅读更多

MySQL 乐观锁

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

MySQL 悲观锁

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

MySQL 的事务隔离级别

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

MySQL 事务的基本用法

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

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

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

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

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