【重学 MySQL】二、MySQL 介绍

news2024/9/21 20:52:31

【重学 MySQL】二、MySQL 介绍

  • MySQL 概述
    • MySQL 的主要特点
    • MySQL 的应用场景
    • 结论
  • MySQL 发展史
    • 初始创建与发布
    • 开源与快速成长
    • 重要版本发布
    • 收购与变革
    • 分支与竞争
    • 持续发展与现代应用
  • 关于 MySQL8.0
    • 主要新特性和改进
    • 兼容性和迁移
    • 应用场景
    • 总结
  • 为什么选择 MySQL
  • Oracle VS MySQL
    • 基本特性与定位
    • 成本
    • 性能与扩展性
    • 安全性与数据完整性
    • 易用性与可移植性
    • 其他特性

在这里插入图片描述

MySQL 概述

MySQL 是一种流行的开源关系型数据库管理系统(RDBMS),它使用结构化查询语言(SQL)来管理或操作数据库。MySQL 由瑞典的 MySQL AB 公司开发,并在 2008 年被 Sun Microsystems 收购,随后 Sun Microsystems 又被 Oracle Corporation 收购。尽管经历了多次所有权变更,MySQL 仍然保持着其开源和免费的特性,并且被广泛用于各种应用程序中,包括 Web 应用、数据仓库、电子商务网站等。

MySQL 的主要特点

  1. 开源和免费:MySQL 是开源的,意味着任何人都可以查看、修改和分发其源代码。此外,它通常也是免费的,这对于预算有限的项目来说是一个巨大的优势。

  2. 跨平台:MySQL 支持多种操作系统,包括 Linux、Windows、macOS 等,这使得它可以在不同的环境中灵活部署。

  3. 高性能:MySQL 提供了高性能的数据库解决方案,支持大量并发连接和快速的数据访问。

  4. 可靠性:MySQL 提供了多种机制来确保数据的完整性和可靠性,包括事务处理、回滚、恢复等。

  5. 灵活性:MySQL 支持多种存储引擎,如 InnoDB、MyISAM、Memory 等,每种存储引擎都有其特定的用途和性能特点,用户可以根据需要选择合适的存储引擎。

  6. 安全性:MySQL 提供了多种安全特性,如用户认证、权限管理、数据加密等,以保护数据免受未授权访问。

  7. 易于使用:MySQL 提供了易于使用的图形界面工具(如 phpMyAdmin)和命令行工具,使得数据库的管理和操作变得简单直观。

MySQL 的应用场景

  • Web 应用:MySQL 是许多 Web 应用的首选数据库,因为它提供了高性能、可靠性和可扩展性。
  • 数据仓库:MySQL 也可以用于构建数据仓库,以存储和分析大量数据。
  • 电子商务:在电子商务领域,MySQL 用于存储和管理用户信息、订单数据、产品目录等。
  • 游戏开发:许多在线游戏使用 MySQL 来存储用户数据、游戏状态和游戏进度等信息。

结论

MySQL 是一种功能强大、灵活且易于使用的开源关系型数据库管理系统。它以其高性能、可靠性和广泛的应用场景而闻名,是许多应用程序的首选数据库解决方案。

MySQL 发展史

MySQL的发展史可以追溯到20世纪90年代初期,以下是其主要发展阶段和关键事件:

初始创建与发布

  • 创建者:MySQL由瑞典的Michael Widenius、David Axmark和Allan Larsson于1994年开始设计,并于1995年成立了MySQL AB公司。
  • 初始版本:MySQL的最初版本于1995年发布,设计目标是一个轻量级、快速的关系型数据库管理系统(RDBMS)。此时,MySQL主要以闭源形式存在。

开源与快速成长

  • 开源发布:在2000年,MySQL改为开源发布,采用了GNU通用公共许可证(GPL),这一举措极大地促进了MySQL在开发者社区中的传播和改进。
  • 功能扩展:随着开源社区的参与,MySQL不断增加新的功能和改进,包括存储过程、触发器、视图、复制和集群支持等,以满足更多复杂应用的需求。

