文章目录

  • 一、MySQL的由来
  • 二、MySQL的架构
    • 2.1 客户端
    • 2.2 服务器
  • 三、 MySQL的主要组成部分
    • 3.1 连接管理器
    • 3.2 查询缓存
    • 3.3 解析器
    • 3.4 查询优化器
    • 3.5 执行器
    • 3.6 存储引擎
  • 四、MySQL的特点
  • 五、MySQL的应用场景
  • 六、总结

一、MySQL的由来

MySQL最初是由瑞典公司MySQL AB的Michael Widenius和David Axmark开发的一款开源关系型数据库管理系统。MySQL AB的初衷是创造一个简单、快速、可靠的关系型数据库系统,以解决当时Web应用程序的需要。他们想要创造一个更简单、更强大的数据库系统,以取代当时主流的商业数据库系统。因此,MySQL在1995年诞生了。

MySQL最初的版本只是一个基础的SQL引擎,但随着时间的推移,MySQL不断发展,增加了更多的功能和特性。在2008年,MySQL被Sun Microsystems公司收购,紧接着又被Oracle公司收购。虽然MySQL的所有权更改了几次,但它仍然保持着开源的特性。

MySQL的小海豚标志名叫:sakila(塞拉),它是由MySQL AB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选 出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供的。根据Ambrose所说,Sakila来自一种叫SiSwati 的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。

二、MySQL的架构

MySQL是一个典型的客户端-服务器系统。它包括以下组件:

2.1 客户端

MySQL客户端可以是任何可以与服务器进行通信的程序,如MySQL工具、应用程序等。客户端请求连接到服务器,然后向服务器发送SQL查询。当查询完成后,结果将返回给客户端。

2.2 服务器

MySQL的服务器是整个系统的核心部分。它包括连接管理器、查询缓存、解析器、查询优化器、执行器等组件。其中,查询优化器可能是最重要的组件,因为它负责优化SQL查询语句的执行计划,并确保它以最快的方式执行。服务器也包括多个存储引擎,如InnoDB、MyISAM等。

三、 MySQL的主要组成部分

3.1 连接管理器

它管理和监视客户端与服务器之间的连接。它还负责确保每个客户端都有机会向数据库发送查询,防止任何一个客户端占用太多的系统资源。

3.2 查询缓存

查询缓存存储已经执行过的查询语句和它们的结果集。如果一个查询已经被缓存,当它被重新请求时,它的结果将会快速返回而不必再次查询。如果表中的数据更新,那么查询缓存中的结果也被清除。

3.3 解析器

它负责将用户发出的SQL语句转换成标准的内部数据格式。例如,如果用户输入SELECT语句,则解析器将会将该语句转换为一个Query对象。

3.4 查询优化器

查询优化器负责优化SQL查询语句的执行计划。它的作用是找到执行查询的最优算法和最优索引,以确保在最短的时间内返回结果。优化器使用了各种技术来完成这个任务,如Cost-based optimization等。

3.5 执行器

它执行SQL查询语句,访问和修改数据。执行器从查询优化器获得了一个执行计划,然后执行查询并返回结果。

3.6 存储引擎

存储引擎是指实际存储和访问数据的组件。MySQL提供了多个存储引擎,包括InnoDB、MyISAM、Memory等。其中最常用的是InnoDB,因为它提供了事务支持和行级锁等功能。

四、MySQL的特点

  • 开源:作为一款开源软件,MySQL具有开放、免费等特点。

  • 跨平台:MySQL可以在各种操作系统上运行,如Windows、Linux、Mac OS等。

  • 高性能: MySQL优化了许多查询性能方面的问题,可以处理大量数据,并且有良好的读写性能和并发性。此外,MySQL也提供了丰富的索引和分区功能。

  • 可扩展性:MySQL支持集群和分布式部署,可以随着业务的增长而扩展性。

  • 安全性:MySQL拥有完善的访问控制和安全机制,包括用户权限和SSL连接等。

  • 持久性:MySQL使用多种技术来确保数据的持久性和一致性,包括事务、ACID属性等。

五、MySQL的应用场景

MySQL适用于多种不同的应用场景,很多基于Web的应用程序都使用MySQL作为后台数据库系统。下面是一些常见的应用场景:

  • 内容管理系统:WordPress、Joomla!、Drupal等开源CMS都是使用MySQL作为后台数据库管理系统。

  • 电子商务应用:Tmall、淘宝、京东等大型电子商务平台都使用MySQL作为后台数据库系统。

  • 游戏开发:很多游戏服务器也使用MySQL作为后台数据库系统。例如,玩家信息是存储在一个MySQL数据库中的,包括角色信息、物品信息、地图信息等。

  • 金融服务:MySQL还被一些金融服务公司用作存储交易历史、分析客户数据、存储安全数据等的后台数据库。

  • 科学研究:一些科学研究项目使用MySQL来存储实验数据、监视传感器、托管源代码等。

  • 大数据应用:MySQL可以作为大数据应用的后端数据存储和处理引擎之一,提供高效的单机和集群存储。

