1.1
这一部分讲了mysql的架构(客户端+服务器)。客户端将信息发送到服务器,服务器进行处理。
这里的信息是广义的,既有登录用的信息,又有日常写的sql。
1.2
这一节没什么特殊的,就是讲mysql的安装。我在mac上安装时也是默认路径(/usr/local/bin)
这一部分还列出了bin目录下的可执行文件,下一小节进行介绍。
1.3
这一部分讲如何启动mysql,主要是利用上一节提到的可执行文件。
mysqld
代表服务器程序,启动它就多了一个服务器进程
mysqld_safe
启动脚本,会调用mysqld并进行监控,还可以重启服务器进程。出错会输出到出错日志里,默认是个以.err为扩展名的文件。
mysql.server
也是启动脚本,会调用mysqld_safe
mysqld_multi
启动或停止多个服务器进程。
对我来说windows部分是个彩蛋。我头一次看到有人讲有关windows服务相关的内容。之前都是百度命令敲。
1.4
这一部分讲如何启动mysql客户端并与服务器端连接。
-u -p天天用,-h之前不太了解,这个用于指定ip地址。
还可以写全称 --user=xxx, --password=xxx
1.5
这一部分讲客户端与服务器连接的过程。其实主要就是进程间通信有哪些方法。
TCP/IP
远端连接用,默认3306端口,可以用-P参数指定别的端口
命名管道和共享内存
书上只提了windows。然而linux也有命名管道和共享内存啊?不让用吗?
unix套接字
也就是socket。我记得tcp/ip应该包含在socket里。socket支持tcp udp等。不知道为什么作者把tcp单独拿出来。
而且这里的socket没有怎么提这些,主要是讲有一个socket文件。
1.6
讲连接管理,也类似于一条sql执行的过程。
先要获取连接。服务器每与一个新的客户端连接,就要分配一个新的线程去处理客户端传来的内容。注意这里是分配而非创建,这是因为服务器通常要采用线程池技术。
然后查询缓存。当然查询缓存在现在8x版本已经废弃了。没废弃的时候大家基本也不用。作者说mysql的缓存只能针对一模一样的sql语句,即使多个空格也会失效。
这里是个很好的设计,因为大多数时候sql语句是不会变的。程序发来的sql通常是固定的(比如由框架生成),不会多什么空格之类的。个人理解mysql也可以实现别的缓存,比如缓存关系代数树。但这样的代价更大。
接着是词法分析和语法分析。词法分析看能不能分成tokens,语法分析看tokens的组织是否合理。
再然后是查询优化。这里会根据逻辑计划生成物理计划。查询优化可能会重新变更表达式树,可能会决定具体的连接顺序,等等。
最后要和存储引擎交互,去读取和存储数据。作者这里解释存储引擎解释地很好,就是一个封装了存储和提取的模块。
1.7
没啥说的,基本都是学InnoDB
1.8
讲了如何指定存储引擎,修改存储引擎。