Mysql进阶第一章

一· Mysql的系统架构

1.数据库和数据库实例

  • 数据库:按照数据结构来组织、存储和管理数据的仓库,通常由数据库管理系统进行管理。
  • 数据库管理软件(RDBMS):就是我们说的数据库管理系统软件,他强调软件。
  • 数据库实例:启动数据库软件,在内存中运行一个独立进程,用来操作数据,这个正在运行的进程就是一个数据库实例,理论上可以在一台电脑上启动多个数据库实例,当然要监听在不同的端口。

2.Mysql架构

(1)Mysql向外提供的交互接口(Connectors)

(2)管理服务组件和工具组件(Management Server & Utilities)

(3)连接池组件(Connection Pool)

(4)SQL接口组件(SQL Interface)

(5)查询分析器组件(Optimizer)

(6)缓存组件(Cache & Buffers)

(7)MySQL存储引擎

MySQL的查询流程

首先客户端会向mysql服务器发送查询sql语句,之后会进入查询缓存,如果缓存里有就直接返回数据(MySQL在8.0之后取消了查询缓存),如果没有sql语句会进入解析器,进入语法解析,之后进入查询优化器,查询优化器会把我们的sql语句优化成最优的语句,进入执行计划,然后就是查询执行引擎,查询执行引擎通过API接口到存储引擎中查询数据并返回

【小问题】:

MySQL为什么取消了查询缓存

        【mysql的缓存机制】简单来说mysql的缓存就是一个HashMap,如果有完全相同的sql语句,服务器会直接从缓存中取到结果,而不用在解析和执行sql。但是如果表中的数据或者结构发生变化,那么缓存中的数据将不再有效,查询缓存中被清空。一般情况下公司生产环境下的MySQL Query Cache都是关闭的。MySQL8.0也是直接取消了缓存查询。

3.Mysql的目录结构

安装目录结构:

默认为C:\Program Files\MySQL

  • bin目录:用于放置一些可执行的工具文件,如mysql.exe、mysqld.exe、mysqlshow.exe等。
  • include目录:用于放置一些头文件,如:mysql.h、mysql_ername.h等。
  • lib目录:用于放置一系列库文件。
 bin目录工具汇总:

        MySQL服务端工具:

  • mysqld:SQL后台保护程序(MySQL服务器进程)。该程序必须运行之后。客户端才能通过连接服务器端程序访问和操作数据库。
  • mysqld_safe:MySQL服务脚本。mysql_safe增加了一些安全特性,如当出现错误时重启服务器,向错误日志文件写入运行时间信息。
  • mysql.server:MySQL服务启动服本。调用mysqld_safe来启动MySQL服务。
  • mysql_multi:服务器启动脚本,可以启动或停止系统上安装的多个服务。
  • myiasmchk:用来描述、检查、优化和维护MyISAM表的实用工具。
  • mysqlbu:MySQL缺陷报告脚本。它可以用来向MySQL邮件系统发送缺陷报告。
  • mysql_install_db:用于默认权限创建MySQ授权表。通常只是在系统上首次安装MySQL时执行一次。

        MySQL客户端工具 

  • mysql:交互式输入SQL语句或从文件以批处理模式执行SQL语句来操作数据库管理系统,就是我们的客户端。
  • mysqldump:将MySQL数据库转储到一个文件,可以用来备份数据库。
  • mysqladmin:用来检索版本、进程、以及服务器的状态信息。
  • mysqlbinlog:用于从二进制日志读取语句。在二进制日志文件中包含执行的语句,可用来帮助系统从崩溃中恢复。
  • mysqlcheck:检查、修复、分析以及优化表的表维护。
  • mysqlhotcopy:当服务器在运行时,快速备份MyISAM或ISAM表的工具。
  • mysql import:使用load data infile将文本文件导入相关表的客户程序。
  • perror:显示系统或MySQL错误代码含义的工具。
  • myisampack:压缩MyISAP表,产生更小的只读表。
  • mysaqlaccess:检查访问主机名、用户名和数据库组合的权限。
MySQL数据目录结构

默认目录为 C:\ProgramData\MySQL\MySQL Server 8.0,注意ProgramData是一个隐藏目录,需要设置为【显示隐藏文件】

【小知识】

1.当数据库文件过大时可以通过迁移Data文件夹来释放C盘空间,迁移之后需要将没my.ini,中的路径修改为迁移之后的文件位置

2.在Linux系统中我们看到在配置文件中有一个socket的配置,socket 即 Unix 域套接字文件,在类 unix 平台,客户端连接 MySQL 服务端的方式有两种,分别是 TCP/IP 方式与 socket 套接字文件方式。Unix 套接字文件连接的速度比 TCP/IP 快,但是只能连接到同一台计算机上的服务器使用。通过设置 socket 变量可配置套接字文件路径及名称,默认值为 /tmp/mysql.sock。本地客户端的连接默认会使用到该文件:

mysql -uroot -p -S /tmp/mysql.sock

如果mysql.sock文件误删的话,就需要重启mysql服务

3.MySQL数据备份工具:mysqldump可以用来实现轻量级的【快速迁移或恢复数据库】。 mysqldump是将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法。mysqldump一般在数据量很小的时候(几个G)可以用于 备份。当数据量比较大的情况下,就不建议用mysqldump工具进行备份了。下边我们简单的使用mysqldump工具进行备份数据,命令如下:

-- 备份一个表
mysqldump -u root -p ydlclass ydl_user  > ~/dump.txt
-- 备份一个数据库
mysqldump -u root -p ydlclass  > ~/dump.txt
-- 备份所有数据库
mysqldump -u root -p --all-databases > dump.txt

恢复数据

mysql -u root -p ydl < ~/dump.txt

4.MySQL字符集和排序规则

show collation 命令查看MySQL支持的字符集

可以在建表时指定表的字符集

【小知识】:

utf8和utf8mb4的区别:

  • utf8mb3(utf-8):使用1~3个字节表示字符,utf8默认就是utf8mb3。
  • utf8mb4:使用1~4个字节表示字符,他是utf8的超集,甚至可以存储很多【emoji表情😀😃😄😁😆】,mysql8.0已经默认字符集设置为utf8mb4。

5.MySQL修改配置的方法

在MySQL中变量分为全局变量和会话变量

查看全局变量:
show global variables like '%wait_timeout%';
select @@global.wait_timeout;
设置全局变量方法:

1:修改配置文件, 然后重启mysqld:

[mysqld]
wait_timeout=10000

2:在命令行里通过SET来设置(推荐)

set global wait_timeout=10000;
set @@global.wait_timeout=10000;

然后查看设置是否成功

show global variables like 'wait_timeout'
select @@global.wait_timeout
会话变量:

如果要修改会话变量值, 可以指定"SESSION"或者"@@session."或者"@@"或者"LOCAL"或者"@@local.", 或者什么都不使用。语法语法:

mysql> set wait_timeout=10000;
mysql> set session wait_timeout=10000;
mysql> set local wait_timeout=10000;
mysql> set @@wait_timeout=10000;
mysql> set @@session.wait_timeout=10000;
mysql> set @@local.wait_timeout=10000;

设置完之后可以查看设置是否成功

mysql> select @@wait_timeout;
mysql> select @@session.wait_timeout;
mysql> select @@local.wait_timeout;
mysql> show variables like 'wait_timeout';
mysql> show local variables like 'wait_timeout';
mysql> show session variables like 'wait_timeout';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值