本文介绍: 相信很多同学在接触编程之初,就接触过数据库,而对于其中关系数据库中的翘楚——mysql,自然也是天天打交道的。恰逢今天博主创作纪念日,那么不如我们开启一个系列篇章,来从各个维度讲解mysql,力求又有广度又有深度今天就让我们开启第一课,说说mysql发展历程及特点

在这里插入图片描述

相信很多同学在接触编程之初,就接触过数据库,而对于其中关系数据库中的翘楚——mysql,自然也是天天打交道的。恰逢今天博主创作纪念日,那么不如我们就开启一个系列篇章,来从各个维度讲解mysql,力求又有广度又有深度,今天就让我们开启第一课,说说mysql发展历程及特点

📕作者简介:战斧,从事金融IT行业,有着多年一线开发架构经验;爱好广泛,乐于分享,致力于创作更多高质量内容
📗本文收录mysql 专栏,有需要者,可直接订阅专栏实时获取更新
📘高质量专栏 云原生RabbitMQSpring全家桶 等仍在更新欢迎指导
📙Zookeeper Redis dubbo docker netty等诸多框架,以及架构分布式专题即将上线,敬请期待


一、枝繁叶茂的MySQL家族

1. 发展历程

MySQL数据库的起源可以追溯到1995年,由Michael WideniusDavid Axmark共同开发,原属于瑞典的MySQL AB公司,该公司于2008年被升阳微系统(Sun )收购。2009年,甲骨文公司(Oracle)收购升阳微系统公司,至此,MySQL成为Oracle旗下产品。Oracle 公司区分了企业社区

企业是MySQL的商业版本,由Oracle公司提供支持服务,包括高级功能技术支持安全性保证等。
社区是MySQL的开源版本,由MySQL社区开发和维护,是免费的,但不包括商业版所拥有的高级功能技术支持
企业社区区别主要在于其支持和服务的层面,大多数功能两个版本中都是相同的。

而经过多年发展,MySQL的版本也在不停迭代,目前最新版本为Version 8.0。我们可以记录一下其中一些比较重要的版本,以及该版本的特性

2. 分支版本

我们上面所介绍的都是官方版本,现在是由Oracle公司维护。但其实MySQL 还有一些其他版本,最常见的有MariaDBPercona

MariaDB
在这里插入图片描述

MariaDB是MySQL创始人之一Michael Widenius创建的MySQL分支,因为他担心MySQL被Oracle收购后,将会对MySQL的开源性质和社区发展产生不利影响,于是在2010年创建了MariaDB分支,MariaDB的目的是提供一个自由、开源、高性能可扩展性好、与MySQL兼容数据库系统,同时包括新的、改进特性性能优化

Percona
在这里插入图片描述

Percona是由Percona公司创立的一个MySQL分支,旨在为企业客户提供高性能高可用性、高可扩展性的MySQL数据库解决方案。Percona的主要特点是提供了一些MySQL不支持的高级功能例如高性能查询日志、InnoDB存储引擎的改进等等。我们来看下这些版本之间不同

特点/功能 MySQL Percona MariaDB
兼容性 兼容各大流行操作系统和开发环境 兼容性良好,可与MySQL插件兼容 兼容性良好,可与MySQL插件兼容,同时支持更多的存储引擎
性能 相对较快 性能优化,可比MySQL快 性能不如Percona,但可靠性更高
安全性 安全性高,可通过访问控制和SSL保护数据传输 安全性较高,可通过访问控制和SSL保护数据传输 安全性高,支持多种访问控制和SSL保护数据传输
可扩展性 支持垂直和水平扩展 支持垂直和水平扩展,提供多种扩展方案 支持垂直和水平扩展,提供多种扩展方案
存储引擎 支持多种存储引擎 支持多种存储引擎,包括InnoDB和XtraDB 支持更多的存储引擎,包括MariaDB、XtraDB、TokuDB
复制 支持单向复制和双向复制 支持异步和半同步复制 支持同步异步复制
高可用性 支持主从复制,可通过故障转移实现可用性 支持异步和半同步复制,可通过故障转移实现可用性 支持同步和异步复制,可通过Galera集群实现可用性
开发者支持 社区活跃,有大量开发者贡献代码 社区活跃,有多个主要贡献者 社区活跃,有多个主要贡献者
支持和维护 由Oracle提供支持和维护 由Percona提供支持和维护;可在Percona官网上下载免费社区版 由MariaDB基金会提供支持和维护;可在MariaDB官网上下载免费社区版

