词法分析器:将用户的命令进行切片,一个词一个词用空格隔开,获得用户要查询的表,内容,用户的权限等5.优化:执行路径的选择,生
mysql执行流程:
mysql是一个单进程的服务,对于每一个请求都是用线程来响应的,这就需要一个连接器来处理新用户的请求,响应,销毁
1.客户端请求,服务器端(连接器)开辟线程响应用户
2.用户发起SQL语句查询数据库
3.查询缓存:记录用户的SQL查询语句,如果再次查询同样内容,就返回缓存
4.如果缓存没有进入分析器:(分析器也可能借签缓存)
语法分析器:用户命令语法是否正确
词法分析器:将用户的命令进行切片,一个词一个词用空格隔开,获得用户要查询的表,内容,用户的权限等
5.优化:执行路径的选择,生成执行树
每个SQL语句都有很多执行路径,优化的目的就是在这些执行路径里选择一个最优的执行路径
6.存储引擎:用于管理存储在文件系统,甚至是裸设备上的数据管理程序,它本身给上层应用提供不同的管理,有的支持事务,有的不支持事务。
#查询缓存可以大大加速这个过程,不过缓存本身可能带来劣势,假如一个用户要查询一个数据,正好缓存里有,而在之前,这条数据刚刚被修改过那么返回的缓存结果就是过时的。
MYSQL的结构:
客户端:mysql
连接器: NativeC API 本地C语言接口
JDBCJAVA的数据库连接器
ODBC开放式数据库互联,非常底层 Oracle,SOLServer都支持
连接池(conetcionpool):它的后方是MYSQL的真正功能
SQL接口:用户通过sql客户端发过来的命令,由sql接口接收
DML数据操作语言:查询,修改,升级数据等
DDL数据定义语言:创建一个新的数据库,新的索引,删除一个用户等
存储过程视图触发器
Parser:分析器
查询 事务 对象权限
optimizer:访问路径
生成执行树
caches&buffers:缓存和缓存
优化里最重要的是缓存的优化
pluggablestroage engines存储引擎(插件式):将逻辑结构转换为物理结构的程序
ManagementServices & Utilites工具:备份,恢复,,安全,移植,集群等,这些工具一般和文件系统打交道,不需要和mysql-server打交道,它们对应的都是命令。
数据库对象:(逻辑)
表,二维关系
索引
视图
触发器
存储过程
存储函数
事件調读器
游标
用户
物理
文件
将数据库对象和物理对象对应起来就是存储引擎
Mysql
*插件式的存储引擎
mysql与mysql的连接方式:tcp,socket,pipe,memory
mysql的交互方式:interact batch
SQL
结构化查询语言
bash
select,update,create,drop
Mysql安装
版本选择:
GA
RC
beta
alpha
在以后的使用过程中,RPM包很方便,但是会带来各种问题,所以尽量使用编译安装甚至是LFS
Mysql-client
Mysql-devel:编译安装软件包,需要用到Mysql的时候才安装这个软件包
Mysql-embedded: mysq嵌入式
Mysql-ndb-management
Mysql-server
Mysql-shared:可能被客户端或者服务器端的某些工具用到
Mysql-shared-compat
Mysql-test:测试Mysql,提供测试组件
一般来讲,完全的MYSQL只需要安装clientdevel share server
安装目录的作用
bin
data默认情况下将数据和索引存放的目录
inclued
lib
man
mysql-test
scripts安装时的初始化脚本
share某种特定语言的错误信息的,信息原始文件存放
sql-bench压力测试工具
support-file提供一些初始化的文件和脚本