MySQL的客户端与服务端
MySQL的客户端/服务器架构
MySQL 服务器程序和客户端程序本质上都算是计算机上的一个进程,这个代表着 MySQL
服务器程序的进程也被称为 MySQL数据库实例
,简称数据库实例
。
MySQL 服务器进程的默认名称为 mysqld
MySQL 客户端进程的默认名称为 mysql
启动MySQL服务器的程序
mysqld
: 直接启动一个服务器进程
mysqld_safe
: 间接的调用 mysqld
,启动了另外一个监控进程(服务器进程挂了的时候,可以帮助重启它),使用 mysqld_safe
启动服务器程序时,它会将服务器程序的
出错信息和其他诊断信息重定向到某个文件中,产生出错日志
mysql.server
:间接的调用 mysqld_safe
,在调用 mysql.server
时在后边指定 start
参数就可以启动服务器程序
这个
mysql.server
文件其实是一个链接文件,它的实际文件是../support-files/mysql.server
mysql.server stop
:关闭正在运行的服务器程序
mysqld_multi
:对每一个服务器进程的启动或停止进行监控
mysql
:和服务器程序进程交互(eg: mysql -h主机名 -u用户名 -p密码)
客户端与服务器的连接过程
MySQL 支持三种客户端进程和服务器进程的通信方式
- TCP/IP
- 命名管道和共享内存
- 命名管道:在启动服务器程序的命令中加上
--enable-named-pipe
参数,然后在启动客户端程序的命令中加入--pipe
或者--protocol=pipe
参数 - 共享内存:启动服务器程序的命令中加上
--shared-memory
参数,启动客户端程序的命令中加入--protocol=memory
参数(使用 共享内存 的方式进行通信的服务器进程和客户端进程必须在同一台 Windows 主机) - Unix域套接字文件:启动客户端程序的时候指定的主机名为
localhost
,或者指定了--protocol=socket
的启动参数- 默认监听的 Unix 域套接字文件路径为
/tmp/mysql.sock
,改变这个默认路径,可以在启动服务器程序时指定 socket 参数mysqld --socket=/tmp/a.txt
- 默认监听的 Unix 域套接字文件路径为
- 命名管道:在启动服务器程序的命令中加上
服务器处理客户端的请求
每当有一个客户端进程连接到服务器进程时,服务器进程都会创建一个线程来专门处理与这个客户端的交互,当该客户端退出时会与服务器断开连接,服务器并不会立即把与该客户端交互的线程销毁掉,而是把它缓存起来,在另一个新的客户端再进行连接时,把这个缓存的线程分配给该新客户端
客户端程序和服务器程序不运行在一台计算机上,我们还可以采用使用了 SSL (安全套接字)的网络连接进行通信,来保证数据传输的安全性
mysql的存储引擎(真实存取数据的功能)
- 物理上如何表示记录
- 怎么从表中读取数据
- 怎么把数据写入具体的物理存储器上
常用的存储引擎
存储引擎 | 描述 |
---|---|
ARCHIVE | 用于数据存档(行被插入后不能再修改) |
BLACKHOLE | 丢弃写操作,读操作会返回空内容 |
CSV | 存储数据时,以逗号分隔各个数据项 |
FEDERATED | 用来访问远程表 |
InnoDB | 具备外键支持功能的事务存储引擎 |
MEMORY | 置于内存的表 |
MERGE | 用来管理多个MyISAM表构成的表集合 |
MyISAM | 主要的非事务处理存储引擎 |
NDB | MySQL集群专用存储引擎 |
查看当前服务器程序支持的存储引擎:SHOW ENGINES
设置表的存储引擎:
- 创建表时指定存储引擎:
- CREATE TABLE 表名(
建表语句;
) ENGINE = 存储引擎名称;
- CREATE TABLE 表名(
- 修改表的存储引擎
- ALTER TABLE 表名 ENGINE = 存储引擎名称