mysql笔记一:mysql简介

关键字:客户端、服务端、逻辑架构、存储引擎

1.1、mysql介绍

mysql是一个关系型数据库服务器。mysql分为服务端和客户端,每一个mysql服务端进程都是一个mysql实例。

mysql服务端进程名称:mysqld;

mysql客户端进程名称:mysql。

 

1.2、启动mysql服务端

在mysql安装目录的bin目录下,有多个可以启动mysqld的执行文件,分别是:

(1)mysqld:启动一个服务端进程,不常用

(2)mysqld_safe:调用mysqld,并且启动一个监控进程并打印日志

(3)mysql.server:调用mysqld_safe

       启动mysql:mysql.server start

       停止mysql:mysql.server stop

(4)mysql_multi:可以启动多个mysql实例

 

1.3、启动mysql客户端

在mysql的安装目录的bin目录下,有多个可以启动mysql提供的客户端的执行文件,常用的几个是:

(1)mysql

       连接mysql的服务端,使用方法:

          mysql -h主机名 -u用户名 -p密码

       或 mysql –host=主机名 --user=用户名 –password=密码

(2)mysqldump

       备份数据库,使用方法

         mysqldump -u用户名 -p密码  数据库名 > 备份文件名

(3)mysqlcheck、mysqladmin等

 

1.4、客户端向服务端发送请求

客户端向服务器端发送请求总共有三步:

连接管理、解析与优化、存储引擎。

mysql笔记一:mysql简介_第1张图片

1.4.1、连接管理

mysql服务端和客户端的连接本质上是进程间通讯的过程,mysql有三种通讯方式,分别是:

(1)TCP/IP

       mysql服务器端默认监听3306端口,客户端可以通过3306端口和服务器端通讯,这是最常用的方式。

(2)命名管道和共享内存

       windows操作系统的机制,在类unix机器上没有什么用处。

(3)unix套接字文件

       必须是类unix机器,且客户端和服务器端在一台机器上。

       服务器端:默认套接字文件位置:/tmp/mysql.sock

              手动指定:mysqld –socket=/tmp/xxx.txt

       客户端:mysql -hlocalhost -uroot –socket=/tmp/xxx.txt -p

(4)最大连接数

无论采用哪种通讯方式,服务器端每建立一个连接,就会创建一个线程去处理,所以服务器端有最大连接数的限制。

       a)查看最大连接数

       show variables like '%max_connections%';

       b)修改最大连接数

       set GLOBAL max_connections = 200;

1.4.2、解析与优化

解析与优化分为三个步骤:

查询缓存、语法解析、查询优化

(1)查询缓存

       mysql会将查询语句和执行的结果缓存起来,如果下次有相同的查询语句,则直接返回结果。但维护查询缓存的成本很高,每次对mysql的数据进行修改或者修改表结构,缓存就会全部失效。所以,在mysql5.7.20开始,不推荐使用查询缓存,在mysql8.0中删除查询缓存。

(2)语法解析

       将接受的sql语句进行语法解析,确认语句的正确性,并创建内部的数据结构,生成解析树。

(3)查询优化

       对我们写的sql语句进行优化,并分析出使用什么查询方式,利用什么索引,计算查询成本,生成执行计划。

       注:explain可以查看生成的执行计划

1.4.3、存储引擎

存储引擎是直接对文件系统中的数据进行读写操作的。存储引擎对上层提供了若干接口,SQL语句被解析和优化后,生成了执行计划,mysql就拿着执行计划依次执行存储引擎的接口即可。

常用的存储引擎命令:

       (1)show engines:查看支持的存储引擎

mysql笔记一:mysql简介_第2张图片

       (2)设置表的存储引擎:

       建表指定

       create table 表名{建表语句} engine = 存储引擎名称;

       修改:

       alter table 表名 engine = 存储引擎名称;

常见的存储引擎

       innodb(默认)、myisam、memory

 

1.5、存储引擎

存储引擎是基于表的,不是数据库的,所以一个库下的不同表可以指定不同的存储引擎。

1.5.1、Innodb存储引擎

       innodb存储引擎主要是面向在线事务处理的应用,innodb支持事务、支持外键,特点是行锁设计,并且支持一致性读,即默认情况下读取操作不会产生锁。

1.5.2、MyISAM存储引擎

       MyISAM存储引擎主要是面向OLAP数据库应用,MyISAM不支持事务,不支持外键,表锁设计,支持全文检索。

1.5.3、NDB存储引擎

       NDB存储引擎的数据是存储在内存中的,支持部分事务(除了持久性)。

1.5.4、Memory

       NDB存储引擎的数据是存储在内存中的,支持表锁,不支持事务。

 

你可能感兴趣的:(mysql)