什么是MySQL
MySQL是一个开源的关系型数据库管理系统,由瑞典MySQL AB公司开发(目前属于Oracle公司),被广泛地应用在大中小型网站中
MySQL是一个小型的开源的关系型数据库管理系统,与其他大型数据库管理系统例如:Oracle、DB2、SQL Server等相比,MySQL规模小、功能有限,但是它体积小、速度快、成本低,并且提供的功能对稍微复杂的应用已经够用,这使得MySQL成为世界上最受欢迎的开放源代码数据库
MySQL版本
针对不同的用户,MySQL分为两个不同的版本:
- MySQL社区版:该版本完全免费,但是官方不提供技术支持
- MySQL企业版:为企业提供数据库应用,支持ACID事务处理,提供完整的提交、回滚、崩溃恢复和行政锁定功能,需要付费使用,官方提供技术支持
另外由于MySQL是开源的,企业也可以根据项目需要定制自己的MySQL
MySQL安装、配置与连接
MySQL不同平台安装参考:MySQL 教程
另一种安装MySQL的方式是安装小皮面板,在小皮面板内部安装、连接、管理MySQL
可以在软件管理部分按照、卸载不同版本的MySQL
可以在数据库部分设置数据库用户名和密码
可在首页相应数据库配置数据库信息,比如数据库端口号
配置MySQL环境变量:
- 找到MySQL安装路径:从小皮面板的下载文件夹中,确认MySQL的具体安装目录,比如:C:\phpstudy_pro\Extensions\MySQL8.0.26
- 打开环境变量设置:在Windows系统中,通过控制面板 - 系统 - 高级系统设置,点击环境变量按钮,或者直接在此电脑上右键,选择属性,然后在弹出的窗口中点击 高级系统设置,再点击环境变量
- 配置 Path 变量:在系统变量中找到Path变量并双击打开,点击新建,将找到的MySQL 安装路径下的bin目录路径添加进去,例如C:\phpstudy_pro\Extensions\MySQL8.0.26\bin,点击确定保存设置,关闭所有环境变量设置窗口
- 验证配置:打开命令提示符(CMD),输入mysql -V(注意 V 大写),如果能显示MySQL的版本信息,说明环境变量配置成功
选择MySQL版本后点击启动按钮,即可启动MySQL服务
如果配置了MySQL环境变量就可以在命令行窗口中输入以下指令访问MySQL
mysql -u用户名 -p密码
在MySQL输入符后输入exit或quit即可退出MySQL
MySQL工作原理
- 客户端与服务端连接:操作MySQL数据库时,首先需要通过客户端工具(如命令行客户端、Navicat、SQLyog等图形化界面工具 ,或编程接口如JDBC、ODBC等)连接到MySQL服务端,连接过程一般包含以下步骤:
- 建立网络连接:客户端与MySQL服务端(进程名为mysqld)基于TCP/IP协议建立网络连接
- 身份验证:服务端对客户端发送过来的用户名和密码进行验证,只有验证通过,客户端才能获得访问数据库的权限,此外,服务端还会根据用户权限表,判断该用户对特定数据库、表等对象拥有哪些操作权限(如查询、插入、修改、删除等)
- 查询处理:客户端成功连接并发送SQL查询语句后,MySQL服务端会按以下流程处理:
- 查询解析:服务端的查询解析器将SQL语句解析成内部的解析树结构,检查SQL语句的语法是否正确,比如关键字拼写是否正确、括号是否匹配等,如果语法有误,会返回错误信息给客户端
- 查询优化:查询优化器会根据解析树生成多种可能的执行计划, 并基于统计信息(如索引的使用情况、表的行数等)评估每个执行计划的成本,选择成本最低(效率最高)的执行计划,例如,对于SELECT * FROM users WHERE age > 18;这样的查询,优化器会判断是否使用age字段上的索引能更快获取数据
- 查询执行:执行器根据优化器生成的执行计划,调用存储引擎提供的接口来访问和操作数据,比如,执行器调用InnoDB存储引擎的接口去读取符合条件的数据行
- 存储引擎工作机制:MySQL支持插件式的存储引擎架构,不同的存储引擎决定了数据的存储方式、索引结构以及事务处理等特性,常见存储引擎有InnoDB、MyISAM等 :
- InnoDB:是MySQL默认的存储引擎,支持事务,遵循ACID特性。它使用聚簇索引(基于主键构建),数据和索引紧密结合存储,适合处理高并发的读写操作,尤其是涉及事务的场景,如电商的订单处理、银行的转账业务等,此外,InnoDB有缓冲池机制,会把经常访问的数据和索引缓存到内存中,以减少磁盘I/O操作 ,提升查询性能
- MyISAM:不支持事务,适合以读操作和插入操作为主的场景,比如日志记录。它的表存储结构分为数据文件和索引文件,索引采用非聚簇索引,MyISAM表支持表级锁,在写入操作时会锁定整张表,这在高并发写入场景下性能较差
- 数据存储与持久化:数据最终会存储在磁盘上,MySQL通过操作系统文件系统管理数据文件
- 事务处理:如果SQL语句涉及事务(如多个插入、更新、删除操作需要作为一个整体成功或失败),MySQL会进行如下处理:
- 事务开启:客户端发送START TRANSACTION或BEGIN语句,开启事务
- 操作执行:在事务中执行的SQL语句,会记录在 undo log(回滚日志)中,用于在事务回滚时撤销已经执行的操作,同时,对数据的修改会先在内存中进行, 并记录 redo log
- 事务提交或回滚:如果客户端发送COMMIT语句,MySQL会将内存中的修改持久化到磁盘数据文件,并清理undo log中对应的事务记录,如果发送ROLLBACK语句,则会根据undo log撤销事务中已经执行的所有操作
MySQL工作原理了解即可
如有错误请指出,不喜勿喷