重要版本发布

  • MySQL 3.23:2001年发布的MySQL 3.23版本引入了InnoDB存储引擎,提供了事务支持和行级锁定,极大地增强了MySQL的功能和性能。
  • MySQL 4.0:2000年发布的MySQL 4.0版本带来了更多的功能,如存储过程、触发器、视图和外键支持,提高了MySQL在复杂应用中的可用性。
  • MySQL 5.0及后续版本:MySQL 5.0及之后的版本继续引入性能和功能方面的改进,如更强大的查询优化、InnoDB存储引擎的进一步改进等。

收购与变革

  • Sun Microsystems收购:2008年,Sun Microsystems以10亿美元收购了MySQL AB,这一收购增强了MySQL的市场影响力和技术支持。
  • Oracle收购Sun Microsystems:2010年,Oracle Corporation收购了Sun Microsystems,从而成为MySQL的新所有者。尽管经历了收购,MySQL仍然保持其开源特性,并继续得到开源社区的支持。

分支与竞争

  • MariaDB分支:由于对Oracle收购MySQL的担忧,MySQL的创始人之一Michael Widenius在2010年创建了MariaDB,作为MySQL的开源分支,以继续开发和支持开源数据库系统。MariaDB逐渐获得了广泛的认可,并成为许多Linux发行版的默认数据库。

持续发展与现代应用

  • 最新版本:截至当前时间(2024年9月),MySQL已经迭代到了多个版本,如MySQL 8.0等,不断引入新特性和改进,如窗口函数、JSON支持、全文搜索和事务数据字典等,使MySQL在大规模和复杂应用中更具竞争力。
  • 广泛应用:MySQL被广泛应用于各种应用程序和网站中,特别是在Web开发中。许多知名的网站和应用,如Facebook、Twitter等,都使用MySQL作为其数据存储后端。

MySQL的发展史展示了其从一个小型数据库系统成长为全球最流行的开源关系型数据库管理系统之一的过程。其开源性质、跨平台支持、高性能和可靠性等特点,使得MySQL成为许多开发者和企业的首选数据库解决方案。

关于 MySQL8.0

MySQL 8.0 是 MySQL 数据库管理系统的一个重要版本,它带来了许多新特性和性能改进,使得 MySQL 在处理现代应用需求时更加高效和强大。

主要新特性和改进

  1. 性能提升

    • MySQL 8.0 的性能相比 MySQL 5.7 有显著提升,特别是在读/写工作负载、IO 密集型工作负载以及高竞争("hot spot"热点竞争问题)工作负载方面。
    • 引入了资源组功能,允许用户将线程映射到 CPU,以针对特定硬件上的特定工作负载进行优化。
  2. NoSQL 支持

    • MySQL 8.0 增强了 NoSQL 存储功能,为 schema-less 模式的 JSON 文档提供了多文档事务支持和完整的 ACID 合规性。
  3. 窗口函数(Window Functions)

    • 新增了窗口函数支持,如 ROW_NUMBER()、RANK()、DENSE_RANK() 等,这些函数可以在结果集的一个窗口范围内进行计算,适用于处理时间序列数据、分析排名等复杂查询场景。
  4. JSON 支持

    • 大幅改进了对 JSON 的支持,添加了 JSON_EXTRACT()、JSON_ARRAYAGG() 和 JSON_OBJECTAGG() 等函数,使得在查询中直接操作 JSON 数据变得更加灵活和高效。
  5. 数据字典

    • 引入了全新的原生数据字典,取代了以前的 .frm、.par、.opt 等文件,实现了对元数据的统一管理,提升了数据库性能和可管理性。
  6. 角色管理

    • 加入了角色管理功能,通过为用户分配角色,简化了权限管理,提高了安全性。
  7. 安全性增强

    • 加强了密码策略和用户认证功能,支持新的默认身份验证插件 caching_sha2_password。
    • 提供了 SQL 角色、密码强度、授权等安全特性。
  8. InnoDB 存储引擎优化

    • 对 InnoDB 存储引擎进行了多方面优化,包括 I/O 负载、元数据操作等,提升了数据库的并发性能和可扩展性。
  9. 其他新特性

    • 支持降序索引、不可见索引、公用表表达式(CTE)、正则表达式增强等。
    • 改进了查询优化器,使其能够生成更高效的执行计划。
    • 增强了 GIS 地理信息系统功能,支持空间数据类型、索引和相关函数。

