随着时间的推移,开源数据库在中低端应用中渐渐流行起来,占据了很大的市场份额。开源数据库具有免费利用、配置简朴、稳定性好、性能良好等特点,而 MySQL 数据库正是开源数据库中的良好代表。
开源全称为“开放源代码”。很多人以为开源软件最显着的特点是免费,但实际上并不是如许的,开源软件最大的特点应该是开放,也就是任何人都可以得到软件的源代码。可以在源代码的基础上加以修改学习,甚至重新发放,当然是在版权限制范围之内。不清楚的读者可以参考《开源就便是免费吗?用究竟来语言》一节。
MySQL 是最流行的数据库之一,是一个免费开源的关系型数据库管理体系,但也不意味着该数据库是完全免费的。MySQL 由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 适合中小型软件,被个人用户以及中小企业青睐。
针对差别的用户,MySQL 分为两个版本:
MySQL Community Server(社区版):该版本是自由下载且完全免费的,但是官方不提供技术支持。
MySQL Enterprise Server(企业版):该版本是收费的,而且不能下载,但是该版本拥有完善的技术支持(官方提供电话技术支持)。
注意:MySQL Cluster 重要用于架设群服务器,需要在社区服务或企业版的基础上利用。
MySQL 的定名机制由 3 个数字和 1 个后缀构成,比方 mysql-5.7.20:
第 1 个数字“5”是主版本号,用于形貌文件的格式,所有版本 5 的发行版都有相同的文件夹格式。
第 2 个数字“7”是发行级别,主版本号和发行级别组合在一起便构成了发行序列号。
第 3 个数字“20”是在此发行系列的版本号,随每次新发行的版本递增。通常选择已经发行的最新版本。
在 MySQL 开发过程中,同时存在多个发布系列,每个发布系列的成熟度处在差别阶段。
MySQL 5.7 是最新开发的稳定(GA)发布系列,是将实验新功能的系列,目前已经可以正常利用。
MySQL 5.6 是比力稳定的(GA)发布系列,只针对漏洞修复重新发布,不增长会影响稳定性的新功能。
MySQL 5.1 是一个稳定的(产品质量)发布系列,只针对严重漏洞修复和安全修复重新发布,不增长影响该系列稳定性的紧张功能。
注意:对于 MySQL 4.1 等低于 5.0 的老版本,官方将不再提供支持。所有发布的 MySQL 版本已经颠末严格标准的测试,可以保证其安全可靠地利用。针对差别的操纵体系,读者可以在MySQL官方下载页面(http://dev.mysql.com/downloads/)下载相应的安装文件。
MySQL的特点、上风
MySQL 数据库管理体系具有很多的上风,下面总结了此中几种。
1)MySQL 是开放源代码的数据库
MySQL 是开放源代码的数据库,任何人都可以获取该数据库的源代码。这就使得任何人都可以修正 MySQL 的缺陷,并且任何人都能以任何目的来利用该数据库。MySQL 是一款可以自由利用的数据库。
2)MySQL 的跨平台性
MySQL 不光可以在 Windows 系列的操纵体系上运行,还可以在 UNIX、Linux 和 Mac OS 等操纵体系上运行。因为很多网站都选择 UNIX、Linux 作为网站的服务器,以是 MySQL 的跨平台性保证了其在 Web 应用方面的上风。虽然微软公司的 SQL Server 数据库是一款很优秀的商业数据库,但是其只能在 Windows 系列的操纵体系上运行。因此,MySQL 数据库的跨平台性是一个很大的上风。
3)价格上风
MySQL 数据库是一个自由软件,任何人都可以从 MySQL 的官方网站上下载该软件,这些社区版本的 MySQL 都是免费试用的,纵然是需要付费的附加功能,其价格也是很自制的。相对于 Oracle、DB2 和 SQL Server 这些价格昂贵的商业软件,MySQL 具有绝对的价格上风。
4)功能强大且利用方便
MySQL 是一个真正的多用户、 多线程 SQL 数据库服务器。它可以大概快速、有用和安全的处置处罚大量的数据。相对于 Oracle 等数据库来说,MySQL 的利用黑白常简朴的。MySQL 重要目标是快速、健壮和易用。
MySQL 与常用的主流数据库 Oracle、SQL Server 相比,重要特点就是免费,并且在任何平台上都能利用,占用的空间相对较小。但是,MySQL 也有一些不足,比如对于大型项目来说,MySQL 的容量和安全性就略逊于 Oracle 数据库。
5.MySQL适用于哪些场景?
MySQL 是目前世界上最流行的开源关系数据库,大多应用于互联网行业。比如,在国内,大家所熟知的百度、腾讯、淘宝、京东、网易、新浪等,国外的 Google、Facebook、Twitter、GitHub 等都在利用 MySQL。社交、电商、游戏的焦点存储每每也是 MySQL。
任何产品都不可能是万能的,也不可能适用于所有的应用场景。那么 MySQL 到底适用于哪些场景又不适用于哪些场景呢?
1. Web 网站体系
Web 网站开发者是 MySQL 最大的客户群,也是 MySQL 发展史上最为紧张的支撑气力。
MySQL 之以是能成为 Web 网站开发者们最青睐的数据库管理体系,是因为 MySQL 数据库的安装配置都非常简朴,利用过程中的维护也不像很多大型商业数据库管理体系那么复杂,而且性能出色。还有一个非常紧张的原因就是 MySQL 是开放源代码的,完全可以免费利用。
2、日志记录体系
MySQL 数据库的插入和查询性能都非常的高效,假如设计的好,在利用 MyISAM 存储引擎的时间,两者可以做到互不锁定,达到很高的并发性能。以是,对需要大量的插入和查询日志记录的体系来说,MySQL 黑白常不错的选择。比如处置处罚用户的登录日志,操纵日志等,都黑白常适合的应用场景。
3、数据仓库体系
随着现在数据仓库数据量的飞速增长,我们需要的存储空间越来越大。数据量的不断增长,使数据的统计分析变得越来越低效,也越来越困难。下面是几个重要的解决思路。
1)接纳昂贵的高性能主机以进步盘算性能,用高端存储装备进步 I/O 性能,效果理想,但是成本非常高;
2)通过将数据复制到多台利用大容量硬盘的廉价 PC Server 上,以进步整体盘算性能和 I/O 能力,效果尚可,存储空间有肯定限制,成本低廉;
3)通过将数据程度拆分,利用多台廉价的 PC Server 和当地磁盘来存放数据,每台机器上面都只有所有数据的一部分,解决了数据量的题目,所有 PC Server 一起并行盘算,也解决了盘算能力题目,通过中间代理程序调配各台机器的运算使命,既可以解决盘算性能题目又可以解决 I/O 性能题目,成本也很低廉。
在上面的三个方案中,第二和第三个的实现,MySQL 都有较大的上风。通过 MySQL 的简朴复制功能,可以很好的将数据从一台主机复制到另外一台 ,不光仅在局域网内可以复制,在广域网同样可以。
当然,很多人可能会说,其他的数据库同样也可以做到,不是只有 MySQL 有如许的功能。确实,很多数据库同样能做到,但是 MySQL 是免费的,其他数据库大多都是按照主机数量或者 cpu 数量来收费,当我们利用大量的 PC Server 的时间,License 费用相当惊人。以是第一个方案,基本上所有数据库体系都可以大概实现,但是其高昂的成本不是每一个公司都可以大概承担的。
4、嵌入式体系
嵌入式环境对软件体系最大的限制是硬件资源非常有限,在嵌入式环境下运行的软件体系,必须是轻量级低消耗的软件。
MySQL 在资源的利用方面的伸缩性非常大,可以在资源非常充裕的环境下运行,也可以在资源非常少的环境下正常运行。它对于嵌入式环境来说,是一种非常合适的数据库体系,而且 MySQL 有专门针对于嵌入式环境的版本。
并且,MySQL 的定位是通用数据库,各种范例的应用一样平常都能利用到 MySQL 存取数据的上风。业内生产实践证明,MySQL 更适合中小型企业。以目前的软硬件产品程度来看,假如数据凌驾几个 TB 将难以高效利用 MySQL。
MySQL 可以作为传统的关系型数据库产品利用,也可以当作一个 key-value 产品来利用。由于它具有优秀的劫难恢复功能,因此相对于目前市场上的一些 key-value 产品会更有上风。
6.学MySQL前,需要相识这些数据库专业术语
SQL(Structured Query Language,布局化查询语言)是用来操纵关系型数据库的语言,利用 SQL 可以对数据库和表举行添加、删除、修改和查询等操纵。
与其它盘算机语言一样,初次接触 SQL 的人肯定会以为它很希奇。比方,在创建表时,很多人都会把表与图表或图片接洽起来,但是 MySQL 不是如许的。在 MySQL 中创建表时,你必须输入类似下面如许的内容。
CREATE TABLE student (
id int(4),
name varchar(20),
age int(4),
stuno int(11),
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
假如你对 SQL 还不太认识,可能会对以上语句心生畏惧。不过请放心,随着教程的深入学习,你会很快的熟练利用 SQL,并且对上述 SQL 语句的看法也会悄然地发生变化。它不再是一组怪诞地表达,而是一种有助于信息形貌的强大工具。
7.MySQL客户端和服务器架构(C/S架构)
客户端-服务器(Client/Server)布局简称 C/S 布局,是一种网络架构,通常在该网络架构下的软件分为客户端和服务器。
服务器是整个应用体系资源的存储和管理中心,多个客户端分别各自处置处罚相应的功能,共同实现完备的应用。在客户/服务器布局中,客户端用户的哀求被传送到数据库服务器,数据库服务器举行处置处罚后,将结果返回给用户,从而减少网络数据的传输量。
用户在利用应用程序时,首先启动客户端,然后通过相关命令告知服务器举行连接以完成各种操纵,而服务器则按照此请示提供相应的服务。每一个客户端软件的实例都可以向一个服务器或应用程序服务器发出哀求。
客户端和服务器程序通常不在同一台盘算机上运行,比如,我们平时在当当网上买书的时间,所利用的电脑和网页欣赏器就被当做了一个客户端,同时,构成当当网的电脑、数据库和应用程序就被当做服务器。
数据库管理体系可分为两类:一类是基于共享文件体系的数据库管理体系,比方 Microsoft Access 和 FileMaker,重要用于桌面用途,不适合用于高端或更关键的应用;另一类是基于客户端-服务器的数据库管理体系,比方 MySQL、Oracle 和 SQL Server 等数据库。
服务器软件负责访问和处置处罚所有数据的一个软件,这个软件运行在称为数据库服务器的盘算机上,并且与数据文件打交道的只有服务器软件。
关于数据的添加、删除和更新等所有的哀求都由服务器完成。这些哀求来自于运行客户端的盘算机。客户端用来和用户打交道。比方,假如你哀求一个按字母顺序列出的产品表,则客户端会通过网络提交该哀求给服务器,服务器处置处罚这个哀求,然后根据需要对数据举行过滤、丢弃和排序,最后把结果返回到客户端。
注意:客户端和服务器可以安装在两台盘算机或一台盘算机上,不管它们在不在相同的盘算机上,客户端都要与服务器举行通信。
以上这些过程对用户都是透明的,你不需要直接访问数据文件。为了利用MySQL,你需要访问运行 MySQL 服务器的盘算机和发布命令到 MySQL 客户端的盘算机。
对于 MySQL 数据库管理体系,服务器为MySQL DBMS。你可以在当地安装的副本上运行,也可以连接到运行在你具有访问权的远程服务器上的一个副本。
客户端可以是 MySQL 提供的工具(如 MySQL Workbench、SQLyog)、脚本语言(如Perl)、Web 应用开发语言(如ASP、ColdFusion、JSP 和 PHP)和程序设计语言(如 C、C++、Java)等。
8.明白了MySQL内部布局才能成为高手!
麻雀虽小,五脏俱全。MySQL 虽然以简朴著称,但其内部布局并不简朴,本节重要介绍 MySQL 的整体架构构成。
学习 MySQL 就好比盖房子,假如想把房子盖的特殊高,地基肯定要稳,基础肯定要牢固。学习 MySQL 数据库前要先相识它的内部布局,这是学好 MySQL 数据库的前提。
MySQL 由连接池、SQL 接口、解析器、优化器、缓存、存储引擎等构成,可以分为三层,即 MySQL Server 层、存储引擎层和文件体系层。MySQL Server 层又包罗连接层和 SQL 层。如下是官方文档中 MySQL 的基础架构图:
查询优化器对 SQL 举行改写和相应的优化,并生成最优的实验筹划,就可以调用程序的 API 接口,通过存储引擎层访问数据。
Management Services & Utilities、SQL Interface、Parser、Optimizer 和 Caches & Buffers 属于 SQL 层,详细说明如下表所示。
名称说明Management Services & UtilitiesMySQL 的体系管理和控制工具,包罗备份恢复、MySQL 复制、集群等。SQL Interface(SQL 接口)用来接收用户的 SQL 命令,返回用户需要查询的结果。比方 SELECT FROM 就是调用 SQL Interface。Parser(查询解析器)在 SQL 命令传递到解析器的时间会被解析器验证和解析,以便 MySQL 优化器可以识别的数据布局或返回 SQL 语句的错误。Optimizer(查询优化器)SQL 语句在查询之前会利用查询优化器对查询举行优化,同时验证用户是否有权限举行查询,缓存中是否有可用的最新数据。它利用“选取-投影-连接”计谋举行查询。 比方 SELECT id, name FROM student WHERE gender = "女";语句中,SELECT 查询先根据 WHERE 语句举行选取,而不是将表全部查询出来以后再举行 gender 过滤。SELECT 查询先根据 id 和 name 举行属性投影,而不是将属性全部取出以后再举行过滤,将这两个查询条件连接起来生成最终查询结果。Caches & Buffers(查询缓存)假如查询缓存有掷中的查询结果,查询语句就可以直接去查询缓存中取数据。这个缓存机制是由一系列小缓存构成的,比如表缓存、记录缓存、key 缓存、权限缓存等。 3. 存储引擎层
Pluggable Storage Engines 属于存储引擎层。存储引擎层是 MySQL 数据库区别于其他数据库最焦点的一点,也是 MySQL 最具特色的一个地方。重要负责 MySQL 中数据的存储和提取。
因为在关系数据库中,数据的存储是以表的情势存储的,以是存储引擎也可以称为表范例(即存储和操纵此表的范例)。
4. 文件体系层
文件体系层重要是将数据库的数据存储在操纵体系的文件体系之上,并完成与存储引擎的交互。
说明:学习阅读完本节内容,相识 MySQL 体系布局即可,教程后面会详细介绍每个模块。
9.如何学习数据库(新手必看)?
很多初学者在数据库学习的时间,由于学习难度较大,每每不知所措,容易打击学习的自信心,没有了学习的兴趣,这些都是难以克制的。下面重要介绍作为初学者应该怎么学习 MySQL。
初学者学习 MySQL 必须掌握的知识点如下:
MySQL 服务和 MySQL 数据库差别,MySQL 服务是一系列的配景历程,而 MySQL 数据库则是一系列的数据目次和数据文件。MySQL 数据库必须在 MySQL 服务启动之后才可以举行访问。本节重要介绍如何启动 MySQL 服务。
Windows 体系下启动克制 MySQL 服务的方式重要有以下两种:
通过盘算机管理方式
通过命令行方式
通过盘算机管理方式
通过 Windows 的服务管理器检察修改,步骤如下:
步骤 1):在桌面上右击“此电脑”→“管理”命令,如图所示。