Mysql温习部分和Git的温习 | 青训营笔记

104 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天

Mysql温习部分和Git的温习

2023/1/28

今日亲戚来了,没来得及开发具体项目
学习内容:
MYSQL锁
Git分支(虽然还是没弄懂)

Mysql

锁(面试问的多)

全局锁

整个数据库加锁,加锁后实例处理只读状态,后续的dml和ddl语句和已经更新操作的事务提交语句就会处于阻塞状态

使用场景:备份全库,对所有表锁,保持数据的完整性

语法:

flush tables with read lock
​
unlock tables;

特点

在主库上操作,备份期间不能执行更新,业务停止

读写分离会导致主从延迟

在innoDb中,加上参数--single-transaction来完成不加锁的一致性数据备份

表级锁

表锁

  • 表共享读锁
  • 表独占写锁

加🔒 lock tables 表名 .. read/write

释放🔒 unlock tables / 客户端断开连接

image-20230127201613769

元数据锁(meta data lock ,MDL)

自动控制,无需显示使用

意向锁

为了解决DML在执行的时候,加的行锁与表锁冲突,加入innoDb加入意向锁

意向共享锁(IS) :有语句select ... lock in share mode 添加,与共享锁(read)兼容,与排他锁(write)互斥

意向排他锁(IX): 由insert... 添加,共享锁(read)与排他锁(write)互斥

image-20230127202700081

行级锁

锁住行数据,力度最小,并发最高,主要用于InnoDb存储引擎中

image-20230127203136746

行锁

  • 共享锁(S):允许一个事务去读取一个行,阻止其他事务获取相同数据集的排他锁
  • 排他锁(X): 允许获取排他锁的事务更新事务更新数据,阻止其他获取相同数据集的共享锁和排他锁 image-20230127203502469

数据类型

整型

类型名称取值范围大小
TINYINT-128〜1271个字节
SMALLINT-32768〜327672个宇节
MEDIUMINT-8388608〜83886073个字节
INT (INTEGHR)-2147483648〜21474836474个字节
BIGINT-9223372036854775808〜92233720368547758078个字节

无符号在数据类型后加 unsigned 关键字。

日期和时间

类型名称日期格式日期范围存储需求
YEARYYYY1901 ~ 21551 个字节
TIMEHH:MM:SS-838:59:59 ~ 838:59:593 个字节
DATEYYYY-MM-DD1000-01-01 ~ 9999-12-33 个字节
DATETIMEYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 ~ 9999-12-31 23:59:598 个字节
TIMESTAMPYYYY-MM-DD HH:MM:SS1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC4 个字节

Git

之前大致学过git,不过没有系统的总结一下

这次笔记系统总结一次

三种区域

图片

  • Workspace:工作区,就是你平时存放项目代码的地方
  • Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
  • Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
  • Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

Git分支

最难理解,平时就一两个人开发项目,所以使用较多的是版本控制,不使用分支。

官方解释

A branch is a parallel version of a repository. It is contained within the repository, but does not affect the primary or main branch allowing you to work freely without disrupting the "live" version. When you've made the changes you want to make, you can merge your branch back into the main branch to publish your changes.

多个分支如果并行执行,就会导致代码不冲突

# 列出所有本地分支git branch
# 列出所有远程分支git branch -r
# 新建一个分支,但依然停留在当前分支git branch [branch-name]
# 新建一个分支,并切换到该分支git checkout -b [branch]
# 合并指定分支到当前分支$ git merge [branch]
# 删除分支$ git branch -d [branch-name]
# 删除远程分支$ git push origin --delete [branch-name]$ git branch -dr [remote/branch]

合并分支

注意:分支上的内容必须先提交,才能切换分支

一个分支上的提交可以合并到另一个分支

  • 命令:git merge 分支名称
  • 在每个人都开发完后就将所有的代码汇总到一起,此时就要执行分支的合并操作

删除分支

不能删除当前分支,只能删除其他分支

  • git branch -d b1 删除分支时,需要做各种检查
  • git branch -D b1 不做任何检查,强制删除

小d删除了就使用D,一般使用d就够了

我们去删除没有合并的分支的时候就会出现删除不了的情况,此时就可以使用D