兼容性和迁移

  • MySQL 8.0 支持从 MySQL 5.7 升级到 MySQL 8.0,但仅支持通过 in-place 方式进行升级,并且不支持从 MySQL 8.0 降级到 MySQL 5.7 或更早版本。
  • 在升级之前,建议对数据进行备份,以确保数据的安全性。

应用场景

MySQL 8.0 适用于各种规模的应用场景,包括 Web 应用、数据分析、云计算等。其强大的性能和丰富的功能使得 MySQL 成为许多企业和开发者的首选数据库管理系统。

总结

MySQL 8.0 是一个功能强大、性能卓越的数据库管理系统版本。它带来了许多新特性和性能改进,使得 MySQL 在处理现代应用需求时更加高效和强大。无论是从性能、安全性还是可管理性方面来看,MySQL 8.0 都是一个值得推荐的数据库管理系统版本。

为什么选择 MySQL

选择MySQL作为数据库管理系统的原因有很多,以下是一些主要的原因:

  1. 开源与免费
    MySQL是一个开源的数据库系统,这意味着它的源代码是公开的,并且通常可以免费下载和使用。这对于预算有限的项目或个人开发者来说是一个巨大的优势,因为它降低了成本门槛。

  2. 广泛的社区支持
    由于MySQL的开源性质,它拥有庞大的用户和开发者社区。这个社区提供了丰富的文档、教程、问题解答和扩展工具,帮助用户更好地使用MySQL。此外,社区还持续贡献新的功能和改进,推动MySQL的不断发展。

  3. 高性能与可扩展性
    MySQL经过多年的发展和优化,已经成为一个高性能的数据库系统。它支持大量的并发连接和快速的数据访问,适用于各种规模的应用场景。同时,MySQL还提供了多种存储引擎,如InnoDB、MyISAM等,用户可以根据需要选择合适的存储引擎以优化性能。

  4. 可靠性
    MySQL提供了多种机制来确保数据的完整性和可靠性,包括事务处理、回滚、恢复等。这些机制使得MySQL在处理复杂业务逻辑和保证数据一致性方面具有很高的可靠性。

  5. 灵活性
    MySQL支持多种操作系统和编程语言,具有很好的灵活性。它可以在Linux、Windows、macOS等多种操作系统上运行,并且与PHP、Python、Java等多种编程语言兼容。这使得MySQL可以轻松地集成到各种应用程序中。

  6. 丰富的功能
    MySQL提供了丰富的功能来满足不同场景的需求。除了基本的SQL查询、数据插入、更新和删除外,MySQL还支持存储过程、触发器、视图、全文索引等高级功能。这些功能使得MySQL在处理复杂查询、数据分析和业务逻辑时更加灵活和强大。

  7. 安全性
    MySQL提供了多种安全特性来保护数据免受未授权访问。它支持用户认证、权限管理、数据加密等安全措施,并且可以通过配置来增强系统的安全性。此外,MySQL还不断更新和改进其安全机制以应对新的安全威胁。

  8. 广泛的应用
    MySQL在Web开发、电子商务、数据分析等领域有着广泛的应用。许多知名的网站和应用都使用MySQL作为其数据存储后端,如Facebook、Twitter、YouTube等。这使得MySQL具有很高的市场认可度和可靠性。

