MySql----前言有点用----1

MySQL

服务器 && 客户端

安装

不会真有人不会安装吧???

安装的时候会直接(客户端)和(服务器端)都安装了

服务器端

服务器端:一句话,就是打开服务;打开胸膛,你来存或者取;

以我的小Mac为例子:在/usr/local/mysql/bin目录下,有如下的运行文件,其中我框起来的是可以启动Mysql服务器的命令

window下:应该在安装目录下;

MySql----前言有点用----1 

 还有一个启动方式:./mysql.server start

mac上由于没有配置文件my.cnf,所以只能通过这个指令启动,哭咯;害,应该需要自己创建一个。

MySql----前言有点用----1

客户端

mysql -h localhost -u root -p密码

客户端与服务器端的连接

本质:两个线程之间的通信过程

通信方式1--TCP/IP

IP地址 + 端口号

服务器启动的时候指定端口号:mysqld -P3307,默认是3306

客户端启动:mysql -h 服务器IP -u root -P 端口号 -p密码

通信方式2--命名管道

启动服务器是:mysqld --enable-named-pipe

启动客户端是:mysql ... --pipe或者--protocol=pipe

通信方式3--共享内存

要求服务器进程和客户端进程在同一台机器上

启动服务器:mysqld --shared-memory

启动客户端:mysql ... --protocol=memory

通信方式4--Unix域套接字

需要在同一台类Unix的机器上启动服务器和客户端

在Unix机器上,假如客户端启动的时候连接的(-h localhost) 或者(--protocol=socket),则客户端和服务器端默认的通信是通过Unix套接字,并且套接字文件默认为 /tmp/mysql.sock

启动服务器:mysqld --socket=/temp/a.txt      没有使用默认的套接字文件

启动客户端:mysql ... --socket=/temp/a.txt

通信过程

客户端进程向服务器进程发送一段文本(MYSql语句),服务器进程处理后再向客户端发送一段文本

MySql----前言有点用----1

连接管理

每当一个客户端进程连接到服务器进程时,服务器进程都会创建一个线程来专门处理与这个客户端交互,采用的方式就是上面的4种。

处理完,并不会销毁,留给下一个客户端,有点像线程池的感觉哈。

解析和优化

查询缓存

说白了就是:将新来的mysql语句进行对比,假如这条语句跟前面的一条一摸一样,那么我们直接用缓存中的结果(也就是上一次查询的结果会被保存在缓存中)

假如,两条语句有一毛钱的,比如空格不一样,那么就无法命中缓存了。

同时,监控所有表,一旦一个表被insert、update...修改了,那么有关这个表的缓存全部失效

Mysql8.0已经没有了缓存的概念

语法分析

就是将sql语句进行编译的过程

查询优化

你写的sql语句太垃圾,mysql说我帮你优化下呗

存储引擎

存储引擎描述
ARCHIVE用于数据存档
BLACKHOLE丢弃写操作
CSV在存储数据时,以逗号分割各个数据项
FEDERATED用来访问远程表
INNODB具备外键支持功能的事务存储引擎
MEMORY置于内存的表
MERGE用来管理多个MyISAM表构成的表集合
MYISAM主要的非事务处理存储引擎
NDBMySQL集群专用存储引擎

MySql----前言有点用----1

 用的最多的:INNODB、MYISAM、MEMORY;其中INNODB是默认的

MySql----前言有点用----1

存储引擎负责:对表中的数据进行提取和写入工作,我们可以为不同的表设置不同的存储引擎,也就是说不同表可以有不同的物理存储结构,不同的提取和写入方式

创建表是指定引擎 && 修改表引擎

MySql----前言有点用----1

相关推荐