惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
爱范儿
爱范儿
The Cloudflare Blog
Y
Y Combinator Blog
B
Blog RSS Feed
Stack Overflow Blog
Stack Overflow Blog
博客园 - 叶小钗
G
Google Developers Blog
J
Java Code Geeks
P
Proofpoint News Feed
美团技术团队
Engineering at Meta
Engineering at Meta
腾讯CDC
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
WordPress大学
WordPress大学
博客园 - 聂微东
雷峰网
雷峰网
有赞技术团队
有赞技术团队
L
LangChain Blog
N
Netflix TechBlog - Medium
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 【当耐特】

Liu Zijian's Blog | 一个技术博客

使用Certbot自动续签HTTPS证书 使用Filebeat采集Nginx日志到ES Python的协程 Python中的异常 Python中的类和对象 Python的函数 Python的数据结构,推导式、迭代器和生成器 Spring AI集成多模态模型 LangChain4j多模态 LangChain Tools工具使用 Python中的模块和包 Python全局环境和虚拟环境(venv) LangChain Prompt提示词工程 LangChain4j Tools工具使用 基于Dify搭建AI智能体应用 LangChain4j RAG检索增强生成 Spring AI实现MCP Server Spring AI集成MCP Client LangChain4j Prompt提示词工程 Spring AI使用知识库增强对话功能 Spring AI实现一个智能客服 Spring AI实现一个简单的对话机器人 实现MinIO数据的每日备份 自己实现一个DNS服务 简单理解AI智能体 大模型和大模型应用 LangChain开篇 LangChain4j开篇 一个解析Excel2007的POI工具类 DataPermissionInterceptor源码解读
MySQL开篇
Liu Zijian · 2021-12-29 · via Liu Zijian's Blog | 一个技术博客

栏目持续更新中

一、MySQL概述

MySQL数据库由瑞典MySQL AB公司开发。公司名中的”AB”是瑞典语”aktie bolag”股份公司的首字母缩写。该公司于2008年1月16日被SUN公司收购,2009年,SUN公司又被Oracle收购。因此,MySQL数据库现在属于Oracle公司。MySQL中的”My”是其作者Michael Widenius根据其大女儿My的名字来命名的。

本文系MySQL系列的开篇,主要基于MySQL8并部分结合5.7,主要介绍SQL语句和语法、MySQL的数据库对象、架构和性能调优以及一些高级特性的运用和原理等。

二、MySQL的优势

  • 可移植性

    MySQL数据库几乎支持所有的操作系统,如Linux、Solaris、FreeBSD、Mac和Windows。

  • 免费

    MySQL的社区版完全免费,一般中小型网站的开发都选择MySQL作为网站数据库。

  • 开源

    2000年,MySQL公布了自己的源代码,并采用GPL许可协议正式进入开源的世界。开源意味着可以让更多人审阅和贡献源代码,可以吸纳更多优秀人才的代码成果。

  • 关系型数据库

    MySQL可以利用标准SQL语法进行查询和操作。

  • 速度快、体积小、容易使用

    与其他大型数据库的设置和管理相比,其复杂程度较低,易于学习。MySQL的早期版本(主要使用的是MYISAM引擎)在高并发下显得有些力不从心,随着版本的升级优化(主要使用的是InnoDB引擎),在实践中也证明了高压力下的可用性。从2009年开始,阿里的”去IOE”备受关注,淘宝DBA团队再次从Oracle转向MySQL,其他使用MySQL数据库的公司还有Facebook、Twitter、YouTube、百度、腾讯、去哪儿等,自此,MySQL在市场上占据了很大的份额。

  • 安全性和连接性

    十分灵活和安全的权限和密码系统,允许基于主机的验证。当连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码安全。因为MySQL是网络化的,所以可以在互联网上的任何地方访问,提高数据共享的效率。

  • 丰富的接口

    提供了用于C、C++、Java、PHP、Python、Ruby、Eiffel、Perl等语言的API。

  • 灵活

    MySQL并不完美,但是却足够灵活,能够适应高要求的环境。同时,MySQL既可以嵌入应用程序中,也可以支持数据仓库、内容索引和部署软件、高可用的冗余系统、在线事务处理系统等各种应用类型。

  • 存储引擎架构

    MySQL最重要、最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理及其他系统任务和数据的存储/提取相分离。这种处理和存储分离的设计可以在使用时根据性能、特性,以及其他需求来选择数据存储的方式。MySQL中同一个数据库,不同的表格可以选择不同的存储引擎。其中使用最多的是InnoDB和MyISAM,MySQL5.5之后InnoDB是默认的存储引擎。

