数据库基础与MySQL核心组件解析

数据库基础与MySQL核心组件解析

—数据库专栏—


数据库基础与MySQL核心组件深度解析

    • @[toc](数据库基础与MySQL核心组件深度解析)
    • 一、数据库基础:为什么我们需要它?
      • 1.1 什么是数据库?
      • 1.2 使用数据库的九大作用
    • 二、关系型数据库与主流产品
      • 2.1 关系型数据库(Relational Database)定义
      • 2.1 非关系型数据库
      • 2.2 主流关系型与非关系型数据库
    • 三、MySQL安装与核心配置
      • 3.1 MySQL 服务端程序 `mysqld`
      • 3.2 数据库服务器、数据库与表的关系
      • 3.3 选项(配置)文件详解
    • 四、MySQL客户端工具
    • 五、客户端与服务器的通讯方式
      • 5.1 C/S架构(客户端/服务器)
      • 5.2 B/S架构(浏览器/服务器)
    • 六、SQL语言与分类
      • 6.1 什么是 SQL?
      • 6.2 SQL 三大分类
    • 七·、MySQL 8.0 架构与存储引擎深度对比
      • 7.1 MySQL 8.0 服务器架构
      • 7.2 核心存储引擎特性对比
    • 八、总结与展望

一、数据库基础:为什么我们需要它?

在这里插入图片描述

1.1 什么是数据库?

数据库Database是诞生于20世纪60年代末的一项重要技术。它已成为计算机科学与技术的一个重要分支,主要用于解决数据处理中的非数值计算问题。数据处理的核心内容包括数据的存储、查询、修改、排序和统计等。

1.2 使用数据库的九大作用

在现代应用程序开发中,使用数据库是不可或缺的,它提供了传统文件系统难以比拟的优势:

  1. 数据持久化(Data Persistence):数据库可以将数据保存在存储介质中,即使应用程序关闭或服务器重启,数据也不会丢失。
  2. 数据结构化(Data Structuring):数据库能够以结构化的方式存储数据,使得数据易于管理和查询。
  3. 数据完整性(Data Integrity):数据库管理系统(DBMS)提供了数据完整性的保障,确保数据的准确性和一致性。
  4. 并发控制(Concurrency Control):数据库可以处理多个用户或进程同时访问和修改数据,同时确保数据的一致性。
  5. 安全性(Security):数据库提供了多种安全机制,如访问控制、加密等,保护数据不被未授权访问。
  6. 可扩展性(Scalability):随着数据量的增长,数据库可以水平或垂直扩展,以适应不断增长的数据需求。
  7. 备份和恢复(Backup and Recovery):数据库支持数据的备份和恢复,以防数据丢失或损坏。
  8. 查询优化(Query Optimization):数据库系统提供了高效的查询优化器,可以快速执行复杂的查询操作。
  9. 事务管理(Transaction Management):大部分关系型数据库都支持事务(Transaction),确保一系列操作要么完全成功,要么完全失败,提高了操作的可靠性。
  10. 多用户支持(Multi-user Support):数据库允许多个用户同时访问和操作数据,适合多用户环境。

二、关系型数据库与主流产品

2.1 关系型数据库(Relational Database)定义

关系型数据库是指采用了关系模型来组织数据的数据库。关系模型可以简单理解为二维表格模型。一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。

💡 核心概念: 在关系型数据库中,表中的每一条记录称为一行数据(Row),每一个数据行由一个或多个(Column)组成。

例如,在“学生表”和“班级表”中,可以通过“班级编号”这个公共字段来建立两者之间的关系,从而实现数据的有效组织和查询。

在这里插入图片描述

2.1 非关系型数据库

mongoDB:基于NoSQL的文档型数据库,易扩展、高性能、高可用性。

在这里插入图片描述

Redis:流行的基于键值对的内存数据库,常用作缓存,支持多种数据结构。

在这里插入图片描述

2.2 主流关系型与非关系型数据库

类型数据库特点适用场景
关系型Oracle甲骨文产品,适合大型项目,业内最强的数据库,需要收费。大型企业级项目
MySQL开源免费,最受欢迎的数据库,在中小企业中普及率非常高。电商、论坛、中小型项目
PostgreSQL加州大学伯克利分校计算机系开发,可以免费使用、修改和分发。开源项目、复杂查询
SQL Server微软推出的一款专业级数据库,适用于中大型项目。中大型项目,微软生态
SQLite一款轻型的数据库,占用资源非常低。嵌入式设备、手机APP、桌面程序
非关系型Redis流行的基于键值对的内存数据库,常用作缓存,支持多种数据结构。缓存、会话存储
MongoDB基于NoSQL的文档型数据库,易扩展、高性能、高可用性。内容管理、大数据应用

三、MySQL安装与核心配置

3.1 MySQL 服务端程序 mysqld

