欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mysql是怎样运行的读书笔记(一)

程序员文章站 2022-07-11 09:52:26
...

第一章初识mysql

1.1mysql采用c/s的架构

1.2mysql的安装

mysql下面有有一个bin目录,放着许多执行文件,其中mysqld.exe便是启动服务器的执行文件。并且可以将bin目录添加到PATH的环境变量中,便可以在cmd中直接运行相应的命令。

1.3mysql的启动服务器

1.3.1在unix中启动服务器

  • mysqld:可以直接启动服务器。
  • mysqld_safe:启动服务器后,监控运行状态,如果出错后,会诊断输出到日志中并且重启服务器。
  • mysql.server start:也可以启动,mysql.server stop便可以结束。
  • mysqld_multi:可以启动或停止多个服务器。

1.3.2在windows中启动服务器

  • 手动启动,即执行mysqld文件
  • 服务的方式启动:“文件名” --install,便将其注册到了服务中去,然后可以使用net start MySQL便能启动服务,一般可以将其设置为自动启动。

1.4启动mysql客户端程序

启动客户端的程序是mysql.exe

其中启动命令为

mysql -hlocalhost -uroot -proot
//其中-h表示服务器的ip地址,-u表示用户名,-p表示密码
并且可以采用quit/exit退出

注意:

如果想要密码是密文显示,可以采用输入命令过后输入回车,然后再敲密码。

1.5客户端与服务器的连接过程

mysql客户端与服务器端默认采用tcp/ip协议连接其中默认端口是3306,如果服务器需要修改监听端口,可以在启动时用mysqld -P3307。

此时客户端连接便需指定端口:

mysql -hlocalhost -P3307 -uroot -proot

除此之外,windows中还可以考虑用命名管道和共享内存交互信息,而UNIX中可以采用套接字交互。

1.6服务器处理客户端请求

1、mysql的客户端与服务端连接分为连接管理、解析与优化、存储引擎三个 部分

2、连接管理:在连接管理的过程中,服务器不会销毁客户端所建立的线程,方便其他线程使用,所以mysql中的每一个连接会开一个线程来处理。

3、解析与优化

  1. 查询缓存:首先看缓存中是否存在,其中包括某些系统函数的不会查询缓存,如查询时间的now函数,但是缓存需要维护,在mysql8.0后几乎舍弃了缓存。
  2. 语法解析:即查询过程中的编译过程
  3. 查询优化:会对查询语句进行优化,如外查询转化为内查询等,最后会生成一个执行计划,可以采用explain语句查看。

4、存储引擎:存储引擎负责mysql中数据写入或者从物理内存中读取。

注意:查询缓存、解析语法、查询优化都是属于server层,其中执行完server层会生成一个执行计划,然后根据执行计划调用存储引擎中提供给我们的函数返回数据。以select为例,其首先会查询存储引擎中得到一条记录,然后判断where条件是否满足相应的条件,如果满足就返回记录。其中记录是存储在缓存中,当缓存存储满后才向客户端发送结果,其中可以用net_buffer_length来控制缓存长度。

1.7存储引擎

存储引擎负责数据在物理内存中的读取和写入。mysql默认支持innodb存储引擎,其中innodb支持事务,外键和行级锁。除此之外,常见的存储引擎还有MEMORY,MERGE,MyIsam等。

1.8关于存储引擎的操作

查看当前服务器支持的存储引擎,其中Savepoints代表存储引擎是否支持事务的部分回滚:

show engines

创建表时设置存储引擎:

CREATE TABLE 表名{}
ENGINE = 存储引擎;

修改表的存储引擎

ALTER TABLE 表名 ENGINE = 存储引擎名

查看表的存储引擎:

SHOW TABLE STATUS FROM 表名