三、MySQL的版本

针对不同用户,MySQL提供了3个不同的版本。

  • MySQL Enterprise Server (企业版)

    能够以更高的性价比为企业提供数据仓库应用,该版本需要付费使用,官方提供电话技术支持。

  • MySQL Cluster (集群版)

    MySQL集群版是MySQL适合于分布式计算环境的高可用、高冗余版本。它采用了NDB Cluster存储引擎,允许在1个集群中运行多个MySQL服务器。它不能单独使用,需要在社区版或企业版基础上使用,集群版是免费的,但是高级集群版MySQL Cluster CGE需要付费。

  • MySQL Community Server (社区版)

    在开源GPL许可证之下可以自由地使用。该版本完全免费,但是官方不提供技术支持。本书是基于社区版讲解和演示的。在MySQL社区版开发过程中,同时存在多个发布系列,每个发布系列处在不同的成熟阶段。

MySQL 5.7(RC)是当前稳定的发布系列。RC版(Release Candidate 候选版本)只针对严重漏洞修复和安全修复重新发布,没有增加会影响该系列的重要功能。从MySQL 5.0、5.1、5.5、5.6直到5.7都基于5这个大版本,升级的小版本。5.0版本中加入了存储过程、服务器端游标、触发器、视图、分布式事务、查询优化器的显著改进,以及其他的一些特性。这也为MySQL 5.0之后的版本迈向高性能数据库的发展奠定了基础。

MySQL 8.0.26(GA)是最新开发的稳定发布系列。GA(General Availability 正式发布的版本)是包含新功能的正式发布版本。这个版本是MySQL数据库又一个新时代的开始。

四、MySQL基础篇

使用MySQL前需要进行安装,并进行简单配置(修改字符集,打开远程连接等),为了更加贴合实际应用场景,本章关于MySQL的一切,无特殊说明的,都基于运行在Linux系统环境上的MySQL。

Linux系统安装MySQL,最简单的方式就是采用rpm包安装,这里我采用常用的CentOS7环境来安装MySQL用于后续学习测试,具体步骤见:

除了rpm包安装,还可以通过自行编译源码的方式安装MySQL,因为CentOS7逐步不再更新,因此这里我尝试基于另一个RHEL系的Linux发行版RockyLinux9的环境来编译安装,具体步骤见:

MySQL的基础部分,主要包括以下内容:

SQL语言,数据类型、约束、DDL/DML语句以及SELECT语句等

序号 文章名 概述
1 MySQL数据定义语言 DDL语句以及数据类型
2 MySQL插入修改和删除 数据的添加和更新,DML语句
3 MySQL查询 数据的查询,SELECT语句,JOIN查询
4 MySQL事务 事务的特性,隔离级别,TCL语句

一些基础的数据库对象(视图、存储过程、函数、触发器、变量等)的使用

序号 文章名 概述
1 MySQL函数 常见函数使用和自定义函数
2 MySQL存储过程 存储过程的定义和调用
3 MySQL视图 视图创建、修改和使用
4 MySQL变量 用户变量和系统变量,变量的查询和设置

五、MySQL高级篇

本博客MySQL高级部分的内容,侧重点是后端开发中怎样写出更高性能的SQL,基本不会深入到DBA领域。

内容包括MySQL的字符集,语法模式,用户和权限DCL语句,MySQL架构和执行流程,索引和索引优化,锁机制,事务和日志以及主从复制等。

序号 文章名 概述
1 MySQL字符集及底层原理 基于MySQL5.7解读MySQL字符集和排序实现原理
2 MySQL5.7x的主从复制 负载均衡、备份和高可用性

结束语

更多MySQL相关的内容,可以查阅官方文档:

参考

  1. 《剑指MySQL 8.0:入门、精练与实战》,作者:尚硅谷教育,电子工业出版社,2023年2月
  2. 《高性能MySQL(第三版)》,作者:Baron Schwartz、Peter Zaitsev、Vadim Tkachenko,电子工业出版社,2013年5月
  3. MySQL数据库入门到大牛,作者:尚硅谷,哔哩哔哩,2021-11-17