MySQL安装完成后,其核心的服务端程序是 mysqld(Linux)或 mysqld.exe (Windows)。该可执行程序运行后,MySQL服务即启动。当把MySQL服务配置为自启动时,操作系统启动时会自动运行 mysqld 可执行程序,从而启动MySQL服务。

3.2 数据库服务器、数据库与表的关系

数据库服务器是指在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库(Database),一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库中创建多个表(Table),以保存程序中实体的数据。

计算机 → 安装 MySQL数据库服务器 → 管理 多个数据库 ( DB1, DB2... ) → 包含 多个表 ( 表1, 表2... ) \text{计算机} \xrightarrow{\text{安装}} \text{MySQL数据库服务器} \xrightarrow{\text{管理}} \text{多个数据库}(\text{DB1, DB2...}) \xrightarrow{\text{包含}} \text{多个表}(\text{表1, 表2...}) 计算机安装​MySQL数据库服务器管理​多个数据库(DB1, DB2...)包含​多个表(表1, 表2...)

在这里插入图片描述

3.3 选项(配置)文件详解

MySQL的默认配置(如端口号、数据目录、存储引擎、字符编码集等)可以通过编辑选项文件(Configuration File)实现修改。

在Windows系统中,选项文件的默认路径通常是 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

以下是选项文件中的关键配置节点和参数:

# CLIENT SECTION # 所有随MySQL安装的客户端程序统一配置节点 [client] default-character-set=utf8mb4 # 所有客户端使用utf8mb4编码 port=3306 # 客户端连接端口号 # SERVER SECTION # MySQL服务器端配置节点 [mysqld] # 针对MySQL服务端程序mysqld配置 port=3306 # MySQL服务的端口号 # basedir="D:/Program Files/MySQL/MySQL Server 8.0/" # 安装目录路径 datadir=D:/database/MySQL/data8.0 # 数据目录的实际路径,如果要修改,此处填写数据目录的实际路径 character-set-server=utf8mb4 # 服务端使用的编码集 collation-server = utf8mb4_0900_ai_ci # 服务端使用的排序规则 default-storage-engine=INNODB # 服务端使用的存储引擎 general-log=1 # 是否开启通用日志(1开启) log-error="D:/log/MySQL/8.0/error_log.err" # 错误日志的输出路径 log-bin="D:/log/MySQL/8.0/bin_log" # binlog的文件名前缀,用于备份和复制 

注意: 修改配置文件之后,如果重新指定数据目录路径,需要把C:\ProgramData\MySQL\MySQL Server 8.0\Data 目录整体复制到目标位置,并且需要重新启动MySQL服务才能生效。


四、MySQL客户端工具

MySQL安装成功后自带的命令行客户端工具,可以输⼊命令和执行SQL语句,mysql的基本使用非常简单,打开终端并输入以下命令:

在这里插入图片描述


在这里插入图片描述


也可以使用MySOL官方提供的可视化客户端工具Workbench,运行后如下所示

在这里插入图片描述

五、客户端与服务器的通讯方式

客户端与MySQL数据库服务器的通讯属于典型的C/S架构(Client/Server Architecture)。

5.1 C/S架构(客户端/服务器)

在这里插入图片描述

C/S架构全称是客户端/服务器(Client/Server)架构模式,是常用的两层架构。客户端需要安装客户端软件,服务端程序运行在服务器上,提供 Socket 或数据库服务。

  • 优点:大部分业务都可以在客户端完成,充分利用本地的计算机资源;响应速度快;个性化定制能力强;面向相对固定的用户群,对信息安全的控制能力强。
  • 缺点:需要安装客户端才能使用;维护成本高,任何一台电脑上的客户端出现问题都需要进行维护,升级过程繁琐。
  • 示例应用:QQ、CCTALK,各种网络游戏等需要安装程序并与服务器进行网络通信的应用。

5.2 B/S架构(浏览器/服务器)

在这里插入图片描述

B/S架构全称是浏览器/服务器(Browser/Server)结构,分为Web浏览器、服务器程序、数据库服务三部分,可以理解为是对C/S架构一种改进。由于所有的业务逻辑都由服务器程序处理,所以客户端仅使用浏览器就可以完成所有操作,大大降低了客户端的维护成本。

  • 优点:客户端零维护,只需要安装一个浏览器即可;所有业务都集中在服务器端,业务扩展非常方便;维护成本低,只需要维护服务器即可。
  • 缺点:服务器安全与业务处理能力需要花费很大精力与成本;不同浏览器支持不尽人意。
  • 示例应用:常见的大型网站等对外公开用户提供的网络服务。

HTTP请求HTTP响应数据库操作请求数据库操作响应客户端/浏览器服务器程序数据库


六、SQL语言与分类

6.1 什么是 SQL?