在这里插入图片描述

当然,面对这些版本,我们该如何选择呢?如果对性能要求较高,可以选择Percona版本;如果更看重稳定性和兼容性,可以选择MySQL官方版本或MariaDB。如果是使用官方版本,建议使用5.7及以上的版本。

当然需要注意的是,虽然我们说上述分支版本都可以算Mysql一个分支,但并不意味着完全兼容,尤其是越往后发展,各自差异难免越多,当我们想要做版本迁移时候,一定要审慎

二、特点分析

1. 常用数据库

MySQL数据库除了我们所知道开源免费外,其实日常使用中,它还有如下特点:
(1)高性能:MySQL在处理大量数据上拥有较高的性能MySQL支持查询缓存分区表多线程索引优化技术,有助于提高性能
(2)可移植性好:MySQL可以在各种操作系统运行如Windows、Linux、Unix等。
(3)扩展:MySQL支持集群分布式部署,可以通过水平和垂直扩展来提高性能可靠性

但是,我们也知道,除了MySQL,目前还有很多其他的关系数据库比如OracleSQL ServerPostgreSQL,我这里借用一张今年的使用分布排名(排名仅供参考):

在这里插入图片描述
可以看到,榜单前四名正是我们提到的这几位,可以说这几个数据库已经占据了大半的市场

2. 选型角度场景

对于一般的使用者,尤其是在项目初期,无法确定后续需求的情况下,去做数据库选型其实是非常困难的。但我们需要遵循几个大的方向。也就是预估负载量与性能评估扩展难易度可靠性可用性数据库安全性等,我们可以对数据库进行一个简单点评

数据库 优势 劣势
MySQL – 开源免费,易于安装和学习
– 经过市场验证,性能稳定
– 支持多种编程语言
– 缺乏一些高级功能(如分布式事务崩溃恢复
功能和一些企业级产品比较
Oracle 企业级数据库产品完整功能集合
可靠性高,数据安全性好
– 通过引入云技术,能够伸缩性和容错性
– 学习曲线陡峭
– 价格昂贵
SQL Server – 微软开发的数据库产品,与Windows系统无缝集成
用户友好型高,易于使用
– 良好的可伸缩性和可扩展性
– 各种功能丰富
– 价格昂贵
PostgreSQL – 开源免费,易于安装和学习
– 支持多种操作系统
– 对多种数据类型的支持比较完善
具有高度可扩展性
– 较为复杂,不够直观
– 性能和速度相对较慢

因为本期的主题MySQL, 那在什么场景下,选择Mysql会比较合适呢?其实基于Mysql设计定位其适合读写比较平衡数据量不太大,需要快速部署和开发、对成本敏感场景,也正是因为如此,Mysql在中小型的Web应用中被广泛应用

三、三大组成部分

MySQL数据库总体分为三个部分Server层存储引擎插件

Server层负责处理客户端连接、查询解析和优化、数据访问控制事务处理日志replication和其他管理操作
存储引擎负责数据的存储和检索操作。MySQL支持多个存储引擎,如InnoDB、MyISAM、MEMORY等。
物理磁盘:真正存储数据的位置保存着数据库数据以及各类日志

如果我们有一个java程序,我们从mysql数据库查询数据时,其步骤主要可概括为以下几步

  1. Java 程序通过数据库连接层与 MySQL 数据库建立连接
  2. MySQL 数据库服务层接收到连接请求后,验证连接权限解析,并将请求转发给相应的存储引擎层;
  3. 存储引擎层接收到查询请求后,进行 SQL 语句执行
  4. 如果查询涉及到表的查询,存储引擎层将会向物理磁盘发送读取磁盘数据的请求
  5. 物理磁盘层通过磁盘控制器硬件设备读取数据,并将数据传递给存储引擎层;
  6. 存储引擎层将结果返回给 MySQL 服务层;
  7. MySQL 服务层将结果返回给 Java 程序

当然,其具体的动作会更加复杂,我们借用一张图来供大家参考

在这里插入图片描述

四、总结

经过前面一些基础的介绍,我们不难看出MySQL是一款功能全面、性能卓越、稳定可靠、易于管理数据库系统应该说每个数据库都有自己的优势与劣势,而MySQL凭借的开源免费和平衡的性能,得到了广泛的应用和认可。今天作为第一课,只是为了帮助大家有一点全局观念,更深的使用技术,及原理,我们将马上对其进行深入剖析

原文地址:https://blog.csdn.net/u011709538/article/details/134562551

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_49746.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注