[数据库]基础Part1
关系型数据库和非关系型数据库
非关系型数据库
- 键值数据库
- 文档型数据库
- 搜索引擎数据库,采用索引提升检索效率,eg: ES
- 列式数据库,将数据按照列存储的方式保存在数据库中。目的是降低系统 I/O
- 图形数据库
关系型数据库 MySQL
客户端和服务端通信
MySQL 支持几种类型的通行方式:
TCP/IP
: 数据库服务器进程和客户端进程可能运行在不同的主机中,它们之间必须通过 网络进行通信。MySQL采用 τ田 作为服务器和客户端之间的网络通信协议。- 命令管道和共享内存: 是 Windows 操作革统中的两种进程间通信方式,使用上服务端进程和客户端进程需要在同一个服务器中。
- 命令管道通信: 在服务端启动时使用
--enable-named pipe
参数,在客户端的启动命令中添加上--pipe
或者--protocol=pipe
参数 - 内存共享: 在服务端启动时使用
--shared-memory
参数,在客户端的启动命令中添加上--protocol=memory
参数
- 命令管道通信: 在服务端启动时使用
- UNIX 域套接字: 如果服务器进程和客户端进程都运行在操作系统为类 UNIX 的同一台机器上,则可以使用 UNIX 域套接字进行进程 间通信。如果在启动客户端程序时没有指定主机名,或者指定的主机名为
localhost
,又或者指定了--protocol=socket
的启动参数,那么服务器程序和客户端程序之间就可以通过 UNIX 域套接字进行通信。
客户端查询请求的过程
以查询请求为例,服务器程序在处理客户端发送过来的请求时,大致分为以下几个部分:
- 连接管理: 主要负责连接的建立与信息的认证
- 解析与优化: 主要进行查询缓存、语法解析、查询优化
- 存储引擎: 主要负责读取和写入底层表中的数据
MySQL 配置(Unix 系统)
常规的 MySQL 的配置文件可以存放在多个路径下,但是不同的路径下优先级级不同;如果是同一文件中存在相同启动项,也是遵循靠后的配置项覆盖前面的配置项。相同的配置信息,靠后的配置信息会覆盖掉靠前的配置信息。
路径或配置名称 | 说明 | 启动优先级 |
---|---|---|
/etc/my.cnf 或者 /etc/mysql/my.cnf |
系统配置文件 | 第一启动配置文件 |
defaults-extra-file |
启动服务时,申明的配置文件。eg: mysqld --defaults-extra-file-<配置文件> |
|
~/.my.cnf |
不同登录用户的配置文件,需要用户设置 | |
需要特别注意,命令行中的配置项的权限最高,会覆盖掉配置文件中的配置选项 |
配置文件内容
配置文件中的启动项按照选项组来划分的,分别包括:
1 | [server] |
不同的服务会去读取不同的选项组:
程序名称 | 类别 | 读取选项组 |
---|---|---|
mysqld | 启动服务器 | [mysqld] , [server] |
mysqld_safe | 启动服务器 | [mysqld] , [server] , [mysqld_safe] |
mysql.server | 启动服务器 | [mysqld] , [server] , [mysql.server] |
mysql | 启动客户端 | [mysql] , [client] |
mysqladmin | 启动客户端 | [mysqladmin] , [client] |
mysqldump | 启动客户端 | [mysqldump] , [client] |
如果需要对特定版本使用特定的选项组,那么需要在选项组上添加上版本信息,例如 [mysqld-5.7] 表示5.7 的版本才使用该选项组 |