SQL(Structured Query Language),即结构化查询语言的简称,是一种数据库查询和程序设计语言。它用于存取数据以及查询、更新和管理关系数据库。

6.2 SQL 三大分类

SQL 指令可以划分为以下三大类:

  1. DDL (Data Definition Language) - 数据定义语言
    • 作用:用来维护存储数据的结构(Schema)。
    • 代表指令CREATE(创建)、DROP(删除)、ALTER(修改)。
  2. DML (Data Manipulation Language) - 数据操纵语言
    • 作用:用来对数据本身进行操作。
    • 代表指令INSERT(插入)、DELETE(删除)、UPDATE(更新)、SELECT(查询)。
  3. DCL (Data Control Language) - 数据控制语言
    • 作用:主要负责权限管理和事务控制。
    • 代表指令GRANT(授权)、REVOKE(撤销权限)、COMMIT(提交事务)。

七·、MySQL 8.0 架构与存储引擎深度对比

7.1 MySQL 8.0 服务器架构

MySQL 8.0 服务器是由连接池、服务管理工具和公共组件、NoSQL接口、SQL接口、解析器、优化器、缓存、存储引擎、文件系统组成。MySQL还为各种编程语言提供了一套用于外部程序访问服务器的连接器。

其整体架构可以分为以下几个层次:

在这里插入图片描述
  1. 连接层(Connection Pool):负责外部程序(通过 MySQL Connectors)的连接管理、身份验证、线程复用、连接限制和缓存等。
  2. 服务层(Service Layer)
    • SQL Interface / NoSQL Interface:处理 DML、DDL、存储过程、视图、触发器等操作。
    • Parser(解析器):进行查询翻译、对象权限管理。
    • Optimizer(优化器):进行查询访问路径选择、统计信息分析。
    • Caches & Buffers:包括全局和存储引擎缓存,用于提高性能。
  3. 存储引擎层(Pluggable Storage Engines):这是 MySQL 的独特之处。不同的存储引擎对数据如何存储、索引、更新和查询的实现方式各不相同,支持可插拔。
  4. 文件系统层(File System):负责持久化存储,包括系统文件(程序、配置)和文件/日志(Data, Index, Redo, Undo, Binary, Error, General Quer, Slow Query, DDL…)。

外部程序: MySQL Connectors, Shell连接层: Connection Pool服务层: SQL/NoSQL Interface, Parser, Optimizer, Caches存储引擎层: InnoDB, MyISAM, MEMORY...文件系统层: Data, Index, Log Files

7.2 核心存储引擎特性对比

存储引擎是MySQL数据库处理数据的核心组件,默认的存储引擎是 INNODB。可以使用 SHOW ENGINES 语句查看当前服务器支持的存储引擎。

在这里插入图片描述
Feature (特性)MyISAMMemoryInnoDB
事务支持 (Transactions)NoNoYes
外键支持 (Foreign key support)NoNoYes
锁粒度 (Locking granularity)Table (表级锁)Table (表级锁)Row (行级锁)
集群索引 (Clustered indexes)NoNoYes
数据缓存 (Data caches)NoN/AYes
存储限制 (Storage limits)256TBRAM (内存)64TB
B-tree 索引YesYesYes
MVCCNoNoYes

关键结论:

  • InnoDB:默认存储引擎。它支持事务行级锁外键、和MVCC(多版本并发控制),提供了最高的可靠性和并发性能,适用于绝大多数对数据完整性和高并发读写要求高的应用场景。
  • MyISAM:不支持事务和行级锁(只支持表级锁),但具有较快的读取速度。适用于读多写少、对数据完整性要求不高的场景。
  • MEMORY:数据存储在内存中(RAM),速度极快,但不支持事务,且在服务重启时数据会丢失。适用于临时表或作为缓存使用。

八、总结与展望

本文从数据库的必要性出发,介绍了关系型数据库的核心概念,并以MySQL为例,详细阐述了其安装配置、C/S通讯架构,以及影响性能和数据可靠性的核心组件——存储引擎。

核心知识点回顾:

  • 数据库解决了数据持久化、结构化和并发控制等核心问题。
  • 关系型数据库以二维表形式存储数据,MySQL是其中最受欢迎的开源产品。
  • MySQL采用C/S架构通讯,mysqld 是其服务端核心程序。
  • SQL分为 DDL、DML、DCL 三大类,分别用于定义结构、操作数据和权限管理。
  • InnoDB存储引擎因支持事务和行级锁,是现代应用的首选,而 MyISAM 和 MEMORY 则适用于特定的读优化或临时存储场景。

希望通过对MySQL架构的理解,读者能够在实际应用开发中,根据业务场景(如高并发、数据一致性、快速查询)选择最合适的存储引擎和数据库设计方案。

