0


【MySQL 探索者日志 】第二弹 —— 数据库基础

MySQL系列学习笔记:

MySQL探索者日志__Zwy@的博客-CSDN博客

各位于晏,亦菲们,请点赞关注!

** 我的个人主页:**

_Zwy@-CSDN博客


1、MySQL服务器,数据库,表关系

**所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多 **

**个数据库,一般开发人员会针对每一个应用创建一个数据库。 **

**为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。 **

数据库服务器、数据库和表的关系如下:

Client(客户端):代表用户或应用程序,是发起数据库操作请求的一方。
MySQL:是一个开源的关系型数据库管理系统,在图中起到接收客户端请求并处理数据库操作的作用。
DB(数据库):图中有两个数据库,数据库是用于存储和组织数据的容器。

表:每个数据库包含多个表,表是数据库中用于存储数据的结构,由行和列组成。

整体架构描述了客户端通过 MySQL 来访问和操作数据库中的表数据的关系。这种架构在实际的软件开发和数据管理中非常常见,MySQL 作为中间层负责处理客户端的请求,对数据库进行增删改查等操作。

2、MySQL登录连接服务器

mysql -h 127.0.0.1 -P 3306 -u root -p

**注意: **

如果没有写 -h 127.0.0.1 默认是连接本地 ,****如果没有写 -P 3306 默认是连接3306端口号。

3、MySQL架构

MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows,Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性

MySQL 架构可以分为几个主要部分:

3.1、Connectors(连接器)

提供了多种编程语言和平台的接口,包括 Native C API、JDBC、ODBC、.NET、PHP、Python、Perl、Ruby 和 VB。这些连接器允许不同的应用程序与 MySQL 数据库进行交互。

3.2、MySQL Server(MySQL 服务器)

这是 MySQL 的核心部分,包含多个子模块:Enterprise Management Services & Utilities(企业管理服务和工具)Backup & Recovery(备份和恢复):用于数据备份和灾难恢复。

Security(安全):处理用户认证和权限管理。
Replication(复制):用于数据复制和集群管理。
Cluster(集群):支持数据库集群。
Partitioning(分区):数据分区管理。
Instance Manager(实例管理器):管理数据库实例。
INFORMATION_SCHEMA(信息架构):存储数据库元数据。
Administrator Workbench(管理员工作台):提供数据库管理界面。
Query Browser(查询浏览器):用于执行 SQL 查询。
Migration Toolkit(迁移工具包):用于数据库迁移。
Connection Pool(连接池)管理数据库连接,包括认证、线程重用、连接限制、检查内存和缓存。
SQL Interface(SQL 接口)处理 SQL 语句,包括 DDL(数据定义语言)、DML(数据操作语言)、存储过程、视图和触发器等。
Parser(解析器)解析和翻译 SQL 查询。
Optimizer(优化器)确定查询执行的最佳路径,基于统计信息。
Caches & Buffers(缓存和缓冲区)包括全局和引擎特定的缓存和缓冲区。

3.3、Pluggable Storage Engines(可插拔存储引擎)

支持多种存储引擎,包括:MyISAM:适用于读密集型应用。
InnoDB:支持事务处理和行级锁定。
Cluster:用于数据库集群。
Falcon:高性能存储引擎。
Archive:用于存储归档数据。
Federated:支持联邦数据库。
Merge:用于合并表。
Memory:内存存储引擎。
Community:社区开发的存储引擎。
Custom:自定义存储引擎。

3.4、File System(文件系统)

支持多种文件系统,包括 NTFS、NFS、SAN 和 NAS。

3.5、Files & Logs(文件和日志)

处理重做日志(Redo)、撤销日志(Undo)、数据文件、索引文件、二进制文件、错误日志、查询日志和慢查询日志。


4、SQL分类

1. 数据定义语言(DDL )

Data Definition Language

功能:用于定义和管理数据库对象,如数据库、表、视图、索引等结构。
常见语句create:用于创建数据库、表、视图等对象。例如:create table students (id int, name varchar(255));
alter:用于修改现有数据库对象的结构。例如:alter table students add column age int;
drop:用于删除数据库、表、视图等对象。例如:drop table students;

2. 数据操作语言(DML)

Data Manipulation Language

功能:用于对数据库中的数据进行操作,如插入、更新、删除数据。
常见语句insert:用于向表中插入新的数据行。例如:insert into students (id, name) values (1, 'John');
update:用于更新表中的数据。例如:update students set age = 20 where id = 1;
delete:用于从表中删除数据行。例如:delete from students where id = 1;

3. 数据查询语言(DQL)

Data Query Language

功能:用于从数据库中查询数据。
常见语句select:用于从一个或多个表中检索数据。例如:select * from students;

4. 数据控制语言(DCL)

Data Control Language

功能:用于控制数据库的访问权限和安全级别。
常见语句grant:用于授予用户对数据库对象的权限。例如:grant select on students to 'user1';
revoke:用于撤销用户对数据库对象的权限。例如:revoke select on students from 'user1';

5. 事务控制语言(TCL)

Transaction Control Language

功能:用于管理数据库事务,确保数据的一致性和完整性。
常见语句begin transaction:开始一个事务。
commit:提交一个事务,使事务中的更改永久生效。
rollback:回滚一个事务,撤销事务中的更改。

