当前位置:   article > 正文

【MySQL进阶之路】MySQL基础——从零认识MySQL

【MySQL进阶之路】MySQL基础——从零认识MySQL

目录

主流数据库

什么是MySQL

MySQL服务

从文件系统角度理解数据库

MySQL架构

SQL语句分类

存储引擎


个人主页:东洛的克莱斯韦克-CSDN博客

主流数据库

数据库开发商特点适用场景
SQL Server微软.NET程序员的最爱,适合中大型项目企业级应用,中大型数据库解决方案
Oracle甲骨文适合大型项目,复杂的业务逻辑,但并发性一般企业级应用,复杂业务逻辑处理
MySQL甲骨文(通过收购Sun Microsystems)世界上最受欢迎的数据库,并发性好,不适合复杂业务电商,SNS,论坛,简单SQL处理
PostgreSQL加州大学伯克利分校计算机系免费使用、修改和分发,适用于私用、商用和学术研究多种应用场景,包括企业级应用
SQLite公开源代码社区轻型数据库,遵守ACID,嵌入式设计,资源占用低嵌入式设备,移动应用,小型项目
H2Java社区用Java开发的嵌入式数据库,可直接嵌入到应用项目中测试环境,小型应用,嵌入式数据库需求

什么是MySQL

MySQL是一种网络服务,有客户端和服务端。可以用 which 命令查看路径。

客户端一般在/usr/bin/mysql 路径下,服务端一般在/usr/sbin/mysqld (以d结尾的进程一般都是守护进程)路径下。

而数据存放的路径可以在/etc/my.cnf配置文件中配置,默认是/var/lib/mysql

MySQL是在文件系统的基础上搭建的一套完整的网络服务,用于高效的存储,管理数据。那存储数据用文件就可以了,为什么还要弄个数据库?

单纯用文件管理数据有如下缺点

文件的安全性并不是很可靠
文件不利于数据查询和管理
文件不利于存储海量数据
文件在程序中控制不方便

可以说,文件系统只是提供了最基础的数据保存,数据的读写功能。

MySQL服务

所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多 个数据库,一般开发人员会针对每一个应用创建一个数据库。 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。 数据库服务器、数据库和表的关系如下:

上图中的Client是数据库的客户端。MySQL就是数据库的服务端,一般会以守护进程的方式一直在服务器上监听外来请求。客户端用SQL语句向服务端发起请求,而服务端解析SQL语句,然后对数据进行管理相关的工作。

我们平常所说的数据库既不是指的客户端,也不是指的服务端,而是上图中的DB。而DB中的表结构存的就是数据。

从文件系统角度理解数据库

所谓的所谓的数据库(DB)和表结构到底是什么呢?

前文已经提到数据存放的路径在/var/lib/mysql。那么我们创建一个数据库,再创建一张表,/var/lib/mysql路径下会有什么变化呢?

创建数据库的SQL语句

create database helloworld;

使用数据库的SQL语句

use helloworld;

创建数据库表的SQL语句

  1. create table student(
  2. id int,
  3. name varchar(32),
  4. gender varchar(2)
  5. );

我们用上述语句创建一个helloworld的数据库,再向helloworld数据库中建一张student表

先创建数据库,看看/var/lib/mysql目录下的变化

创建数据库后多了一个helloworld目录,进入到helloworld目录,再创建student表看看变化

创建student表之后,在helloworld目录下多了一些student表相关的文件。

从文件系统角度讲,创建数据库就是在系统中创建目录,创建表结构就是在该目录下创建相关文的件。

MySQL架构

文件系统对MySQL来说只是最底层的东西,或者说是基石。现在来谈一谈MySQL的架构。

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

MySQL架构主要分为几个关键部分,包括客户端连接器、SQL接口、服务(包括连接池、认证和安全性、备份与恢复等)、优化器、缓存以及存储引擎。

客户端连接器
这是MySQL与外部应用程序之间的接口。支持多种编程语言和数据库接口标准,如JDBC、ODBC、NET、PHP、Python、Perl和C API等。这使得MySQL能够灵活地与各种编程语言和环境集成。
服务
连接池:管理到MySQL服务器的连接,以优化资源使用和响应时间。
连接处理:处理来自客户端的连接请求。
身份验证和安全:对客户端进行身份验证,并根据授权确保数据的安全性。
备份与恢复:提供数据备份和恢复功能,以保护数据免受丢失或损坏的风险。

SQL接口
这是MySQL架构中的核心部分,它解析来自客户端的SQL语句,并执行相应的操作。SQL接口还包括优化器、解析器、重写器等多个组件,以优化查询执行和性能。
优化器:根据查询条件和统计信息,生成高效的查询执行计划。
解析器:解析SQL语句,生成解析树,用于后续处理。
重写器:对SQL语句进行重写,以提高查询效率或符合特定优化目标。

存储引擎
MySQL采用插件式存储引擎架构,支持多种存储引擎,如InnoDB、MyISAM、Memory、Archive等。每种存储引擎都有其特点和适用场景,例如InnoDB支持事务处理、行级锁定和外键约束,是MySQL的默认存储引擎。
索引:用于加快数据检索速度,MySQL支持多种索引类型,如B-Tree索引、哈希索引等。

文件系统和存储
MySQL将数据存储在文件系统中,可以是传统的硬盘、SSD、网络存储(如SAN、NAS)等。
提供了日志文件(如错误日志、慢查询日志、二进制日志等)来记录操作和数据变化,用于审计、恢复和数据复制等功能。

SQL语句分类

类别缩写描述代表指令
数据定义语言DDL用来维护存储数据的结构create, drop, alter
数据操纵语言DML用来对数据进行操作insert, delete, update
数据查询语言DQL专门用于数据查询(属于DML的子集)select
数据控制语言DCL主要负责权限管理和事务grant, revoke, commit

存储引擎

可用如下命令查看存储引擎

show engines;
存储引擎特点适用场景
MyISAM- 不支持事务<br>- 表级锁定<br>- 支持全文索引<br>- 可能有存储限制(取决于操作系统和文件系统)读密集型应用,如Web内容展示、简单查询操作
BDB (Berkeley DB)- 支持事务<br>- 可能支持表级或页级锁定(取决于版本和配置)<br>- 具有高级特性如热备份、恢复和复制较少使用,部分MySQL版本可能不再支持或推荐使用BDB
Memory- 数据完全存储在内存中<br>- 不支持事务<br>- 表级锁定<br>- 大小受可用内存限制临时数据、缓存或需要极快访问速度的小数据集
InnoDB- 默认存储引擎<br>- 支持ACID事务处理<br>- 行级锁定<br>- 支持MVCC<br>- 支持外键约束<br>- 强大的崩溃恢复功能需要高并发、事务处理、外键约束和复杂查询的应用
Archive- 压缩存储以节省空间<br>- 不支持索引(除主键外)<br>- 主要用于存档日志记录、历史数据存档等
NDB (MySQL Cluster NDB)- 分布式存储<br>- 自动分片<br>- 实时数据同步<br>- 高可用性、数据冗余和负载均衡需要高可用性和可扩展性的分布式数据库应用

【linux】信号的理论概述和实操-CSDN博客

【linux】详解——库-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/1016818
推荐阅读
相关标签
  

闽ICP备14008679号