「MySQL - 深入理解RDBMS」|青训营笔记

68 阅读2分钟

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

「MySQL - 深入理解RDBMS」|青训营笔记

RDBMS:关系型数据库

经典案例

事务(Transaction):是由一组SQL语句组成的一个程序执行单元,需要满足ACID特性,如图

image.png

原子性

image.png

一致性,每个操作都必须是合法的

image.png

隔离性,操作表现应该是串行的

image.png

持久性

image.png

高并发,数据库一定要支持高并发

image.png

高可靠

发展历史

DBMS数据模型对比

image.png

关键技术

Parser:语法解析器

AST:语法树

Optimizer:优化器

Excutor:执行器

image.png

解析器Parser

包括:词法分析、语法分析、语义分析

具体每一步如图所示:

image.png

优化器——Optimizer

为何需要优化器

image.png

优化器具体实现

基于规则的优化(RBO)

image.png

基于代价的优化(CBO)

image.png

执行器——Executor

image.png

存储引擎——InnoDB

image.png

image.png

事务引擎

如何实现mysql数据库状态的回退?

是通过Undo Log来实现的

image.png

隔离性与锁

MVCC

image.png

一致性——通过Redo Log实现

image.png

Github简明教程

参考:

[Github教程]  www.runoob.com/w3cnote/git… 

[Github教程​]  rogerdudler.github.io/git-guide/i… 

什么是 Github?

github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开。

1.首先要配置好Git

2.工作流

我们的本地仓库由git维护的三棵树组成。第一个是我的工作目录,它持有实际文件,第二个是暂存区(index) ,这是个缓存区域,保存着我们的更改,最后一个是HEAD,指向我们最后一次提交的结果

img

这是 git 基本工作流程的第一步;使用如下命令以实际提交改动:
git commit -m "代码提交信息"
//现在,改动已经提交到了 HEAD,但是还没到你的远端仓库

推送改动

当我们的改动已经在本地仓库的HEAD中,可以使用以下命令将改动提交到远端仓库

git push origin master
//可以把 master 换成想要推送的任何分支。

更新与合并

当我们想更新本地仓库至最新版本时,使用以下命令

git pull
//在我的工作目录获取并合并远端的改动
​
git merge <branch>
//要合并其他分支到你的当前分支

在这两种情况下,git 都会尝试去自动合并改动。遗憾的是,这可能并非每次都成功,并可能出现冲突(conflicts) 。 这时候就需要你修改这些文件来手动合并这些冲突(conflicts) 。改完之后,你需要执行如下命令以将它们标记为合并成功:

git add <filename>
​
//在合并改动之前,你可以使用如下命令预览差异:
git diff <source_branch> <target_branch>