Mysql是怎样运行的读书笔记(一)
第一章初识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、解析与优化
- 查询缓存:首先看缓存中是否存在,其中包括某些系统函数的不会查询缓存,如查询时间的now函数,但是缓存需要维护,在mysql8.0后几乎舍弃了缓存。
- 语法解析:即查询过程中的编译过程
- 查询优化:会对查询语句进行优化,如外查询转化为内查询等,最后会生成一个执行计划,可以采用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 表名
下一篇: 【转载】目前国内主流的云服务器厂商有哪些