综上所述,MySQL因其开源免费、社区支持广泛、高性能可扩展、可靠灵活、功能丰富以及广泛应用等特点而备受青睐。无论是个人开发者、中小企业还是大型企业,MySQL都是一个值得选择的数据库管理系统。

Oracle VS MySQL

Oracle和MySQL都是流行的数据库管理系统,但它们在多个方面存在显著差异。

基本特性与定位

  • Oracle

    • 类型:对象关系数据库管理系统(ORDBMS),基于对象模型存储数据及其方法。
    • 定位:主要面向大企业级用户,提供全面的数据库解决方案,包括高级的数据处理、安全性、高可用性和可伸缩性等功能。
    • 市场份额:根据Gartner的数据,截至2020年,Oracle占据了全球关系型数据库管理系统市场的超过40%的份额。
  • MySQL

    • 类型:开源的关系数据库管理系统(RDBMS),基于关系模型存储数据。
    • 定位:更适合中小型企业和个人开发者,提供基本的数据库功能,且易于使用和管理。
    • 市场份额:虽然具体市场份额低于Oracle,但MySQL在开源数据库市场中占据重要地位。

成本

  • Oracle

    • 是一种商业软件,需要购买许可证并支付维护和支持费用,成本较高。
  • MySQL

    • 社区版是免费的,用户可以自由下载和使用。如果需要高级功能(如多线程复制、查询性能优化等),可能需要购买商业版或相应许可证,但整体成本相对较低。

性能与扩展性

  • Oracle

    • 提供了高效的数据处理能力和强大的并发性能,适用于处理大规模数据和复杂查询。
    • 支持集群数据库配置,如Oracle Real Application Clusters (RAC),提供故障转移和负载均衡。
  • MySQL

    • 经过多年的优化,也具有出色的性能表现,能够处理大量数据和高并发请求。
    • 支持主从复制、分区和集群等技术,以实现数据库的扩展和性能提升。

安全性与数据完整性

  • Oracle

    • 提供了多层的安全控制机制,包括基于角色的访问控制、加密算法、审计和数据备份等。
    • 支持高级的数据完整性约束,确保数据的准确性和一致性。
  • MySQL

    • 提供了用户权限管理、数据加密和审计日志等安全功能,以保护数据的安全。
    • 默认的隔离级别有助于防止并发操作时的数据不一致问题。

易用性与可移植性

  • Oracle

    • 提供了丰富的开发和管理工具,如SQL Developer和Oracle Enterprise Manager,但学习和使用门槛相对较高。
    • 支持跨平台运行,但更偏向于使用自己的技术堆栈和产品集成。
  • MySQL

    • 具有较简单的安装和配置过程,提供了直观的管理工具和命令行接口,易于上手。
    • 可以在多种操作系统上运行,具有很好的可移植性和兼容性。

其他特性

  • Oracle

    • 支持高级的数据处理功能,如存储过程、触发器和视图等。
    • 提供了强大的事务管理,支持ACID属性(原子性、一致性、隔离性和持久性)。
  • MySQL

    • 虽然也支持事务处理,但仅限于InnoDB等存储引擎。
    • 提供了丰富的索引和优化器功能,以提高查询性能。

综上所述,Oracle和MySQL在基本特性、成本、性能、安全性、易用性和可移植性等方面各有优势。选择哪个数据库系统取决于具体的应用场景、预算、性能需求和安全要求等因素。对于大型企业级应用和高性能要求的场景,Oracle可能更为合适;而对于中小型企业和个人开发者来说,MySQL则是一个性价比较高的选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2101887.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Elasticsearch】Elasticsearch集群在分布式环境下的管理

