MySQL前言篇
nanshan 2025-01-05 19:19 11 浏览 0 评论
今天起,开始深入学习一下,全球最流行的数据库——MySQL。
我们在学习Redis的时候第一篇,已经讲解了数据库的分类,其中MySQL是属于关系型数据库的一种。关系型数据库的优缺点分析就不在这赘述了。详情可参阅:
MySQL来源
MySQL是一种开放源代码的关系型数据库管理系统。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,让中小型企业减少不少成本。
其实MySQL最初的出发点是用mSQL和他们自己的快速低级例程(ISAM)去连接表格。不管怎样,在经过一些测试后,开发者得出结论:mSQL的速度或灵活性不足以满足要求。这导致了为数据库提供了新的SQL接口,这样,这个API被设计成允许为用于mSQL而写的第三方代码更容易移植到MySQL。
MySQL名称的起源不明。一直以来,我们的基本目录以及大量库和工具均采用了前缀“my”。不过,共同创办人Monty Widenius的女儿名字也叫“My”。时至今日,MySQL名称的起源仍是一个迷。
MySQL发展史
1996年,mysql 1.0发布
2000年,ISAM升级为MyISAM存储引擎,MySQL开源
2003年,MySQL4.0发布,集成了InnoDB存储引擎
2005年,MySQL5.0发布,提供了视图、存储过程等功能
2008年,MySQK AB公司被Sun公司收购
2009年,Oracle收购了Sun公司,进入了Oracle MySQL时代
2010年,MySQL5.5发布,InnoDB成为了默认的存储引擎
2013年,MySQL5.6发布,相当于MySQL的6.0版本
2015年,MySQL5.7发布,相当于MySQL的7.0版本
2016年,Mysql发布了8.0.0版本
Oracle,大家都知道,是那个很贵很贵的数据库Oracle的公司。被Oracle公司收购后,MySQL会不会也商业化?MySQL的创始人Michael Widenius也有同样的担心,但是不同的是我们只能祈求Oracle有一些道德,而Michael Widenius已经开始主动出击,他以MySQL为基础,开启了另一个分支计划——MariaDB。弱者只能祈求,强者才会出击!
MySQL与MariaDB对比
二者都是出自一个人的杰作,因其与MySQL保持着高度的兼容性,相应的版本可以直接替换。
1、MariaDB发展趋势和更新频率
毕竟基于MySQL创始人领衔开发的MariaDB数据库,知道MySQL数据库存在的弱点所在,然后提供更好的兼容性和扩展性,我们基本上完全可以将MySQL数据库建议到MariaDB数据库中,而且MariaDB发展速度和升级速度远远优先。
2、MySQL封闭且发展缓慢
由于MySQL在被收购之后更新速度与性能的优化非常的缓慢,而且是闭源的,完全没有Oracle之外的人参与进来,很多需要解决的问题都没有升级进去,反之很多公司虽然也有利用自己开发的分支MYSQL版本。
3、MariaDB的特点和优势
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,MariaDB默认的存储引擎是Aria,Aria可以支持事务,但是默认情况下没有打开事务支持,因为事务支持对性能会有影响。MariaDB是一个采用Maria存储引擎的MySQL分支版本,是由原来 MySQL 的作者Michael Widenius创办的公司所开发的免费开源的数据库。
4、MariaDB与MySQL性能对比
这个直观的区别在于MariaDB能够快速的查询和处理数据,且占用资源相对是少于MySQL数据库的,而且在运行速度、以及支持对 Unicode 的排序问题优于MySQL数据库。
什么是MySQL
MySQL官方描述
1、MySQL is a database management system.
MySQL是一个数据库管理系统
2、MySQL databases are relational.
MySQL数据库是关系型的
3、MySQL software is Open Source.
? MySQL软件是开源的
4、The MySQL Database Server is very fast, reliable, scalable, and easy to use.
? MySQL数据库服务器非常快速、可靠、可扩展且易于使用
5、MySQL Server works in client/server or embedded systems.
? MySQL服务器适用于客户机/服务器或嵌入式系统
6、A large amount of contributed MySQL software is available.
? 提供了大量可用的MySQL软件
说了这么多优点,它究竟是如何做到的呢?我们一起来看一下MySQL的官方架构图。
MySQL架构图
1、连接层
Connectors组件,是MySQL向外提供的交互组件,如java,.net,php等语言可以通过该组件来操作SQL语句,实现与SQL的交互。
2、管理服务组件和工具组件
提供对MySQL的集成管理,如备份(Backup),恢复(Recovery),安全管理(Security)等
3、连接池
负责监听对客户端向MySQL Server端的各种请求,接收请求,转发请求到目标模块。每个成功连接MySQL Server的客户请求都会被创建或分配一个线程,该线程负责客户端与MySQL Server端的通信,接收客户端发送的命令,传递服务端的结果信息等。
4、SQL接口
接收用户SQL命令,如DML,DDL和存储过程等,并将最终结果返回给用户。
5、查询分析器
首先分析SQL命令语法的合法性,并尝试将SQL命令分解成数据结构,若分解失败,则提示SQL语句不合理。
6、优化器
对SQL命令按照标准流程进行优化分析。它使用的是“选取-投影-连接”策略进行查询。
7、缓存
查询缓存,如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。
8、MySQL存储引擎
MySQL存储引擎在MySQL中扮演重要角色,其作比较重要作用,管理表创建,数据检索,索引创建等。
9、文件存储
实际存储MySQL 数据库文件和一些日志文件等的系统,如Linux,Unix,Windows等。
这么复杂而完善的架构设计,那么我们真正执行一条SQL的时候,是如何执行的呢?下篇文章做详细描述!
总结一下
通过上面的描述,你认为作为一个数据库最核心的两点内容是什么?笔者认为以下两点:
1、存储
如何保证数据存储安全?
从上面的MySQL架构图中可以看到,在存储上做了很多工作,比如使用不同的文件系统:NFS、NAS等,以及记录各种日志文件:Redo、Undo、BinLog等。
2、检索
如何保证查询效率高?
从上面的MySQL架构图中可以看到,在检索上也做了很多工作,比如分析器、优化器、缓存、存储引擎、索引等。
除此之外
当然除此之外的易用性(安装部署、使用、客户端)、高性能(连接池)、安全性(Security、Cluster、Replication、Recovery)以及可拓展型(存储引擎)等也是一款软件能不能流行起来的很重要的原因。
相关推荐
- 0722-6.2.0-如何在RedHat7.2使用rpm安装CDH(无CM)
-
文档编写目的在前面的文档中,介绍了在有CM和无CM两种情况下使用rpm方式安装CDH5.10.0,本文档将介绍如何在无CM的情况下使用rpm方式安装CDH6.2.0,与之前安装C5进行对比。环境介绍:...
- ARM64 平台基于 openEuler + iSula 环境部署 Kubernetes
-
为什么要在arm64平台上部署Kubernetes,而且还是鲲鹏920的架构。说来话长。。。此处省略5000字。介绍下系统信息;o架构:鲲鹏920(Kunpeng920)oOS:ope...
- 生产环境starrocks 3.1存算一体集群部署
-
集群规划FE:节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。>3节点。BE:节点负责数据存储和SQL执行。>3节点。CN:无存储功能能的BE。环境准备CPU检查JDK...
- 在CentOS上添加swap虚拟内存并设置优先级
-
现如今很多云服务器都会自己配置好虚拟内存,当然也有很多没有配置虚拟内存的,虚拟内存可以让我们的低配服务器使用更多的内存,可以减少很多硬件成本,比如我们运行很多服务的时候,内存常常会满,当配置了虚拟内存...
- 国产深度(deepin)操作系统优化指南
-
1.升级内核随着deepin版本的更新,会自动升级系统内核,但是我们依旧可以通过命令行手动升级内核,以获取更好的性能和更多的硬件支持。具体操作:-添加PPAs使用以下命令添加PPAs:```...
- postgresql-15.4 多节点主从(读写分离)
-
1、下载软件[root@TX-CN-PostgreSQL01-252software]#wgethttps://ftp.postgresql.org/pub/source/v15.4/postg...
- Docker 容器 Java 服务内存与 GC 优化实施方案
-
一、设置Docker容器内存限制(生产环境建议)1.查看宿主机可用内存bashfree-h#示例输出(假设宿主机剩余16GB可用内存)#Mem:64G...
- 虚拟内存设置、解决linux内存不够问题
-
虚拟内存设置(解决linux内存不够情况)背景介绍 Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存...
- Elasticsearch性能调优(5):服务器配置选择
-
在选择elasticsearch服务器时,要尽可能地选择与当前业务量相匹配的服务器。如果服务器配置太低,则意味着需要更多的节点来满足需求,一个集群的节点太多时会增加集群管理的成本。如果服务器配置太高,...
- Es如何落地
-
一、配置准备节点类型CPU内存硬盘网络机器数操作系统data节点16C64G2000G本地SSD所有es同一可用区3(ecs)Centos7master节点2C8G200G云SSD所有es同一可用区...
- 针对Linux内存管理知识学习总结
-
现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为内...
- MySQL进阶之性能优化
-
概述MySQL的性能优化,包括了服务器硬件优化、操作系统的优化、MySQL数据库配置优化、数据库表设计的优化、SQL语句优化等5个方面的优化。在进行优化之前,需要先掌握性能分析的思路和方法,找出问题,...
- Linux Cgroups(Control Groups)原理
-
LinuxCgroups(ControlGroups)是内核提供的资源分配、限制和监控机制,通过层级化进程分组实现资源的精细化控制。以下从核心原理、操作示例和版本演进三方面详细分析:一、核心原理与...
- linux 常用性能优化参数及理解
-
1.优化内核相关参数配置文件/etc/sysctl.conf配置方法直接将参数添加进文件每条一行.sysctl-a可以查看默认配置sysctl-p执行并检测是否有错误例如设置错了参数:[roo...
- 如何在 Linux 中使用 Sysctl 命令?
-
sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)