数据库服务器-MySQL
2011-12-20 15:51:07 阿炯

MySQL是一个开放源代码的关系数据库管理系统,原开发者为瑞典的MySQL AB公司,该公司于2008年被Sun收购。2009年,Oracle收购Sun公司,MySQL成为Oracle旗下产品。其采用C++、C语言开发并在GPLv2协议下授权使用。


MySQL由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科、Google和Facebook等网站。非常流行的开源软件组合LAMP中的“M”指的就是MySQL。目前Internet上流行的网站构架方式是LAMP(Linux Apache MySQL PHP),即是用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP(部分网站也使用Perl或Python)作为服务器端脚本解释器。由于这四个软件都是开放源代码软件,因此使用这种方式不用花一分钱就可以创建起一个稳定、免费的网站系统。

特性
* 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。
* 支持AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell NetWare、NetBSD、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。
* 为多种编程语言提供了API。这些编程语言包括C、C++、C#、VB.NET、Delphi、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。
* 支持多线程,充分利用CPU资源,支持多用户。
* 优化的SQL查询算法,有效地提高查询速度。
* 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
* 提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift JIS等都可以用作数据表名和数据列名。
* 提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
* 提供用于管理、检查、优化数据库操作的管理工具。
* 可以处理拥有上千万条记录的大型数据库。

派生版本
派生版本有Drizzle,MariaDB,Percona Server及OurDelta等。

MySQL的优点

易用:很容易安装。第三方工具,包括可视化工具,让用户能够很容易入门。

功能丰富:支持关系型数据库应该有的大部分功能——或者直接支持、或者间接支持。

安全:支持很多安全特性,有些非常高级,并且是内置于MySQL中。

可扩展:能够处理大量数据,并且在需要的时候可以规模化使用。

快速:放弃某些标准让MySQL能够非常高效、简捷地工作,因而速度更快。

MySQL的缺点

已知限制:从一开始就没有打算做所有事情,因而它在功能方面有一定的局限性,并不能满足一些先进应用程序的要求。

可靠性问题:对某些功能(例如引用、事务、审计等)的实现方式使得它与其他的关系型数据库相比缺少了一些可靠性。

开发滞慢:尽管MySQL依然是一款开源产品,但是自从它被收购之后人们就对其开发进展有很多抱怨。需要注意的是有一些基于MySQL的、完整集成的数据库在标准的MySQL之上附加了其他价值,例如MariaDB。

何时应该使用MySQL

分布式操作:就像任何其他独立的数据库服务器一样,它能够给你带来大量的操作自由度以及一些先进的功能。

高安全性:MySQL的安全机制通过一种简单的方式为数据的访问和使用提供了可靠的保护。

网站和Web应用:尽管有一些约束,但是绝大部分网站和Web应用都可以简单地运行在MySQL上。相关的灵活可扩展的工具非常易于使用和管理——事实证明这些工具在长期运行时非常有用。

定制解决方案:MySQL有丰富的配置项和运行模式,如果你需要一个高度量身定制的解决方案,那么它能够非常容易地尾随并执行你的规则。

何时不应该使用MySQL

SQL遵从性:因为MySQL并没有打算实现完整的SQL标准,所以它并不完全符合SQL。如果你可能需要与这样的关系型数据库集成,那么从MySQL切换过去可能并不容易。

并发性:尽管MySQL和一些其他的存储引擎能够非常好地执行读操作,但是并发读写可能会有问题。

缺少功能:MySQL缺少某些功能,例如全文本搜索。

全新版本模型


2023年7月消息,Oracle不断寻找方法来改进产品,以更好地满足需求。其推出 MySQL 创新版(Innovation)和长期支持版(LTS,Long-Term Support),这是 MySQL 版本模型中的一个重要改进。MySQL 5.7 及之前版本的补丁版本主要致力于错误修复和安全补丁。这在 MySQL 8.0 的持续交付模型中发生了变化,补丁版本也包含了新特性。这使得 MySQL 能够更频繁地向用户发布新特性,而不仅仅是每隔几年才能发布一次特性。但理解这种方法可能会给那些只需要关键补丁和较少行为变更的项目和应用带来挑战。观察了行业趋势后正在过渡到一个版本模型,可以在创新版(Innovation)和长期支持版(LTS)之间进行选择。

创新版和 LTS 版的质量都是生产级的。如果渴望访问最新的功能和改进,并喜欢与最新技术保持同步,那么 MySQL 创新版本可能最适合您。该版本非常适合在快节奏的开发环境中工作的开发人员和 DBA,其中有高水平的自动化测试和现代的持续集成技术,可以实现更快的升级周期。另一方面,如果环境需要继续保持已经固定的行为,那么 LTS 版本就是不二之选。这些版本仅包含必要的修复,因此可以减少数据库软件行为变更带来的风险。通过新的 MySQL 版本模型可以灵活地选择适合您特定应用和环境需求的选项。目标是确保您在创新版和 LTS 版中都能获得卓越的用户体验。可以在下面了解有关新版本模型和过渡过程的更多信息。

