diff --git a/blog/mysq-advance/img/example-bakup-data-lock.png b/blog/mysq-advance/img/example-bakup-data-lock.png new file mode 100644 index 0000000000000000000000000000000000000000..cf401ea09b9f8dd85c6ea4802ad7f4a00584291c Binary files /dev/null and b/blog/mysq-advance/img/example-bakup-data-lock.png differ diff --git a/blog/mysq-advance/img/example-bakup-data.png b/blog/mysq-advance/img/example-bakup-data.png new file mode 100644 index 0000000000000000000000000000000000000000..1f7b33cadb38a6e61eebcbdd76d9c9b5d0445c0e Binary files /dev/null and b/blog/mysq-advance/img/example-bakup-data.png differ diff --git a/blog/mysq-advance/index.md b/blog/mysq-advance/index.md index a11d70e2262e58d39ce2fccf17b4a80318af1af6..8e1e2736d9de17ec0587410940557b4e4dff1175 100644 --- a/blog/mysq-advance/index.md +++ b/blog/mysq-advance/index.md @@ -18,7 +18,9 @@ [3. SQL优化](blog/mysq-advance/sql-optimization.md) 4. 视图/存储过程/触发器 -5. 锁 + +[5. 锁](blog/mysq-advance/lock.md) + 6. InnoDB 引擎 7. MySQL 管理 @@ -36,4 +38,6 @@ MySQL 运维篇 -https://www.bilibili.com/video/BV1Kr4y1i7ru?p=97&spm_id_from=pageDriver \ No newline at end of file + + +https://www.bilibili.com/video/BV1Kr4y1i7ru?p=123&spm_id_from=pageDriver \ No newline at end of file diff --git a/blog/mysq-advance/lock.md b/blog/mysq-advance/lock.md new file mode 100644 index 0000000000000000000000000000000000000000..0e234d9dda55f7429aafc669cb9e237c4849dc7b --- /dev/null +++ b/blog/mysq-advance/lock.md @@ -0,0 +1,49 @@ +# 锁 + +1. 概述 +2. 全局锁 +3. 表级锁 +4. 行级锁 + +## 1、概述 + +锁是计算机协调多个进程或线程并发访问某一资源的机制。 + +### 1.1、分类: + +MySQL 按照锁的粒度分: + +1. 全局锁:锁定数据库中的所有表 +2. 表级锁:每次操作锁住整张表 +3. 行级锁:每次操作锁住对应的行数据 + +## 2、全局锁 + +全局锁就是对整个数据库实例加锁,加锁后整个实例就处于`只读`状态,后续的DML的写语句,DDL语句,以及更新操作的事务提交语句都将被阻塞 + +其典型的使用场景是做全库的逻辑备份,对所有的表进行锁定,从而获取一致性视图,保证数据的完整性 + +不加锁操作数据 + +![](img/example-bakup-data.png) + +加锁操作数据 + +![](img/example-bakup-data-lock.png) + +语法 + +```sql +-- 增加全局锁 +flush tables with read lock; + +-- 备份数据 +mysqldump -uroot -p123456 > database.sql + +-- 解锁 +unlock tables; +``` + +## 表级锁 +## 行级锁 + diff --git a/blog/php-mysql/index.md b/blog/php-mysql/index.md index b11cc08220d30f22be522c4e82389029a197c20f..18957cfb0f17a73f6171d5c584277327b2f9e253 100644 --- a/blog/php-mysql/index.md +++ b/blog/php-mysql/index.md @@ -18,7 +18,7 @@ 8. [数据类型-小数](blog/php-mysql/sql-float.md) -[数据类型-时间日期类型](blog/php-mysql/sql-datetime.md) +9. [数据类型-时间日期类型](blog/php-mysql/sql-datetime.md) [数据类型-字符串类型](blog/php-mysql/sql-string.md) diff --git a/blog/php-mysql/sql-datetime.md b/blog/php-mysql/sql-datetime.md index fb0d2211875eac74bbad1b03bafdb0df05606eaf..c44aa1a7bbe1a14e6ddac39f444d2290abd40909 100644 --- a/blog/php-mysql/sql-datetime.md +++ b/blog/php-mysql/sql-datetime.md @@ -2,7 +2,7 @@ 类型 | 名称 | 存储字节数| 格式 | 表示范围 | 初始值 -- | - | - | - | - | - +|- | - | - | - | - | - Date | 日期类型 | 3字节 | `YYYY-mm-dd` | `1000-01-01~9999-12-12` | `0000-00-00` Time | 时间类型 | 3字节 | `HH:ii:ss` | `-838:59:59~838:59:59` | Datetime | 日期时间类型 | 8字节 | `YYYY-mm-dd HH:ii:ss` | `1000-01-01 00:00:00 ~ 9999-12-12 23:59:59` | `0000-00-00 00:00:00` |