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的讲解只是我的一些拙见,如有不足之处,还望各位大佬不吝在评论区予以斧正,感激不尽!
创作不易,还请多多互三支持!你们的支持是我最大的动力!
版权归原作者 _Zwy@ 所有, 如有侵权,请联系我们删除。