这些分类帮助用户更好地理解和组织 SQL 语句的使用,以满足不同的数据库操作需求。

5、MySQL存储引擎

5.1、什么是存储引擎

存储引擎是数据库管理系统中用于处理数据存储、检索和更新操作的底层软件组件。以下是关于存储引擎的详细介绍

5.2、存储引擎的功能

5.2.1、数据存储

存储引擎决定了数据在磁盘或内存中的存储方式。

例如,有的存储引擎将数据以文件形式存储在磁盘上,有的则将数据主要存放在内存中。

不同的存储方式会影响数据的存储效率和安全性。例如,内存存储引擎读写速度快,但数据在断电后可能丢失;磁盘存储引擎则相对更安全,但读写速度可能较慢。

5.2.2、数据检索

它实现了不同的数据检索算法和索引结构。

常见的索引结构有 B - 树索引、哈希索引等。
例如,B - 树索引适合范围查询,哈希索引则更适合等值查询。存储引擎根据自身特点选择合适的索引类型来优化数据检索操作,提高查询效率。

5.2.3、数据更新

负责处理数据的插入、修改和删除操作。在处理这些操作时,存储引擎需要考虑数据的一致性和完整性。
例如,在支持事务的存储引擎中,会通过日志和锁机制来确保数据在更新过程中的原子性、一致性、隔离性和持久性(ACID 特性)。

5.1、查看存储引擎:

show engines;

5.2、常见的存储引擎

1. MyISAM

特点:适用于读密集型应用。它的表存储结构简单,数据文件和索引文件是分开存储的。
不支持事务处理,但查询速度较快,特别是对于全表扫描操作。具有表级锁定机制,在并发写入操作较多时可能会出现性能瓶颈。

2. InnoDB

特点:支持事务处理(ACID 特性),能够确保数据的一致性和完整性。
采用行级锁定机制,在高并发环境下性能较好,适合 OLTP(在线事务处理)应用。支持外键约束,能够更好地维护表之间的关系。

3. Cluster

特点:主要用于数据库集群,实现数据的分布式存储和高可用性。通过集群技术,可以在多个节点上存储和处理数据,提高系统的可靠性和扩展性。

4. Falcon

特点:高性能存储引擎,设计目标是提供比 MyISAM 和 InnoDB 更好的性能。虽然它在某些方面有独特优势,但目前已不是 MySQL 的主流存储引擎。

5. Archive

特点:主要用于存储归档数据,适合存储大量历史数据。它只支持插入和查询操作,不支持更新和删除操作,数据压缩比高。

6. Federated

特点:支持联邦数据库,能够访问远程数据库中的数据,如同本地数据库一样。适合分布式数据环境,但在网络不稳定时可能会出现性能问题。

7. Merge

特点:用于合并表,它可以将多个结构相同的 MyISAM 表作为一个表来处理。适合于数据仓库等需要对大量数据进行分区存储的场景。

8. Memory

**特点:数据存储在内存中,因此读写速度非常快,适合临时表和缓存数据。但是,由于数据存储在内存中,一旦 MySQL 服务器重启,数据将丢失。

9.NDB**

特点:这是一种为高可用性和高性能集群环境设计的存储引擎。它采用了分布式、内存中的存储架构,数据被存储在多个节点的内存中,通过网络进行通信和数据同步。这种架构可以提供极高的可用性,因为即使部分节点出现故障,系统仍然可以通过其他节点继续运行。

5.3、存储引擎对比

**存储引擎对比表格: **
特性MyISAMBDBMemoryInnoDBArchiveNDB存储限制无限制无限制有64TB 限制无限制有事务(提交、回滚等)√√√锁粒度表级锁页级锁表级锁行级锁行级锁行级锁MVCC / 快照读√√地理空间支持√√B - 树索引√√√√√哈希索引√全文搜索索引√√√√聚集索引√√数据缓存√√√√√√索引缓存√√√√√√数据压缩√√√√√通过函数加密数据√√√√存储成本(占用空间)低低不适用(内存存储)较高高(压缩存储)低内存成本低低中等(依赖内存大小)高(缓冲池)低高(依赖内存)批量插入速度高高高高低非常高集群数据库支持√复制支持√√√√外键支持√√备份 / 即时恢复√√√√查询缓存支持√√√√数据字典更新统计信息√√√√√√

6、MySQL知识总结

本文涵盖 MySQL 多方面要点。阐述其服务器、数据库和表的架构关联及登录方式,剖析包含连接器、服务器、存储引擎等在内的架构体系及各部分功能,说明 SQL 分类中 DDL、DML 等各类语句用途,重点讲解存储引擎概念、功能与常见类型特点,为理解 MySQL 原理、开展数据库操作与应用开发提供依据,助使用者依需求用好 MySQL 特性以保障运行

如上关于 MySQL的讲解只是我的一些拙见,如有不足之处,还望各位大佬不吝在评论区予以斧正,感激不尽!

创作不易,还请多多互三支持!你们的支持是我最大的动力!

标签: 数据库 mysql linux

本文转载自: https://blog.csdn.net/bite_zwy/article/details/144316370
版权归原作者 _Zwy@ 所有, 如有侵权,请联系我们删除。

“【MySQL 探索者日志 】第二弹 —— 数据库基础”的评论:

还没有评论