思考与讨论: 在您的项目中,是否遇到过因为存储引擎选择不当而导致的性能问题?在什么场景下,您会考虑使用 MyISAM 或 MEMORY 替代默认的 InnoDB 引擎?欢迎在评论区分享您的经验和见解!


在这里插入图片描述

Read more

Vivado完整license文件获取与配置指南

本文还有配套的精品资源,点击获取 简介:Vivado是由Xilinx开发的FPGA和SoC设计综合工具,支持Verilog、VHDL等硬件描述语言,提供高级综合、仿真、IP集成等功能。本资源包“Vivado_的license文件.zip”包含用于解锁Vivado完整功能的许可证文件。介绍了许可证服务器配置、.lic文件管理、浮动与固定许可证区别、激活流程、更新与诊断等核心内容。适用于FPGA开发者、嵌入式系统工程师及学习者,帮助其合法配置Vivado环境,提升开发效率和项目执行能力。 1. Vivado工具与FPGA开发环境概述 Xilinx Vivado设计套件是面向FPGA和SoC开发的集成化软件平台,广泛应用于通信、工业控制、人工智能、嵌入式视觉等多个高科技领域。其核心功能包括项目创建、综合、实现、仿真、调试及系统级集成,支持从设计输入到硬件验证的全流程开发。 Vivado不仅提供了图形化界面(GUI)便于初学者快速上手,还支持Tcl脚本自动化操作,满足高级用户的大规模工程管理需求。其模块化架构设计使得开发者可以灵活选择所需功能组件,如HLS(高层次综合)、IP In

By Ne0inhk
【讨论】VR + 具身智能 + 人形机器人:通往现实世界的智能接口

【讨论】VR + 具身智能 + 人形机器人:通往现实世界的智能接口

摘要:本文探讨了“VR + 具身智能 + 人形机器人”作为通往现实世界的智能接口的前沿趋势。文章从技术融合、应用场景、商业潜力三个维度分析其价值,涵盖工业协作、教育培训、医疗康复、服务陪护等领域,并展望VR赋能下的人机共生未来,揭示具身智能如何推动机器人真正理解、感知并参与现实世界。 VR + 具身智能 + 人形机器人:通往现实世界的智能接口 文章目录 * VR + 具身智能 + 人形机器人:通往现实世界的智能接口 * 一、引言:三股力量的融合,正在重塑现实世界 * 二、具身智能:让AI拥有“身体”的智慧 * 1. 什么是具身智能(Embodied Intelligence) * 2. 为什么VR是具身智能的“孵化器” * 三、VR + 具身智能 + 人形机器人:协同结构与原理 * 1. 系统组成 * 2. 人类的“

By Ne0inhk
Flutter 组件 bip340 适配鸿蒙 HarmonyOS 实战:次世代 Schnorr 签名,为鸿蒙 Web3 与隐私计算筑牢加密防线

Flutter 组件 bip340 适配鸿蒙 HarmonyOS 实战:次世代 Schnorr 签名,为鸿蒙 Web3 与隐私计算筑牢加密防线

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 bip340 适配鸿蒙 HarmonyOS 实战:次世代 Schnorr 签名,为鸿蒙 Web3 与隐私计算筑牢加密防线 前言 在鸿蒙(OpenHarmony)生态迈向去中心化金融(DeFi)、隐私通讯及安全资产管理等高阶安全场景的背景下,如何实现更高性能、更具扩展性且抗攻击能力的数字签名架构,已成为决定应用闭环安全性的“压舱石”。在鸿蒙设备这类强调分布式鉴权与芯片级安全(TEE/SE)的移动终端上,如果依然沿用传统的 ECDSA 签名算法,由于由于其固有的可延展性风险与高昂的聚合验证成本,极易由于由于在大规模节点验证时的 CPU 负载过高导致交互滞后。 我们需要一种能够实现签名线性聚合、计算逻辑极简且具备原生抗延展性的密码学方案。 bip340 为 Flutter 开发者引入了比特币 Taproot 升级的核心——Schnorr 签名算法。它不仅在安全性上超越了传统标准,更通过其线性的数学特性,

By Ne0inhk
《MySQL 表基础语法:从入门到熟练的核心技巧》

《MySQL 表基础语法:从入门到熟练的核心技巧》

前引:MySQL 表的增删查是数据库操作的基础,也是日常开发、数据分析中最高频的需求。很多初学者会卡在语法细节、场景适配或效率优化上,明明掌握了基础命令,实际应用中却频频出错。本文聚焦 “实用 + 避坑”,从核心语法到高频场景,再到优化技巧,帮你彻底吃透 MySQL 表增删查,告别 “只会用不会用对” 的尴尬 SQL查询中各个关键字的执行先后顺序: from > on> join > where > group by > with > having > select > distinct > order by > limit 目录 【一】增 (1)基本创建 (2)

By Ne0inhk