MySQL 8.1.0 将是第一个创新版本,8.0.34+ 将只进行错误修复,直到 8.0 生命周期结束(EOL,定于 2026 年 4 月)。大约一年后,MySQL 8.x 版本最终将成为 LTS,这将为用户从 8.0.x 迁移到 8.x LTS 版本提供充足的时间。在实践中的这段过渡期间如果想要 MySQL 数据库的最新功能、改进和所有错误修复,请使用创新版本(例如 8.1.x、8.2.x、8.3.x 等)。如果 MySQL 只需要错误修复,请使用 8.0.x 版本(例如 8.0.35、8.0.36、8.0.37 等)。在这两种情况下,建议都根据 Oracle 关键补丁更新(CPU)日历每季度更新 MySQL 数据库。当 8.x 成为 LTS 时,可以从修复版本(例如 8.0.37)规划、测试和迁移到 LTS 版本(例如 8.4.1)。

LTS 版本将遵循 Oracle 终身支持政策,包括 5 年的首要支持和 3 年的延长支持。创新版本将支持到下一个主要和次要版本。MySQL 产品组合中的大多数产品将具有创新版和 LTS 版:
MySQL Server、MySQL Shell、MySQL Router、MySQL NDB 集群将具有创新版和 LTS 版。
用于 Kubernetes 的 MySQL Operator,带有 InnoDB ReplicaSet、Cluster 和 ClusterSet 将具有创新版和 LTS 版。
MySQL 连接器将使用最新版本,但将被视为通用可用,并与所有支持的 MySQL 服务器版本兼容。
MySQL Workbench 将保留在 8.0.x,通常可用并与所有支持的 MySQL 服务器版本兼容。

8.0.34+ 仅为错误修复版本
创新版本可能每季度发布一次
大约每 2 年发布一个新的 LTS 版本(蓝色)。8.x LTS 版本的发布是一个例外,它将远早于 8.0 的 EOL。

创新版本
其类似于 MySQL 8.0 持续开发模型(< 8.0.34),包括错误修复、安全补丁和新功能。对创新版本的支持限于下一个次要版本(创新或 LTS)。当前的周期目标是每季度发布一个创新版本,递增次要版本号(例如 8.2、8.3 等)。创新版本内的补丁版本是可能的,但不太可能发生。

创新版本也将是通常可用的,建议用于生产环境中。错误修复和安全补丁通常会包含在下一个创新版本或 LTS 版本中,而不是作为该创新版本内补丁版本的一部分。在使用创新版本时,定期升级到最新的创新版本以跟上最新的错误修复和安全补丁是必要的。除了错误修复、安全补丁和新功能,创新版本还将引入新的弃用功能、删除功能甚至行为更改。为了减少在引入这些更改时升级的风险和复杂性,将制定策略和最佳实践来规定何时以及如何进行。

长期支持版本
大约每 2 年,一个次要版本将被指定为长期支持版本。这个版本将拥有 5 年的首要支持和 3 年的延长支持,与以前支持的版本相同。这类似于 MySQL 5.7 及更早版本。LTS 也将是该主要版本的最后一个版本。下一个创新版本将增加主要版本号。例如,如果 MySQL 8.4.0 是 8.x LTS 版本,那么 MySQL 9.0 将是下一个创新版本。


最新版本:5.6
1.优化器的改进
MySQL Optimizer 团队做了大量的工作为了不断的提升 SQL 查询的效率,主要体现在索引条件pushdown以及多范围的读数据。索引条件的pushdown的意思是将 WHERE 条件语句移到存储引擎中去处理,可降低过载;而多范围读意味着当查询使用第二索引时,将进行磁盘块的排序。

2.InnoDB 改进
MySQL InnoDB 存储引擎团队主要提供了 NoSQL 的访问接口,可通过 Memcached 的 API 直接访问 InnoDB 的表。使用 memcached API 直接访问 NoSQL,此举可大幅提升 Web 应用中的数据访问性能,适合一些简单的查询。

3.更好的复制
MySQL 复制模块团队主要改进了数据完整性和可用性以及性能方面的提升。

4.Performance Schema
Performance Schema 是在 5.5 版本中引入的,5.6 做了改进,提供新功能包括:表锁、表I/O 以及表锁等待。

最新版本:8.0
MySQL 8 正式发布



官方主页:http://www.mysql.com/


该文章最后由 阿炯 于 2023-07-24 22:43:51 更新,目前是第 2 版。