1、配置文件
进入 /etc/my.ini 和my.cnf,配置文件中的启动选项被划分为若干个标签组,组名分别是server、mysqld、mysqld_safe、client、mysql、mysqladmin,以键值对或者bool类型存在。
> vim /etc/my.cnf 进入配置文件
> find / -name mysql #查看数据目录
/var/lib/mysql存放数据目录,/usr/bin/mysql存放相关指令;
1.2启动命令与选项组
3、逻辑架构
典型的C/S架构,即client/server架构,通过主机去访问sql服务器。
3.1逻辑架构解析
服务器处理客户端请求和响应流程;mysql服务器相当于黑盒子
客户端向mysql服务器发送请求,服务器接收请求并进行操作,查找对应的文件,再返回到客户端, 中间就是逻辑架构了,第一部分指权限或者登录密码的校验;第二部分主要是针对查询语句进行解析,生成解析树,然后对sql语句进行优化处理;第三部分是调用存储引擎对文件系统进行查找操作,当然了,不可能是不可能对物理层的文件进行一层层查找,会导致效率太低,会将物理文件加载的磁盘中进行查找-----数据库缓冲池(buffer pool);
基础服务组件;
连接池:提供了多个用于客户端与服务器交互的线程,线程使用完再返回连接池,供其他客户端再次使用。
SQL接口:接收sql指令,返回查询结果。
parser解析器:语法、语义解析,生成语法树,便于查询优化。
优化器:对sql语句进行优化,确定是否需要使用索引,多表连接顺序,外连接是不是可能转化为内连接,包括表达式的更新;(核心组件)物理优化:使用索引,是否需要,用哪一个
查询缓存:以key-value方式缓存查询结果。查询到的文件,可以直接缓存到这,下次直接取出。
插件式的存储引擎:MYISAM,INNODB,NDB等等,可以相互替换。与底层文件系统进行交互,CPU通常是跟内存进行交互的,所以我们是将数据放到内存上的。
文件系统:存储在底层的系统文件,目录是/var/lib/mysql/ 语法为>show variables like '%datadir%';
日志:redo,undo,data,index等等日志
mysql服务器逻辑架构说明:连接层--服务层---引擎层----存储层
连接池:控制客户端的连接数量
线程池:
如:select name from a inner join a.id = b.id where a and b ;是先在a表查询b条件呢还是b表查询a条件,和成本函数有关。
语法树:
2.1 sql执行流程
4、存储引擎
5、索引,创建,设计原则,索引优化与查询优化;
7、变量