目录
MySql结构
Mysql基于客户端/服务器结构,服务端程序直接和存储的数据打交道,Mysql运行的流程如下
Unix系统mysql的启动
客户端和服务器的通信过程:本质上是一个进程间通信的过程(TCP/IP)
结果
具体的服务器处理流程如下
连接管理部分
使用进程通信建立连接,服务端会有一个池式组件来管理这些连接
查询缓存
缓存不命中的情况:1.如果两个查询在任何字符上不同,都会导致缓冲不命中(包括空格,大小写)2.如果请求中包含系统函数或者一些mysql系统所使用的表,那么缓存不会命中,3,该表被修改过
Mysql8.0已经删除缓存
存储引擎
Mysql将数据的存储和提取都封装到了存储引擎模块中,将逻辑层转换成了物理层
存储引擎种类
最常用的式InnoDB(默认)和MyISAM
引擎种类的设定
在创建表时可以指定表的存储引擎语法如下
CREATE TABLE newTableName( ...; ) ENGINE = 引擎名;
在表创建好后可以修改,语法如下
ALTER TABLE 表名 ENGINE = 将设定的存储引擎名;
MYSQL调控-改变启动选项和系统变量
mysql的启动选项前缀是**–**,语法如下
命令行参数方式设置参数
mysqld --(选项)
如果选项是由多个单词组成的,那么中间用_或者-连接起来,语法如下
mysqld --skip-networking(使用skip networking选项启动)
mysqld --skip_networking(同上)
通用风格如下
mysqld --选项1=选项值1 --选项2=选项值2(除了多个选项之间空格,等号两边不能有空格)
配置文件方式设置参数
只需设置一次即可,推荐使用
ubuntu20.04(腾讯云),使用命令行apt-get install mysql-server安装的配置文件为
/etc/mysql/mysql.conf.d/mysqld.cnf
被分为若干个组,用中括号括起来类似于
[mysqld]#中括号括起来
#mysqld的启动参数
user = mysql
port = 3306
bind-address = 0.0.0.0
mysqlx-bind-address = 127.0.0.1
key_buffer_size = 16M
myisam-recover-options = BACKUP
log_error = /var/log/mysql/error.log
[server]#server组下面的启动选项将用于所有的服务器参数
##具体的参数
[client]#client组的启动选项将用于所有的客户端程序
值得注意的是,若在多个组设置了相同的启动选项,那么以最后一个的为准
下面的命令能以指定的配置文件启动
mysqld --default-file=配置文件
命令行的优先级将要高于配置文件的
查看系统变量
命令如下
SHOW VARIABL''
系统变量有别于选项(有的系统变量就是选项),系统变量的设定如果有空格的话,只能使用_连接
系统变量的特性
系统变量是可以在mysql运行时进行动态修改的,无需对mysql服务进行重启
系统变量有作用范围的概念分为
- GLOBAL变量,影响服务器整体操作
- SESSION变量,影响某个客户端的连接操作
通过上文所述的启动选项(命令行参数或者配置文件)设置的系统变量的范围都是全局的
设置系统变量的SQL语句
SET GLOBAL 欲设置变量=预设值
SET SESSION 欲设置变量=预设值
状态变量
状态变量作用:帮助我们更好的了解服务器运行状态,值不可设定(设定也没有意义)
查询语句如下
SHOW [GLOBAL|SESSION] STATUS [LIKE 欲查看的模式]
例子
SHOW STATUS LIKE 'thread%';
结果如下
Variable_name | Value |
---|---|
Threads_cached | 0 |
Threads_connected | 1 |
Threads_created | 1 |
Threads_running | 2 |