这是我参与「第五届青训营 」笔记创作活动的第13天
「MySQL - 深入理解RDBMS」|青训营笔记
RDBMS:关系型数据库
经典案例
事务(Transaction):是由一组SQL语句组成的一个程序执行单元,需要满足ACID特性,如图
原子性
一致性,每个操作都必须是合法的
隔离性,操作表现应该是串行的
持久性
高并发,数据库一定要支持高并发
高可靠
发展历史
DBMS数据模型对比
关键技术
Parser:语法解析器
AST:语法树
Optimizer:优化器
Excutor:执行器
解析器Parser
包括:词法分析、语法分析、语义分析
具体每一步如图所示:
优化器——Optimizer
为何需要优化器
优化器具体实现
基于规则的优化(RBO)
基于代价的优化(CBO)
执行器——Executor
存储引擎——InnoDB
事务引擎
如何实现mysql数据库状态的回退?
是通过Undo Log来实现的
隔离性与锁
MVCC
一致性——通过Redo Log实现
Github简明教程
参考:
[Github教程] www.runoob.com/w3cnote/git…
[Github教程] rogerdudler.github.io/git-guide/i…
什么是 Github?
github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开。
1.首先要配置好Git
2.工作流
我们的本地仓库由git维护的三棵树组成。第一个是我的工作目录,它持有实际文件,第二个是暂存区(index) ,这是个缓存区域,保存着我们的更改,最后一个是HEAD,指向我们最后一次提交的结果
这是 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>