导语
进程
- 进程都有一个唯一的编号,称为
进程ID
,英文名叫PID
,进程名称可以自定义 - PID, 是与OS进行分配,并保证唯一性。那么OS分配算法是怎样的呢?
1 | //TODO |
常用的进程
- mysqld - 会直接启动一个服务器进程
- mysqld_safe - 提供一个针对mysqld进程的监控,把出错信息记录下来、重启进程, 同时也调用mysqld
- mysqld.server - 调用mysql_safe, 通过start\stop 参数,启停服务
- mysqld_multi - 可以启动多个服务器进程
把进程注册成随机启动
Windows
[mysqld绝对路径] –install [服务名称]
1 | net start mysql |
Linux ??
Mac ??
Client 有哪些
mysqladmin
、mysqldump
、mysqlcheck
1 | mysql -h主机名 -u用户名 -p密码 |
各个参数的意义如下:
参数名 | 含义 |
---|---|
-h |
表示服务器进程所在计算机的域名或者IP地址,如果服务器进程就运行在本机的话,可以省略这个参数,或者填localhost 或者127.0.0.1 。也可以写作 --host=主机名 的形式。 |
-u |
表示用户名。也可以写作 --user=用户名 的形式。 |
-p |
表示密码。也可以写作 --password=密码 的形式。 |
进程和服务器进程的通信方式
TCP/IP
命名管道和共享内存
Unix域套接字文件
读写分离
INSERT
、UPDATE
、DELETE
、TRUNCATE TABLE
、ALTER TABLE
、DROP TABLE
或DROP DATABASE
语句,那使用该表的所有高速缓存查询都将变为无效并从高速缓存中删除!那么就存在了读写分离机制,加速读取缓存有效性。
- 虽然查询缓存有时可以提升系统性能,但也不得不因维护这块缓存而造成一些开销,比如每次都要去查询缓存中检索,查询请求处理完需要更新查询缓存,维护该查询缓存对应的内存区域。从MySQL 5.7.20开始,不推荐使用查询缓存,并在MySQL 8.0中删除。
- 缓存要合理利用。
mysql语句执行
1.5.7.20之前版本先查缓存,
2.没有命中,对查询语句进行优化,
3.执行查询优化后的句子。
MySQL
服务器把数据的存储和提取操作都封装到了一个叫存储引擎
的模块里。人们把连接管理
、查询缓存
、语法解析
、查询优化
这些并不涉及真实数据存储的功能划分为MySQL server
的功能,把真实存取数据的功能划分为存储引擎
的功能。各种不同的存储引擎向上边的MySQL server
层提供统一的调用接口(也就是存储引擎API),包含了几十个底层函数,像”读取索引第一条内容”、”读取索引下一条内容”、”插入记录”等等。
所以在MySQL server
完成了查询优化后,只需按照生成的执行计划调用底层存储引擎提供的API,获取到数据后返回给客户端就好了。
启动选项
启动时候,设置的参数配置, 选项名、=、选项值之间不可以有空白字符. 用短形式指定启动选项时,选项名和选项值之间可以没有间隙,或者用空白字符隔开。 只不过-p密码不能空白间隔。
network
禁止各客户端使用
TCP/IP
网络进行通信,可以在启动服务器程序的命令行里添加skip-networking
启动选项 。 多个单词构成的,它们之间可以由短划线-
连接起来,也可以使用下划线_
连接起来,
1 | mysqld --skip_networking |
default-storage-engine
1 | mysqld --default-storage-engine=MyISAM |
搜索路径
mysql启动会按照默认的搜索顺序进行找配置项;也可以指定特定的配置文件进行搜索,没有则报错
1 | mysqld --defaults-file=/tmp/myconfig.txt |
- 搜索顺序进行覆盖
- 同一个文件,在后面的覆盖签名的
- 如果同一个启动选项既出现在命令行中,又出现在配置文件中,那么以命令行中的启动选项为准
系统变量
1 | SHOW VARIABLES [LIKE 匹配的模式]; |
作用范围
设计
MySQL
的大叔提出了系统变量的作用范围
的概念,具体来说作用范围
分为这两种:
GLOBAL
:全局变量,影响服务器的整体操作。SESSION
:会话变量,影响某个客户端连接的操作。1
2语句一:SET GLOBAL default_storage_engine = MyISAM;
语句二:SET @@GLOBAL.default_storage_engine = MyISAM;
如果只想对本客户端生效,也可以选择下边三条语句中的任意一条来进行设置:
1 | 语句一:SET SESSION default_storage_engine = MyISAM; |
1 | SHOW SESSION VARIABLES LIKE 'default_storage_engine'; |
状态变量
由于
状态变量
是用来显示服务器程序运行状况的,所以它们的值只能由服务器程序自己来设置,我们程序员是不能设置的。与系统变量
类似,状态变量
也有GLOBAL
和SESSION
两个作用范围的,所以查看状态变量
的语句可以这么写
1 | SHOW STATUS LIKE 'thread%'; |
存储引擎-InnoDB
默认以页(16k)为单位,进行磁盘和内存数据交换。
是以记录为单位来向表中插入数据的,这些记录在磁盘上的存放方式也被称为行格式
或者记录格式
。设计InnoDB
存储引擎的大叔们到现在为止设计了4种不同类型的行格式
,分别是Compact
、Redundant
、Dynamic
和Compressed
行格式
1 | CREATE TABLE 表名 (列的信息) ROW_FORMAT=行格式名称 |
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