MySQL

文章目录

  • MySQL
    • 1.数据库
      • [1.1 数据库的概念及其发展](#1.1 数据库的概念及其发展)
        • [1.1.1 数据库概念](#1.1.1 数据库概念)
      • [1.2 数据库的发展历史](#1.2 数据库的发展历史)
        • [1.2.3 数据库系统阶段](#1.2.3 数据库系统阶段)
      • [1.3 数据的分类](#1.3 数据的分类)
        • [1.3.1 结构化数据](#1.3.1 结构化数据)
        • [1.3.2 半结构化数据](#1.3.2 半结构化数据)
        • [1.3.3 非结构化数据](#1.3.3 非结构化数据)
    • [2.1 SQL 语言分类及核心内容](#2.1 SQL 语言分类及核心内容)
      • [2.2 DDL:数据定义语言](#2.2 DDL:数据定义语言)
      • [2.3 DML:数据操作语言](#2.3 DML:数据操作语言)
        • [2.3.1 插入数据(INSERT)](#2.3.1 插入数据(INSERT))
        • [2.3.2 更新数据(UPDATE)](#2.3.2 更新数据(UPDATE))
        • [2.3.3 删除数据(DELETE)](#2.3.3 删除数据(DELETE))
      • [2.4 DQL:数据查询语言](#2.4 DQL:数据查询语言)
        • [2.4.1 查询基础语法](#2.4.1 查询基础语法)
        • [2.4.2 查询限制条件(WHERE)](#2.4.2 查询限制条件(WHERE))
        • [2.4.3 查询排序(ORDER BY)](#2.4.3 查询排序(ORDER BY))
        • [2.4.4 查询去重(DISTINCT)](#2.4.4 查询去重(DISTINCT))
        • [2.4.5 查询聚合函数](#2.4.5 查询聚合函数)
      • [2.5 用户管理与权限控制](#2.5 用户管理与权限控制)
        • [2.5.1 创建用户(CREATE USER)](#2.5.1 创建用户(CREATE USER))
        • [2.5.2 授权用户(GRANT)](#2.5.2 授权用户(GRANT))
        • [2.5.3 查看当前用户权限(SHOW GRANTS)](#2.5.3 查看当前用户权限(SHOW GRANTS))
        • [2.5.4 回收权限(REVOKE)](#2.5.4 回收权限(REVOKE))
        • [2.5.5 修改用户密码(ALTER USER 和 SET PASSWORD)](#2.5.5 修改用户密码(ALTER USER 和 SET PASSWORD))
      • [2.6 权限、用户与安全控制](#2.6 权限、用户与安全控制)
        • [2.6.1 MySQL 授权系统核心概念](#2.6.1 MySQL 授权系统核心概念)
      • [2.7 DCL 语句的应用场景](#2.7 DCL 语句的应用场景)
      • [2.8 权限管理示例:添加用户并授权](#2.8 权限管理示例:添加用户并授权)
      • [2.9 权限按主机限制](#2.9 权限按主机限制)
      • [2.11 权限安全管理(RBAC)](#2.11 权限安全管理(RBAC))
    • [MySQL 的备份与恢复技术](#MySQL 的备份与恢复技术)
      • [3.1 备份与恢复的重要性](#3.1 备份与恢复的重要性)
      • [3.2 冷备份(物理备份)](#3.2 冷备份(物理备份))
      • [3.3 逻辑备份(mysqldump)](#3.3 逻辑备份(mysqldump))
      • [3.4 增量备份(基于 binlog)](#3.4 增量备份(基于 binlog))
      • [3.5 恢复必须考虑的事项](#3.5 恢复必须考虑的事项)

MySQL

1.数据库

1.1 数据库的概念及其发展

1.1.1 数据库概念

数据库(Database)是按一定逻辑结构和组织方式存储、检索和维护数据的系统。它可以看作是能够长期存储,由计算机主导,统一管理的数据集合

不同于系统运行时的临时存储、内存中的缓存等,数据库是一个具有持久性、一致性、安全性、完整性的系统。

Database 在英文中是数据仓库的意思,中文中我们也同样称呼它为"数据库"。


1.2 数据库的发展历史

我们在学习数据库历史时,需要关注以下三个基本阶段的发展:

1.2.1 人工数据管理阶段 (ALM: Artificial Logistics Management)

  • 时间:20世纪50年代之前的数据库管理系统均处于人工管理阶段。
  • 特点
    • 数据类型多样,包括数字、文本、图表等。
    • 数据存储依赖大量的存储设备(如纸带、磁带)。
    • 数据使用批处理方式。
    • 缺乏统一标准和整合方式。
  • 局限性
    • 数据存储方式不统一,搜索和查询效率低。
    • 数据更新和更改需要手工操作,缺乏自动化。
  • 主要内容
    • 数据:存储介质中的物理文件。
    • 逻辑结构:文件夹、文件。

1.2.2 文件系统管理阶段 (FMS: File Management System)

  • 时间:20世纪50年代后期至60年代中期。
  • 代表系统:IBM 的 System/360 采用了文件系统管理。
  • 特点
    • 数据以文件的形式组织,有了结构化的表示方式。
    • 有统一的工具来操作数据,开始引入命令行方式。
    • 可支持同时读写,但数据安全性较低。
  • 代表性文件System
    • 磁盘文件结构的数据库系统。
    • 同时支持批式操作和实时操作。
  • 基本特点
    • 数据以文件夹和文件等方式保存;
    • 可以跨多个系统进行多平台集成;
    • 需要程序员定义模型和结构;
    • 数据变更管理需要人工干预或手动操作;
    • 数据更新操作在形式上仍然依赖 LOCK。.
    • 数据库存储管理依赖外部管理员运行程序,如 backuprestoredelete 命令。

1.2.3 数据库系统阶段
  • 时间:20世纪70年代至今。20世纪70年代后数据库技术进入蓬勃发展阶段。

1.2.3.1 关系型数据库系统 (RDBMS)

关系型数据库的出现标志着数据管理范式的一种转变。关系数据库采用关系模型进行数据存储和处理,数据以二维表格的形式存储和检索。

关系数据库的特点

  • 数据以表的形式存储,有行和列的表示;
  • 有清晰的逻辑结构,允许结构化查询;
  • 可支持多对多的数据关系。例如,学生和课程表之间关系可以用外键或者 JOIN ƒ表达。
  • 人机交互通过 SQL 来实现。

今日最大跃迁

  • MySQL、PostgreSQL、Oracle、SQL Server 等依托关系模型发展起来。
  • 来自 Oracle 的关系模型设计给予了数据库管理的范式转变。
  • 范式如第一范式、第二范式等,优化数据存储结构。

1.2.3.2 易用性、可扩展性和灵活性

  • 数据以表格形式管理,很容易与应用开发进行连接;
  • 数据库可支持同时操作多个数据表;
  • 内容管理更加简洁,如 JSON、XML 等;
  • 云服务和分布式也增加了数据库的扩展能力和网络适应性。

1.3 数据的分类

1.3.1 结构化数据

1.3.1.1 定义

结构化数据是指可以被二维表结构 所表达的数据类型,它有固定列和行结构

1.3.1.2 典型例子

在学校管理数据库系统中,学生表就是一个典型的结构化数据。

复制代码
| stid | name  | age |
|------|-------|-----|
| 1    | 唐三  | 123 |
| 2    | 叶凡  | 456 |

1.3.1.3 数据特点

  • 每个字段数据类型明确;
  • 支持查询、修改、删除投射不同的操作;
  • 可对数据进行一致性和原子性的保护;
  • 容易与应用层对接,管理算法优雅。
  • 每个字段具有固定的长度,存储开销较小。

1.3.1.4 优势和局限

  • 优点
    • 数据一致性高;
    • 结构清晰,易于设计;
    • 支持多种数据类型,包括数字、文本、日期等。
  • 局限
    • 当数据结构比较复杂时,可能需要更多的维护和配置;
    • 大数据量的存储和查询效率会下降。

1.3.2 半结构化数据

1.3.2.1 定义

半结构化数据无法被二维表形式表达,但它提供了结构标签 集成到数据中,可以表示层次式结构

  • JSON、XML、HTML、CSV、XML 也属于半结构化数据。
  • 如此类数据缺乏统一结构,有不同的存储方式。
  • 它的结构和内容混合在一起,也被称为"自描述结构"数据。

1.3.2.2 典型例子

json 复制代码
[
    {
        "id": 1,
        "name": "唐三",
        "gene": "male"
    },
    {
        "id": 2,
        "name": "叶凡",
        "gene": "female"
    }
]
  • 结构形式:JSON 结构;
  • 内容形式:字段描述与值之间的映射。

1.3.2.3 优势和局限

  • 优点
    • 易于查询和更新:JSON 可通过 SQL 原生支持解析;
    • 扩展性强:方便以后添加新字段;
    • 模型独立:数据库可以不持久化中间结构,又可应用于多样化的场景。
  • 局限
    • 查询效率低;
    • 多数据分布需要设计高速结构;
    • 没有统一的语言标准,某种 JSON 可能不支持 SQL 查询。

1.3.3 非结构化数据

1.3.3.1 定义

非结构化数据不是用二维表存储的,它通常以整体文件形式存放,如 PDF、视频、音频、图像及二进制文件。

1.3.3.2 特点

  • 数据缺乏预定义的格式;
  • 存储方式采用文件夹或文件的形式;
  • 查询和操作需要特定的框架或工具(如 NoSQL)。

1.3.3.3 典型例子

  • 附件文件(如 PDF、JPG)
  • 音视频文件(如 MP4、MPEG)
  • 零散的文件(如在一个系统里,多个用户上传资源)

2.1 SQL 语言分类及核心内容

SQL(Structured Query Language)是操作和管理关系型数据库的重要语言,按功能分为以下几类:

SQL 类型 作用 示例
DDL 数据库与表的结构管理 CREATE DATABASE, CREATE TABLE
DML 对数据库中数据的操作 INSERT, UPDATE, DELETE
DQL 查询操作 SELECT
DCL 用户权限管理 GRANT, REVOKE
TCL 事务控制 COMMIT, ROLLBACK, BEGIN

2.2 DDL:数据定义语言

DDL 用于定义和操作数据库、表、索引等结构。

2.2.1 创建数据库

sql 复制代码
CREATE DATABASE school;

该语句会创建一个名为 school 的数据库。

2.2.2 使用数据库

sql 复制代码
USE school;

依次进入 school 数据库,后续操作针对该库。

2.2.3 查看数据库列表

sql 复制代码
SHOW DATABASES;

显示系统中所有的数据库。

2.2.4 查看创建数据库的语句

sql 复制代码
SHOW CREATE DATABASE school;

显示创建 school 数据库时使用的 SQL 语句。

2.2.5 创建表(常见的 DDL 语句)

sql 复制代码
CREATE TABLE students (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(20) NOT NULL,
    age TINYINT,
    gender ENUM('Male', 'Female'),
    address VARCHAR(50)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

创建一个名为 students 的表,使用 InnoDB 引擎和 UTF8MB4 字符集。

2.2.6 修改表结构

  1. 修改字段类型:
sql 复制代码
ALTER TABLE students MODIFY age SMALLINT;
  1. 添加字段:
sql 复制代码
ALTER TABLE students ADD COLUMN email VARCHAR(255) AFTER name;
  1. 删除字段:
sql 复制代码
ALTER TABLE students DROP COLUMN email;

2.2.7 查看表结构

sql 复制代码
DESC students;  -- 显示表的结构和字段信息
SHOW CREATE TABLE students;  -- 显示创建表的完整 SQL 语句

DESC 语句提供更简化的结构视图,SHOW CREATE TABLE 则用于查看定义。


2.3 DML:数据操作语言

DML 用于数据的增删改操作,是数据库核心内容之一。

2.3.1 插入数据(INSERT)

插入单条数据

sql 复制代码
INSERT INTO students (name, age, gender, address) 
VALUES ('唐三', 12, 'Male', '海淀区123号');

插入多条数据

sql 复制代码
INSERT INTO students (name, age, gender, address) 
VALUES 
    ('叶凡', 18, 'Male', '朝阳区456号'),
    ('林动', 20, 'Male', '西城区789号');

插入整表数据(从另一个表复制)

sql 复制代码
INSERT INTO students SELECT * FROM other_students;

插入数据与文件导入

bash 复制代码
# 从 CSV 文件导入数据
LOAD DATA INFILE '/data/students.csv'
INTO TABLE students
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

2.3.2 更新数据(UPDATE)
sql 复制代码
UPDATE students SET age = 25 WHERE id = 1;

id=1 的学生年龄修改为 25。

sql 复制代码
UPDATE students SET address = '北京西城区', gender = 'Female' WHERE name LIKE '林%';

更新所有名字为"林"的学生的地址与性别为"Female"。


2.3.3 删除数据(DELETE)
sql 复制代码
DELETE FROM students WHERE id = 3;

删除 id=3 的记录。

sql 复制代码
DELETE FROM students WHERE age < 18;

删除所有小于 18 岁的学生。
✅ 注意:删除数据前应该先备份,避免误删。


2.4 DQL:数据查询语言

DQL 主要用于从数据库中提取数据,是 SQL 的核心内容之一。

2.4.1 查询基础语法
sql 复制代码
SELECT * FROM students;

查询表中的所有内容。

sql 复制代码
SELECT name, age FROM students WHERE gender = 'Male';

查询男性学生的姓名和年龄。


2.4.2 查询限制条件(WHERE)
sql 复制代码
SELECT * FROM students WHERE age > 20 AND gender = 'Male';
sql 复制代码
SELECT * FROM students WHERE name LIKE '林%';

使用通配符进行模糊匹配。


2.4.3 查询排序(ORDER BY)
sql 复制代码
SELECT name, age FROM students ORDER BY age DESC;

按年龄从高位到低位排序。


2.4.4 查询去重(DISTINCT)
sql 复制代码
SELECT DISTINCT gender FROM students;

查询中不同性别。


2.4.5 查询聚合函数

常见函数包括:

  • COUNT(*):统计记录总数。
  • AVG(age):统计平均年龄。
  • MAX(age):最大年龄。
  • SUM(age):年龄总和。
  • GROUP BY:按字段分组统计。
  • JOIN:连接多个表进行复杂查询。
sql 复制代码
SELECT s.name, c.name 
FROM students AS s 
JOIN classes AS c ON s.class_id = c.id;

查询学生姓名及其所属班级。


2.5 用户管理与权限控制

2.5.1 创建用户(CREATE USER)
sql 复制代码
CREATE USER 'student'@'localhost' IDENTIFIED BY 'student_pwd';

创建一个本地用户 student,密码为 student_pwd


2.5.2 授权用户(GRANT)

GRANT 用于给用户授予数据库对象的访问权限,示例:

sql 复制代码
GRANT SELECT, INSERT, UPDATE ON school.students TO 'student'@'localhost';

授权用户 student@localhostschool.students 表进行查询、插入和更新操作。

sql 复制代码
GRANT ALL PRIVILEGES ON school.* TO 'admin'@'%';

授权用户 admin@%school 数据库中的所有表具有所有权限。

sql 复制代码
GRANT USAGE ON *.* TO 'readonly'@'%' IDENTIFIED BY 'r_pwd';

创建一个只读用户 readonly@%,密码为 r_pwd
权限说明

  • SELECT: 只读操作
  • INSERT: 插入数据
  • UPDATE: 更新数据
  • DELETE: 删除数据
  • ALL: 全部权限(包括查询、增删改查等)

2.5.3 查看当前用户权限(SHOW GRANTS)
sql 复制代码
SHOW GRANTS FOR 'student'@'localhost';

查看用户 student@localhost 的权限。


2.5.4 回收权限(REVOKE)
sql 复制代码
REVOKE DELETE ON school.students FROM 'student'@'localhost';

回收用户对 students 表的删除权限。


2.5.5 修改用户密码(ALTER USER 和 SET PASSWORD)
sql 复制代码
ALTER USER 'student'@'localhost' IDENTIFIED BY 'new_pwd';
SET PASSWORD FOR 'student'@'localhost' = 'new_pwd';

2.6 权限、用户与安全控制

2.6.1 MySQL 授权系统核心概念

在 MySQL 中,权限控制不仅是数据访问的判断点,还涉及如下:

  • 主机(host): 用户权限受限于其连接方式。
  • 权限(privilege): 基于数据库、表、列或全局的访问权限。
  • 角色(role) : MySQL 有 mysql_native_passwordcaching_sha2_password 等方式。

MySQL 的用户额外权限有:

权限 说明
SELECT 查询所有数据
INSERT 插入数据
UPDATE 更新数据
DELETE 删除数据
CREATE 创建数据库或表
DROP 删除数据库或表
ALTER 修改表结构
RELOAD 重新加载索引和配置文件
SUPER 控制服务器进程(可用于管理权限)

✅ 警告:不要过度授权权限,以免造成安全漏洞或操作误用。


2.7 DCL 语句的应用场景

操作 使用场景
权限赋予 为开发账号授权查询与更新权限
管理员权限 用于数据操作、查询及管理
回收权限 防止普通用户误操作
修改密码 保证密码安全更新
创建只读账号 增强数据库安全性

2.8 权限管理示例:添加用户并授权

mysql 复制代码
-- 创建用户
CREATE USER 'app_user'@'192.168.0.100' IDENTIFIED BY 'supersecure123';

-- 授权用户访问名为 test 的数据库
GRANT SELECT, INSERT ON test.* TO 'app_user'@'192.168.0.100';

-- 授权用户具有创建和管理数据库的权限
GRANT CREATE, DROP ON test.* TO 'app_user'@'192.168.0.100';

-- 提交权限
FLUSH PRIVILEGES;

填写 app_user@192.168.0.100 账户拥有对 test 数据库的查询和插入权限,这时即使用户账号变更也可保持权限完整性。


2.9 权限按主机限制

MySQL 支持基于主机的权限管理,这样可以实现网段或 IP 级别防护。

示例:按 IP 授权用户

sql 复制代码
-- 创建可访问 IP 为 192.168.0.1 上的数据库的用户
CREATE USER 'guest'@'192.168.0.1' IDENTIFIED BY 'guest123';

-- 授权该用户访问特定数据库
GRANT SELECT, UPDATE ON school.students TO 'guest'@'192.168.0.1';

账户权限限于 192.168.0.1,本地用户使用 localhost


2.11 权限安全管理(RBAC)

RBAC(Role-Based Access Control)是一种基于角色的访问控制模型。

示例:

sql 复制代码
-- 创建角色 'student_role'
CREATE ROLE 'student_role';

-- 授权角色的权限
GRANT SELECT, INSERT ON school.students TO 'student_role';

-- 将角色授予用户
GRANT 'student_role' TO 'student'@'localhost';

-- 提交权限
FLUSH PRIVILEGES;

这样可以避免直接交互数据库用户名和密码,减少敏感信息暴露。

MySQL 的备份与恢复技术

3.1 备份与恢复的重要性

在运维工作中,数据安全灾难恢复是至关重要的部分。MySQL 提供了多种备份方式,包括:

  • 冷备份(物理备份)
  • 逻辑备份(mysqldump 工具)
  • 增量备份(基于 binlog)
  • 恢复备份

这些备份方式各有适用场景,运维工程师应根据实际情况选择合适的备份方法。


3.2 冷备份(物理备份)

3.2.1 定义

冷备份是一种完全停机 的状态下对数据库物理文件进行复制的方式,通常适用于:

  • 运维窗口期间的全量备份;
  • 数据库服务器更新或迁移前的备份;
  • 对于某些不频繁变更的数据库;

3.2.2 冷备份原理

冷备份的核心是使用数据库的数据目录,通常包含以下文件:

  • 数据库文件(*.ibd*.frm*.myd*.myi 等)
  • 配置文件(my.cnfmy.ini
  • 日志文件(binlogerror.logrelay.log 等)

3.2.3 冷备份操作步骤

步骤一:停止 MySQL 服务

bash 复制代码
systemctl stop mysqld

步骤二:复制数据目录

bash 复制代码
cp -r /var/lib/mysql /backup/mysql_backup_$(date +%Y%m%d)

步骤三:记录配置信息

bash 复制代码
cp /etc/my.cnf /backup/mysql_config_$(date +%Y%m%d).cnf

注意:在备份前必须确保 MySQL 服务已停止,否则会存在数据不一致的风险。

3.2.4 冷备份的恢复方式

恢复冷备份前,必须恢复数据目录配置文件,操作如下:

步骤一:停止 MySQL 服务

bash 复制代码
systemctl stop mysqld

步骤二:删除原有数据目录

bash 复制代码
rm -rf /var/lib/mysql

步骤三:替换为备份数据

bash 复制代码
cp -r /backup/mysql_backup_20250421 /var/lib/mysql

步骤四:启动 MySQL 服务

bash 复制代码
systemctl start mysqld

步骤五:验证备份

bash 复制代码
mysql -u root -p -e "SHOW DATABASES;"

3.3 逻辑备份(mysqldump)

3.3.1 定义

逻辑备份是指将数据库的结构和数据以 SQL 文件形式 保存,适合常规的数据迁移、备份管理只读访问场景。

3.3.2 逻辑备份命令详解

备份单个数据库

bash 复制代码
mysqldump -u root -p school > school_backup.sql

school 数据库导出为 SQL 文件。

备份单个表

bash 复制代码
mysqldump -u root -p school.students > students_backup.sql

备份整个数据库(所有数据库)

bash 复制代码
mysqldump -u root -p --all-databases > all_backup.sql

备份时指定字符集

bash 复制代码
mysqldump -u root -p --default-character-set=utf8mb4 school > school_utf8mb4_backup.sql

备份时指定压缩****

bash 复制代码
mysqldump -u root -p school > school_backup.sql | gzip > school_backup.sql.gz

3.3.3 逻辑备份的恢复方式

从 SQL 文件中恢复数据

bash 复制代码
mysql -u root -p school < school_backup.sql

从压缩 SQL 文件恢复数据

bash 复制代码
gzip -d school_backup.sql.gz | mysql -u root -p school

3.4 增量备份(基于 binlog)

3.4.1 增量备份定义

增量备份是指在上一次完整备份之后 ,仅备份发生变化的数据 ,常用于灾备与审计场景。

3.4.2 增量备份原理

MySQL 中的增量备份 主要通过binlog(二进制日志)实现。它记录了所有对数据库的修改操作,如:

  • 插入(INSERT)
  • 更新(UPDATE)
  • 删除(DELETE)

3.4.3 增量备份操作步骤

步骤一:开启 binlog

编辑 my.cnfmy.ini,添加以下内容:

ini 复制代码
[mysqld]
log-bin = mysql-bin
server-id = 1
binlog-format = ROW  # 记录行的增删改操作

步骤二:重启 MySQL 服务

bash 复制代码
systemctl restart mysqld

步骤三:设置 binlog 备份时间点

bash 复制代码
mysql> FLUSH LOGS;  # 生成新的 binlog 文件
mysql> SHOW MASTER STATUS;  # 查看当前的 binlog 位置

✅ 这两个命令帮助确定备份点,以便进行增量恢复。

步骤四:对 binlog 进行备份(如使用 mysqldump 备份后记录 binlog 信息)

bash 复制代码
# 保存当前 binlog 文件名和位置
mysql> SET GLOBAL log_bin_basename = '/var/lib/mysql/mysql-bin.000010';
mysql> SET GLOBAL binlog_file = 'mysql-bin.000010';
mysql> SET GLOBAL binlog_pos = 123456;

步骤五:执行增量恢复(使用 mysqlbinlog 工具)

bash 复制代码
mysqlbinlog /var/lib/mysql/mysql-bin.000010 --start-position=123456 | mysql -u root -p school

3.5 恢复必须考虑的事项

恢复要点 说明
备份完整性 目录或 SQL 文件未损坏
权限问题 恢复数据库时需要对应用户权限
字符集匹配 逻辑备份的字符集与目标环境一致
binlog 模式 增量恢复时需要注意 ROW / MIXED / STATEMENT 模式
物理备份一致性 在冷备份中需要注意表结构是否最新
测试性恢复 建议在测试环境或沙箱中练习恢复流程
相关推荐
蓝影铁哥2 小时前
浅谈国产数据库OceanBase
java·linux·数据库·oceanbase
JosieBook2 小时前
【大模型】用 AI Ping 免费体验 GLM-4.7 与 MiniMax M2.1:从配置到实战的完整教程
数据库·人工智能·redis
weixin_425023002 小时前
MybatisPlusJoin 完整样例
java·数据库·sql
运维行者_2 小时前
不同规模企业如何选 OPM?参考局域网管理软件与 cpu 温度监控适配指南
大数据·运维·服务器·网络·数据库·postgresql·snmp
冰冰菜的扣jio2 小时前
MySQL高性能优化合集
数据库·mysql
weixin_404679312 小时前
vscode 配置cpp调试环境
数据库·ide·vscode·编辑器
TG:@yunlaoda360 云老大2 小时前
华为云国际站代理商GaussDB主要有什么作用呢?
服务器·数据库·华为云·gaussdb
ohoy2 小时前
业务数据聚合分析 xxl-job定时任务
数据库·oracle
技术破壁人3 小时前
MySQL 8+ 高级特性与高级用法详解(Spring Boot + Java 实战)
spring boot·mysql