文章目录 📑前言一、集群规划与设计1.1 集群拓扑结构设计1.2 节点角色分配1.3 分片与副本配置 二、集群管理与运维2.1 集群监控2.2 故障处理2.3 性能优化 三、扩展与升级3.1 集群扩展3.2 集群升级3.3 灾备与容灾 🌤️总结 📑前言 Elasticsear…

【重构获得模式 Refactoring to Patterns】

重构获得模式 Refactoring to Patterns 面向对象设计模式是“好的面向对象设计”,所谓“好的面向对象设计”指的是那些可以满足“应对变化,提高复用”的设计。 现代软件设计的特征是“需求的频繁变化”。设计模式的要点是“寻找变化点,然后…

2024.9.3 作业

自己封装 栈和队列 #include <iostream>using namespace std;class mystack { private:int *data;int size;int top; public://无参构造mystack():size(10){data new int[size];top -1;size 10;}//有参构造mystack(int s){data new int[s];top -1;size s;}//赋值my…

智慧医院是什么?建设智慧医院的关键步骤

智慧医院是什么&#xff1f; 智慧医院是一种新型的医疗机构&#xff0c;它利用先进的信息技术、数据分析和智能化系统&#xff0c;优化医院的管理和服务流程&#xff0c;提高医疗质量和效率。在智慧医院中&#xff0c;所有的运营和管理环节都可以通过数据驱动的方式来实现优化…

【网络安全】服务基础第一阶段——第十节:Windows系统管理基础---- 组策略高级应用

目录 一、组策略的基本概念 1.1 组策略的基本概念 1.1.1 组策略对象 1.2 配置 1.2.1 计算机配置&#xff08;Computer Configuration&#xff09; 1.2.2 用户配置&#xff08;User Configuration&#xff09; 1.3 作用范围 1.4 继承和优先级 1.4.1 继承&#xff08;In…

【AI】Pytorch_模型构建

建议点赞收藏关注&#xff01;持续更新至pytorch大部分内容更完。 本文已达到10w字&#xff0c;故按模块拆开&#xff0c;详见目录导航。 整体框架如下 数据及预处理 模型及其构建 损失函数及优化器 本节目录 模型线性回归逻辑回归LeNetAlexNet 构建模块组织复杂网络初始化网络…

SpringBoot学习(3)(配置文件的基本使用)

1、初步大致学习方向&#xff08;基础&#xff09; 配置文件整合MyBatisBean管理&#xff08;主要学习如何管理第三方bean对象&#xff1f;&#xff1f;如导入一个jar包&#xff0c;这个jar包中的一些对象&#xff0c;如何注入到Ioc容器里&#xff09;自动配置原理&#xff08;…

史上最全的Mysql索引教程

一、什么是索引 1.1 索引简介 索引是数据库中用来提高数据检索效率的数据结构。它类似于书籍的目录&#xff0c;可以帮助用户快速找到所需的数据&#xff0c;而不必扫描整个数据集。在数据库系统中&#xff0c;索引可以显著提高查询性能。 所谓的存储引擎&#xff0c;说白了…

【mysql】SQL语言的概述

基本select语句的使用&#xff1a; SQL概述&#xff1a; 1946年&#xff0c;第一台电脑诞生了&#xff0c;有很多基础技术在里面&#xff0c;但是在几十年来&#xff0c;保留下来的技术SQL就是其中之一&#xff0c; 1974年的时候&#xff0c;IBM的研究员发布了一篇揭开数据库…

代码随想录算法训练营第35天|背包问题基础、46. 携带研究材料(01背包二维解法)(01背包一维解法)(acm)、416. 分割等和子集

目录 0、背包问题基础01背包 46. 携带研究材料&#xff08;01背包&#xff09;1、题目描述2、思路3、code&#xff08;二维解法&#xff09;3-1、code&#xff08;一维解法&#xff09;4、复杂度分析 416. 分割等和子集1、题目描述2、思路3、code4、复杂度分析 0、背包问题基础…

如何有效地管理个人时间:策略与技巧

