目录
C/C++Linux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂
SQL
定义
结构化查询语言(Structured Query Language) 简称 SQL,是一种
特殊目的的编程语言,是一种数据库查询和程序设计语言,用
于存取数据以及查询、更新和管理关系数据库系统。SQL 是关
系数据库系统的标准语言。
关系型数据库包括:MySQL, SQL Server, Oracle, Sybase,
postgreSQL 以及 MS Access等;
SQL 命令包括:DQL、DML、DDL、DCL以及TCL;
DQL
Data Query Language - 数据查询语言;
select:从一个或者多个表中检索特定的记录;
DML
Data Manipulate Language - 数据操作语言;
insert:插入记录;
update:更新记录;
delete:删除记录;
DDL
Data Define Languge - 数据定义语言;
create:创建一个新的表、表的视图、或者在数据库中的对
象;
alter:修改现有的数据库对象,例如修改表的属性或者字
段;drop:删除表、数据库对象或者视图;
DCL
Data Control Language - 数据控制语言;
grant:授予用户权限;
revoke:收回用户权限;
TCL
Transaction Control Language - 事务控制语言;
commit:事务提交;
rollback:事务回滚;
数据库术语
数据库:数据库是一些关联表的集合;
数据表:表是数据的矩阵;
列:一列包含相同类型的数据;
行:或者称为记录是一组相关的数据;
主键:主键是唯一的;一个数据表只能包含一个主键;
外键:外键用来关联两个表,来保证参照完整性;MyISAM 存储
引擎本身并不支持外键,只起到注释作用;而 innoDB 完整支持
外键;
复合键:或称组合键;将多个列作为一个索引键;
索引:用于快速访问数据表的数据;索引是对表中的一列或者
多列的值进行排序的一种结构;
MySQL体系结构
MySQL 由以下几部分组成:
连接池组件、管理服务和工具组件、SQL 接口组件、查询分析器组件、优化器组件、缓冲组件、插件式存储引擎、物理文件。
连接者
不同语言的代码程序和 MySQL 的交互(SQL交互);
连接池
管理缓冲用户连接、用户名、密码、权限校验、线程处理等需
要缓存的需求;
网络处理流程:主线程接收连接,接收连接交由连接池处理;
主要处理方式:IO多路复用 select + 阻塞的 io;
需要理解:MySQL 命令处理是并发处理的;
主线程负责接收客户端连接,然后为每个客户端 fd 分配一个连
接线程,负责处理该客户端的 sql 命令处理;
管理服务和工具组件
系统管理和控制工具,例如备份恢复、MySQL 复制、集群等;
SQL接口
将 SQL 语句解析生成相应对象;DML,DDL,存储过程,视图,触发器等;
查询解析器
将 SQL 对象交由解析器验证和解析,并生成语法树;
查询优化器
SQL 语句执行前使用查询优化器进行优化;
缓冲组件
是一块内存区域,用来弥补磁盘速度较慢对数据库性能的影响;在数据库进行读取页操作,首先将从磁盘读到的页存放在缓冲池中,下一次再读相同的页时,首先判断该页是否在缓冲
池中,若在缓冲池命中,直接读取;否则读取磁盘中的页,说明该页被 LRU 淘汰了;缓冲池中 LRU 采用最近最少使用算法来进行管理;
缓冲池缓存的数据类型有:索引页、数据页、以及与存储引擎缓存相关的数据(比如innoDB 引擎:undo 页、插入缓冲、自适应 hash 索引、innoDB 相关锁信息、数据字典信息等);