六、总结

MySQL数据库是一款功能强大的关系型数据库管理系统,具备高性能、开源自由等优点,目前已经成为IT领域中的重要组成部分。MySQL不仅被广泛应用于电子商务、金融、游戏行业、科学研究等领域,同时也被越来越多的开发者、管理员和普通用户所熟知和使用。

一文带你了解MySQL的前世今生,架构,组成部分,特点,适用场景相关推荐

  1. 游戏引擎架构第二版中文pdf_阿里架构有多牛,一文带你看遍阿里技术架构!

    阿里的架构能力自不用多言.本期1C9U就带大家实际看看阿里的架构大牛们的精彩分享. 互联网架构 16:20 - 17:10 黄贵 - 阿里新一代分布式数据库X-DB技术剖析.pdf 互联网架构 10: ...

  2. 一文带你了解MySQL基础

    目录 一,为什么要学习数据库 二,数据库的相关概念 2.1数据库术语 2.2SQL 语法要点 2.3 SQL 分类 数据定义语言(DDL) 数据操纵语言(DML) 事务控制语言(TCL) 数据控制语言 ...

  3. 一文带你了解MySQL之基于成本的优化

    前言 我们之前老说MySQL执行一个查询可以有不同的执行方案,它会选择其中成本最低,或者说代价最低的那种方案去真正的执行查询,怎么就带大家详细了解一下 目录 一.什么是成本 二.单表查询的成本 2.1 ...

  4. 一文带你了解 MySQL 中的各种锁机制!

    MySQL中的锁机制,按粒度分为行级锁,页级锁,表级锁,其中按用法还分为共享锁和排他锁. 行级锁 行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁. 行级锁能大大减少数据库操作 ...

  5. mysql 获取距离当前最新的记录_一文带你了解 MySQL 中的各种锁机制!

    云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! MySQL中的锁机制,按粒度分为行级锁,页级锁,表级锁,其中按用法还分为共享锁和排他锁. 行级锁 ...

  6. 一文带你了解mysql sql model的only_full_group_by模式含Error 1055问题分析

    Mysql only_full_group_by及Error 1055问题分析图解 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 注 ...

  7. mysql 导出dmp文件_一文带你了解MySQL主从复制(Master-Slave)

    1.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...

  8. 一文带你了解MySQL中的各种锁机制!

    云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! MySQL中的锁机制,按粒度分为行级锁,页级锁,表级锁,其中按用法还分为共享锁和排他锁. 行级锁 ...

  9. 实战:一文带你解决Mysql主从复制日常错误

    使用过Mysql数据库朋友,一定听过读写分离,听的多的,估计耳朵都起茧子了.那么读写分离是怎么实现的呢,最常见的方法就是搭建Mysql的主从复制,主库提供写操作,从库提供读操作,从而达到应用的读写分离 ...

最新文章

  1. C# 如何使用 Elasticsearch (ES)
  2. 解决树莓派Virtualenv虚拟环境下GPIO问题
  3. Python-线程的生命周期
  4. Reflector 插件-Reflexil
  5. 【XSY2472】string KMP 期望DP
  6. JS时间戳和时间互转
  7. C++学习——c语言和C++语言中的struct
  8. CLR Via C# 学习笔记(5) 静态构造函数的性能
  9. 为什么薄膜干涉的厚度要很小_薄膜干涉的膜为什么不能太厚?
  10. AttributeError: module ‘torch.onnx‘ has no attribute ‘set_training‘
  11. 对抗样本之FGSM原理coding
  12. oracle建立图书管理数据库,Oracle数据库设计 图书管理系统
  13. Javascript AJAX回调函数传递参数
  14. 中国全电动注塑机行业发展趋势及未来需求前景预测报告(2022-2027年)
  15. python闰月计算_Python实例讲解 -- 获取本地时间日期(日期计算)
  16. CSS3 制作 3D 水晶糖果按钮
  17. VR基础——PicoVR SDK接入及使用整理
  18. [RL] 深入理解Tabular Leaning (MC/TD) 过程中的梯度下降使用
  19. CVE-2019-1458 分析
  20. XSS-Lab闯关笔记

热门文章

  1. jetbrains intellij idea从2021.2.3版本开始需要用户登录之后才能使用,2021.2.2版本以及之前的版本不用登录
  2. 资福医疗大圣磁控胶囊胃镜硬核出镜高交会
  3. Lambda方法引用
  4. Newline —— CRLF、LF、CR回车和换行
  5. 基于PaddlePaddle实现的目标检测模型SSD
  6. javaWeb项目跑起来吧
  7. 十年开发技术 Bug 总结,程序员经验分享
  8. PS更改图片的背景颜色
  9. Dynamics CRM: 表单(Form)中的显示字段变成只读的几种情况
  10. [论文解读]Bayesian Generalized Kernel Inference for Terrain Traversability Mapping