在快节奏的生活环境中&#xff0c;时间成为了最宝贵的资源之一。有效地管理时间不仅能提高工作效率&#xff0c;还能提升生活质量&#xff0c;使你有更多的时间投入到家庭、爱好和个人成长中去。本文将分享一些实用的时间管理技巧&#xff0c;帮助你更好地安排每日事务。 时间…

[HZNUCTF 2023 preliminary]easyAPK-快坚持不下去的第三天

第一做安卓题&#xff0c;前提jadx,java环境&#xff0c;模拟器&#xff0c;我配了好久&#xff0c; 这段代码实现了一个简单的登录界面&#xff0c;用户需要输入用户名和密码。用户名和密码会与预设的硬编码值进行比较&#xff0c;登录成功后会启动另一个 Activity。如果密码错…

TS 学习(一)

如果我们在 ts 中写 不用运行就能在文件中报错 ts 是一种静态类型的检查 能将运行时出现的错误前置 一般不用 命令行编译 ts 转换成 js 将中文转码 tsc index&#xff08;.ts&#xff09; 输入命令生成 配置文件 能在中间进行 配置转换成 js 的哪个规范 es5 还是 6 和其它转…

鸿蒙(API 12 Beta6版)图形【过度绘制调试使用指导】方舟2D图形服务

当应用页面布局的嵌套程度过深时&#xff0c;应用渲染阶段会存在一些组件的绘制指令被其他组件的绘制指令部分或完全覆盖遮挡的情况&#xff0c;造成冗余的cpu、gpu等计算资源的使用。这种一个屏幕上的像素点被重复绘制了多次的情况被称为过度绘制&#xff08;Overdraw&#xf…

Vite - 兼容旧版浏览器 plugin-legacy(2)

目录 1&#xff0c;问题2&#xff0c;解决3&#xff0c;String 其他新增 API 的版本 接上文 Vite - 兼容旧版浏览器 plugin-legacy&#xff08;1&#xff09; 1&#xff0c;问题 客户浏览器报错&#xff0c;不支持 replaceAll 方法。 该方法在 query-string 依赖内部使用了。…

通过生日计算年龄

// 获取当前月 function getDate(date) {let d new Date(date);// 将日期设置为下月一号d.setMonth(d.getMonth() 1);d.setDate(1);// 获取本月最后一天d.setDate(d.getDate() - 1);return d.getDate(); } // 获取年龄 传出生日期和当前日期&#xff0c;当前日期可以不用传 f…

双指针(1)_数组分块_移动零问题

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 双指针(1)_数组分块_移动零问题 收录于专栏【经典算法练习】 本专栏旨在分享学习C的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 1.…

ELK学习笔记(二)——使用K8S部署Kibana8.15.0

上篇文章我们完成了&#xff0c;ES的集群部署&#xff0c;如果还没有看过上篇文章的兄弟&#xff0c;可以去看看。 ELK学习笔记&#xff08;一&#xff09;——使用K8S部署ElasticSearch8.15.0集群 话不多说&#xff0c;接下来直接进入kibana的搭建 一、下载镜像 #1、下载官方…

hackme靶机通关攻略

1、登录靶机&#xff0c;查询是否有注入点 2、判断闭合方式 输入OSINT and 11 # 输入OSINT and 12 # 得出闭合方式为单引号 2、查询数据库名 输入-1 union select database(),2,3 # 3、查询数据库中的表 输入-1 union select group_concat(table_name),2,3 from informa…

搜维尔科技:数据手套+机械手遥操作,五指触感灵巧手解决方案!

本灵巧手模仿人手的自由度分配及相关运动学参数进行设计的灵巧手&#xff0c;整手的手指设计采用了模块化的思想。整机重量轻&#xff0c;单指指尖抓取力强&#xff0c;五指灵巧手作为人体机器人或者机械臂末端操作工具&#xff0c;在工业生产的特殊环境中&#xff0c;对复杂形…