• 为了管理方便,人们把连接管理查询缓存语法解析查询优化这些并不涉及真实数据存储的功能划分为MySQL server的功能,把真实存取数据的功能划分为存储引擎的功能。所以在MySQL server完成了查询优化后,只需按照生成的执行计划调用底层存储引擎提供的API,获取到数据后返回给客户端就好了。
  • MySQL中提到了存储引擎的概念。简而言之,存储引擎就是指表的类型。其实存储引擎以前叫做表处理器,后来改名为存储引擎,它的功能就是接收上层传下来的指令,然后对表中的数据进行提取或写入操作。
    Read more »

1、逻辑架构剖析

1.1 服务器处理客户端请求

  • 首先MySQL是典型的C/S架构,即Client/Server架构,服务器端程序使用的mysqld。

  • 不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一段文本(SQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果)

  • 那服务器进程对客户端进程发送的请求做了什么处理,才能产生最后的处理结果呢?这里以查询请求为例展示:

    Read more »

1、用户管理

  • MySQL用户可以分为普通用户和root用户。root用户是超级管理员,拥有所有权限,包括创建用户、删除用户和修改用户的密码等管理限;普通用户只拥有被授予的各种权限。
  • MySQL提供了许多语句用来管理用户账号,这些语句可以用来管理包括登录和退出MySQL服务器、创用户、删除用户、密码管理和双限管拜等内容。
  • MySQL数据库的安全性需要通过账户管理来保证。
    Read more »

1、MySQL8的主要目录结构

1
2
3
4
5
root@f0796ad75d78:/# find / -name mysql
/etc/mysql
/usr/lib/mysql
/usr/bin/mysql
…………
Read more »

1、各级别的字符集

  • MySQL有4个级别的字符集和比较规则,分别是:

    • 服务器级别。
    • 数据库级别。
    • 表级别。
    • 列级别。
Read more »

1、概述

  • MySQL从5.7版本直接跳跃发布了8.0版本 ,可见这是一个令人兴奋的里程碑版本。MySQL 8版本在功能上做了显著的改进与增强,开发者对MySQL的源代码进行了重构,最突出的一点是多MySQL Optimizer优化器进行了改进。不仅在速度上得到了改善,还为用户带来了更好的性能和更棒的体验。
    Read more »

1、概述

  • 在实际开发中,我们经常会遇到这样的情况:有2个或者多个相互关联的表,如商品信息和库存信息分别存放在2个不同的数据表中,我们在添加一条新商品记录的时候,为了保证数据的完整性,必须同时在库存表中添加一条库存记录。
  • 这样一来,我们就必须把这两个关联的操作步骤写到程序里面,而且要用事务包裹起来,确保这两个操作成为一个原子操作,要么全部执行,要么全部不执行。要是遇到特殊情况,可能还需要对数据进行手动维护,这样就很容易忘记其中的一步,导致数据缺失。
  • 这个时候,咱们可以使用触发器。你可以创建一个触发器,让商品信息数据的插入操作自动触发库存数据的插入操作。这样一来,就不用担心因为忘记添加库存数据而导致的数据缺失了。
  • MySQL从5.0.2版本开始支持触发器。MySQL的触发器和存储过程一样,都是嵌入到MySQL服务器的一段程序。
    Read more »

1、变量

  • 在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果数据。
  • 在MySQL数据库中,变量分为系统变量以及用户自定义变量
    Read more »

1、概述

  • MySQL从5.0版本开始支持存储过程和函数。存储过程和函数能够将复杂的SQL逻辑封装在一起,应用程 序无须关注存储过程和函数内部复杂的SQL逻辑,而只需要简单地调用存储过程和函数即可。

存储过程概述

  • 含义:存储过程的英文是Stored Procedure。它的思想很简单,就是一组经过预先编译的SQL语句的封装。

  • 执行过程:存储过程预先存储在MySQL服务器上,需要执行的时候,客户端只需要向服务器端发出调用存储过程的命令,服务器端就可以把预先存储好的这一系列SQL语句全部执行。

  • 好处:

    • 简化操作,提高了sql语句的重用性,减少了开发程序员的压力。
    • 减少操作过程中的失误,提高效率。
    • 减少网络传输量(客户端不需要把所有的 SQL 语句通过网络发给服务器)。
    • 减少了SQL语句暴露在 网上的风险,也提高了数据查询的安全性。
      Read more »