diff --git a/blog/mysq-advance/index.md b/blog/mysq-advance/index.md index 8e1e2736d9de17ec0587410940557b4e4dff1175..fbe2a7d9035841cfb8be5e09367c0196ec6d3508 100644 --- a/blog/mysq-advance/index.md +++ b/blog/mysq-advance/index.md @@ -39,5 +39,4 @@ MySQL 运维篇 - -https://www.bilibili.com/video/BV1Kr4y1i7ru?p=123&spm_id_from=pageDriver \ No newline at end of file +https://www.bilibili.com/video/BV1Kr4y1i7ru?p=125&spm_id_from=pageDriver \ No newline at end of file diff --git a/blog/mysq-advance/lock.md b/blog/mysq-advance/lock.md index 0e234d9dda55f7429aafc669cb9e237c4849dc7b..587a689acbcd2c9c52fb0df77577e23646f12208 100644 --- a/blog/mysq-advance/lock.md +++ b/blog/mysq-advance/lock.md @@ -44,6 +44,56 @@ mysqldump -uroot -p123456 > database.sql unlock tables; ``` -## 表级锁 -## 行级锁 +特点: + +数据库中加全局锁,是一个比较重的操作,存在以下问题 + +1. 如果在主库上备份,那么在备份期间都不能执行更新,业务基本上就得停摆 +2. 如果在从库上备份,那么在备份期间从库不能执行主库同步过来的二进制日志(binlog),会导致主从延迟 + +在InnoDB引擎中,我们可以在备份时加上参数 `--single-transaction` 来完成不加锁的一致性数据备份 + +语法 + +```bash +mysqldump --single-transaction -uroot -p123456 database > database.sql +``` + +## 3、表级锁 + +- 表级锁,每次操作锁住整张表。 + +- 锁定粒度大,发生锁冲突的概率最高,并发度最低。 + +- 应用在MyISAM、InnoDB、BDB等存储引擎中 + + +对于表级锁,主要分为以下三类 + +1. 表锁 +2. 元数据锁(meta data lock, MDL) +3. 意向锁 + +### 3.1、表锁 + +对于表锁,分为以下两类 + +|锁分类 | 当前客户端 | 其他客户端 +| - | - | - +|表共享读锁(read lock)| 可以读取,不能写入 | 可以读取,阻塞写入 +|表独占写锁(write lock)| 可以读取,可以写入 | 阻塞读取,阻塞写入 + +语法 +```sql +-- 1. 加锁 +lock tables 表名... read/write; + +-- 2. 释放锁 +unlock tables / 客户端断开连接 +``` + + + + +## 4、行级锁 diff --git a/package.json b/package.json index 0f79364385e3c97e39d73e1caff834a528c9c435..87de5927a678d93d53cc4341ebb154f91b01dadb 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "index.js", "private": true, "scripts": { - "dev": "~/.nvm/versions/node/v12.22.6/bin/docsify serve ./", + "dev": "~/.nvm/versions/node/v12.22.6/bin/docsify serve --open ./", "live": "live-server", "start": "http-server" },