没有合适的资源?快使用搜索试试~ 我知道了~
MySQL性能调优与架构设计--全册.pdf
需积分: 10 3 下载量 68 浏览量
2012-09-14
15:36:19
上传
评论
收藏 3.05MB PDF 举报
温馨提示
MySQL性能调优与架构设计--全册,通往Mysql高手之路的良好选择阅读书籍。
资源推荐
资源详情
资源评论
第 1
1
1
1 章 MySQL
MySQL
MySQL
MySQL 基本介绍
前言:
作为最为流行的开源数据库软件之一, MySQL 数据库软件已经是广为人知了。 但是为 了
照顾对 MySQL 还不熟悉的读者,这章我们将对 MySQL 做一个简单的介绍。主要内容包括
MySQL 各功能模块组成,各模块协同工作原理, Query 处理的流程等。
1
1
1
1 .
.
.
. 1
1
1
1 MySQL
MySQL
MySQL
MySQL Server
Server
Server
Server 简介
简介
简介
简介
1.1.1
1.1.1
1.1.1
1.1.1 什么是 MySQL
MySQL
MySQL
MySQL
MySQL 是由 MySQL AB 公司 (目前已经被 SUN 公司收归麾下) 自主研发的, 目前 IT 行 业
最流行的开放源代码的数据库管理系统之一, 它同时也是一个支持多线程高并发多用户的 关
系型数据库管理系统。
MySQL 数据库以其简单高效可靠的特点, 在最近短短几年的时间就从一个名不见经传 的
数据库系统,变成一个在 IT 行业几乎是无人不知的开源数据库管理系统。从微型的嵌入式
系统,到小型的 web 网站,至大型的企业级应用, 到处都可见其身影的存在。为何一个开 源
的数据库管理系统会变得如此的流行呢?在我 2003 年第一次接触 MySQL 之前,也是非常的
纳闷?或许在我大概的向您介绍一下其发展历程之后,心中的这个问题就会消失了。
1.1.2
1.1.2
1.1.2
1.1.2 艰难诞生
1985 年,瑞典的几位志同道合小伙子(以 David Axmark 为首 ) 成立了一家公司, 这
就是 MySQL AB 的前身。这个公司最初并不是为了开发数据库产品,而是在实现他们想法的
过程中, 需要一个数据库。 他们希望能够使用开源的产品。 但在当时并没有一个合适的选
择,
没办法,那就自己开发吧。
在最初, 他们只是自己设计了一个利用索引顺序存取数据的方法, 也就是
ISAM
( Inde xed
Sequential Access Method ) 存储引擎核心算法的前身, 利用 ISAM 结合 mSQL 来实现他们 的
应用需求。 在早期, 他们主要是为瑞典的一些大型零售商提供数据仓库服务。 在系统使用 过
程中,随着数据量越来越大,系统复杂度越来越高, ISAM 和 mSQL 的组合逐渐不堪重负。 在
分析性能瓶颈之后,他们发现问题出在 mSQL 上面。不得已,他们抛弃了 mSQL ,重新开发 了
一套功能类似的数据存储引擎,这就是 ISAM 存储引擎。大家 可能已经注意到他们当时的 主
要客户是数据仓库, 应该也容易理解为什么直至现在, MySQL 最擅长的是查询性能, 而不 是
事务处理(需要借助第三方存储引擎) 。
软件诞生,自然该给她取一个好听并且容易记住的名字。时至今日, MySQL AB 仍然没
有公布当初为什么给这个数据库系统取名为 MySQL 。据传 MySQL 是取自创始人之一 Monty
Widenius 的女儿的名字或许大家会认为这仅仅是我的猜测,不以为然,其实也并不是完全
没有根据的。大家或许知道 MySQL 最近正在研发的用来替代 MyISAM 存储引擎的新一代存储
引擎产品 Maria
, 为什么叫
Maria? 笔者对这个问题也比较感兴趣, 曾经和 MySQL 前 CTO
David 沟通过。得到的答案是, Maria 是以他小女儿的名字命名的。看来,这是几
位 MySQL 的创始人 为自己的软件命名的一个习惯。
在 MySQL 诞生之初, 其功能还非常粗糙, 和当时已经成熟稳定运营多年的商业数据库 管
理系统完全不能比。 MySQL 之所以能够成功,和几个创始人最初采用的策略关系非常大。
1.1.3
1.1.3
1.1.3
1.1.3 寻求发展
MySQL 诞生的时候, 正是互联网开始高速发展的时期。 MySQL AB 通过优化 MySQL 满足 了
互联网开发用者对数据库产品的需求: 标准化查询语言的支持, 高效的数据存取, 不必关 注
事务完整性, 简单易用, 而且成本低廉。 当时大量的小公司都愿意采用 MySQL 作为数据库 应
用系统的数据库管理系统,所以 MySQL 的用户数量不断的增长,进一步促进了 MySQL 自身
的不断改进和完善,进入了一个非常好的良性循环。
合理地把握需求, 准确地定位目标客户, 为 MySQL 后面的发展铺平了道路。 我们看到
,
MySQL 一开始就没有拿大型的企业管理软件的数据库系统来定位自己,没有将所有的 IT 行
业定位为自己的目标用户, 而是选择的当时并不受重视的一小部分 Web 开发者作为自己的 客
户来重点培养发展。这种做法或许值得我们的 IT 企业学习。
1.1.4
1.1.4
1.1.4
1.1.4 巨人崛起
可以说, 正是 MySQL 最初抓住了互联网客户, 造就了今天 MySQL 在互联网行业的巨大 成
功。当然, MySQL 的高速发展,同时也离不开另外一个很关键的因素,那就是开放源代码。
在 2000 年的时候, MySQL 公布了自己的源代码,并采用 GPL ( GNU General Public
License )许可协议, 正式进入开源世界。虽然在当时的环境下,开源还没有现在这样流行
,
但是那是开源世界开始真正让大多数世人所接受并开始推崇的起步阶段。 当然 MySQL 的成 功
并不仅仅是因为以上的这些原因, 但我们不能否认正是 MySQL 这一战略性质的策略让 MySQ L
在进一步拓展自己的客户群 的路上一路东风。此后 MySQL 的发展路程我想就不需要我继续
再次罗嗦了, 因为基本上都可以从 MySQL 的官方网站 ( http: //www.mysql.com ) 得到相应 的
答案。
1
1
1
1 .
.
.
. 2
2
2
2 MySQL
MySQL
MySQL
MySQL 与其他数据库的简单比较
与其他数据库的简单比较
与其他数据库的简单比较
与其他数据库的简单比较
前面我们简单介绍了 MySQL 的发展历程, 从中了解了 MySQL 快速崛起的必要的条件。 接
下来, 我们通过 MySQL 在功能, 性能, 以及其易用性方面和其他主流的数据库做一个基本 的
比较,来了解一下 MySQL 成为当下最流行的开源数据库软件的充分条件。
1.2.1
1.2.1
1.2.1
1.2.1 功能比较
作为一个成熟的数据库管理系统, 要满足各种各样的商业需求, 功能肯定是会被列入 重
点参考对象的。 MySQL 虽然在早期版本的时候功能非常简单,只能做一些很基础的结构化 数
据存取操作, 但是经过多年的改进和完善之后, 已经基本具备了所有通用数据库管理系统 所
需要的相关功能。
MySQL 基本实现了 ANSI SQL 92 的大部分标准, 仅有少部分并不经常被使用的部分没 有
实现。比如在字段类型支持方面,另一个著名的开源数据库 PostGreSQL 支持的类型是最完
整的,而 Oracle 和其他一些商业数据库,比如 DB2 、 Sybase 等,较 MySQL 来说也要相对少
一些。这一点,我们可以通过 TCX 的 crash-me 测试套件所得出的测试报告得知。在事务支
持方面,虽然 MySQL 自己的存储引擎并没有提供,但是已经通过第三方插件式存储引擎
Innodb 实现了 SQL 92 标准所定义的四个事务隔离级别的 全部, 只是在实现的过程中每一 种
的实现方式可能有一定的区别, 这在当前商用数据库管理系统中都不多见。 比如, 大家所 熟
知的大名鼎鼎的 Oracle 数据库就仅仅实现了其中的两种 ( Serializable 和 Read Commited
),
而 PostGreSQL ,同样支持四种隔离级别。
不过在可编程支持方面, MySQL 和其他数据库相比还有一定的差距, 虽然最新版的 MyS QL
已经开始提供一些简单的可编程支持,如开始支持 Procedure , Function , Trigger 等, 但
是所支持的功能还比较有限, 和其他几大商用数据库管理系统相比, 还存在较大的不足。 如
Oracle 有强大的 PL/SQL , SQL Server 有 T-SQL , PostGreSQL 也有功能很完善的 PL/PGSQL
的支持。
整体来说, 虽然在功能方面 MySQL 数据库作为一个通用的数据库管理系统暂时还无法 和
PostGreSQL 相比,但是其功能完全可以满足我们的通用商业需求,提供足够强大的服务。
而且不管是哪一种数据库在功能方面都不敢声称自己比其他任何一款商用通用数据库管理
系统都强, 甚至都不敢声称能够自己拥有某一数据库产品的所有功能。 因为每一款数据库 管
理系统都有起自身的优势, 也有起自身的限制, 这只能代表每一款产品所倾向的方向不一 样
而已。
1.2.2
1.2.2
1.2.2
1.2.2 易用性比较
从系统易用性方面来比较, 每一个使用过 MySQL 的用户都能够明显地感觉出 MySQL 在 这
方面与其他通用数据库管理系统之间的优势所在。 尤其是相对于一些大型的商业数据库管 理
系统如 Oracle 、 DB2 以及 Sybase 来说,对于普通用户来说,操作的难易程度明显不处于一
个级别。 MySQL 一直都奉行简单易用的原则,也正是靠这一特性,吸引了大量的初级数据 库
用户最终选择了 MySQL 。也正是这一批又一批的初级用户,在经过了几年时间的成长之后,
很多都已经成为了高级数据库用户,而且也一直都在伴随着 MySQL 成长。
从安装方面来说, MySQL 安装包大小仅仅只有 100MB 左右, 这几大商业数据库完全不 在
一个数量级。 安装难易程度也要比 Oracle 等商业数据库简单很多, 不论是通过已经编译 好
的二进制分发包还是源码编译安装,都非常简单。
再从数据库创建来比较, MySQL 仅仅只需要一个简单的 CREATE DATABASE 命令,即可
在瞬间完成建库的动作, 而 Oracle 数据库与之相比, 创建一个数据库简直就是一个非常 庞
大的工程。当然,二者数据库的概念存在一定差别也不可否认。
1.2.3
1.2.3
1.2.3
1.2.3 性能比较
性能方面, 一直是 MySQL 引以为自豪的一个特点。 在权威的第三方评测机构多次测试 较
量各种数据库 TPCC 值的过程中, MySQL 一直都有非常优异的表现,而且在其他所有商用 的
通用数据库管理系统中,仅仅只有 Oracle 数据库能够与其一较高下。至于各种数据库详细
的性能数据, 我这里就不便记录, 大家完全可以通过网上第三方评测机构公布的数据了解 具
体细节信息。
MySQL 一直以来奉行一个原则,那就是在保证足够的稳定性的前提下,尽可能的提高 自
身的处理能力。 也就是说, 在性能和功能方面, MySQL 第一考虑的要素主要还是性能, MyS QL
希望自己是一个在满足客户 99% 的功能需求的前提下,花掉剩下的大部分精力来性能努力,
而不是希望自己是成为一个比其他任何数据库的功能都要强大的数据库产品。
1.2.4
1.2.4
1.2.4
1.2.4 可靠性
关于可靠性的比较, 并没有太多详细的评测比较数据, 但是从目前业界的交流中可以 了
解到, 几大商业厂商的数据库的可靠性肯定是没有太多值得怀疑的。 但是做为开源数据库 管
理系统的代表, MySQL 也有非常优异的表现,而并不是像有些人心中所怀疑的那样,因为 不
是商业厂商所提供,就会不够稳定不够健壮。从当前最火的 Facebook 这样大型的网站都是
使用 MySQL 数据库,就可以看出, MySQL 在稳定可靠性方面,并不会比我们的商业厂商的 产
品有太多逊色。 而且排在全球前 10 位的大型网站里面, 大部分都有部分业务是运行在 MyS QL
数 据库环境上,如 Yahoo , Google 等。
总的来说, MySQL 数据库在发展过程中一直有自己的三个原则:简单、高效、可靠。 从
上面的简单比较中, 我们也可以看出, 在 MySQL 自己的所有三个原则上面, 没有哪一项是 做
得不好的。 而且, 虽然功能并不是 MySQL 自身所追求的三个原则之一, 但是考虑到当前用 户
量的急剧增长,用户需求越来越越多样化, MySQL 也不得不在功能方面做出大量的努力, 来
不断满足客户的新需求。比如最近版本中出现的 Eent Scheduler (类似于 Oracle 的 Job 功
能) ,
Partition 功能,自主研发的 Maria 存储引擎在功能方面的扩展, Falcon 存储引擎对
事务的支持等等,都证明了 MySQL 在功能方面也开始了不懈的努力。
任何一种产品, 都不可能是完美的, 也不可能适用于所有用户。 我们只有衡量了每一 种
产品的各种特性之后,从中选择出一种最适合于自身的产品。
1
1
1
1 .
.
.
. 3
3
3
3 MySQL
MySQL
MySQL
MySQL 的主要适用场景
的主要适用场景
的主要适用场景
的主要适用场景
据说目前 MySQL 用户已经达千万级别了, 其中不乏企业级用户。 可以说是目前最为流 行
的开源数据库管理系统软件了。 任何产品都不可能是万能的, 也不可能适用于所有的应用 场
景。那么 MySQL 到底在什么场景下适用什么场景下不适用呢?
1 、 Web 网站系统
Web 站点,是 MySQL 最大的客户群,也是 MySQL 发展史上最为重要的支撑力量,这一 点
在最开始的 MySQL Server 简介部分就已经说明过。
MySQL 之所以能成为 Web 站点开发者们最青睐的数据库管理系统, 是因为 MySQL 数据 库
的安装配置都非常简单,使用过程中的维护也不像很多大型商业数据库管理系统那么复杂,
而且性能出色。还有一个非常重要的原因就是 MySQL 是开放源代码的,完全可以免费使用。
2 、日志记录系统
MySQL 数据库的插入和查询性能都非常的高效,如果设计地较好,在使用 MyISAM 存储
引擎的时候, 两者可以做到互不锁定, 达到很高的并发性能。所以,对需要大量的插入和 查
询日志记录的系统来说, MySQL 是非常不错的选择。 比如处理用户的登录日志, 操作日志
等,
都是非常适合的应用场景。
3 、数据仓库系统
随着现在数据仓库数据量的飞速增长, 我们需要的存储空间越来越大。 数据量的不断 增
长, 使数据的统计分析变得越来越低效, 也越来越困难。 怎么办?这里有几个主要的解决 思
路, 一个是采用昂贵的高性能主机以提高计算性能, 用高端存储设备提高 I/O 性能, 效果 理
想,但是成本非常高;第二个就是通过将数据复制到多台使用大容量硬盘的廉价 pc serve r
上, 以提高整体计算性能和 I/O 能力, 效果尚可, 存储空间有一定限制, 成本低廉; 第三
个,
通过将数据水平拆分, 使用多台廉价的 pc server 和本地磁盘来存放数据, 每台机器上面 都
只有所有数据 的一部分, 解决了数据量的问题, 所有 pc server 一起并行计算, 也解决了 计
算能力问题, 通过中间代理程序调配各台机器的运算任务, 既可以解决计算性能问题又可 以
解决 I/O 性能问题,成本也很低廉。在上面的三个方案中,第二和第三个的实现, MySQL 都
有较大的优势。 通过 MySQL 的简单复制功能, 可以很好的将数据从一台主机复制到另外一
台,
不仅仅在局域网内可以复制,在广域网同样可以。当然, 很多人可能会说, 其他的数据库 同
样也可以做到,不是只有 MySQL 有这样的功能。 确实,很多数据库同样能做到,但是 MySQ L
是免费的,其 他数据库大多都是按照主机数量或者 cpu 数量来收费,当我们使用大量的 pc
server 的时候, license 费用相当惊人。第一个方案,基本上所有数据库系统都能够实现,
剩余301页未读,继续阅读
资源评论
qingrx
- 粉丝: 5
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- GST-FH-N8001防火门监控器说明书
- 基于SpringBoot+Vue的校园招聘管理系统(前端代码)
- C++期末大作业-2024-QT仓库商品管理系统,经过老师审定过的,应该能够满足学习、使用需求,如果有需要的话可以放心下载使用
- DH-GSTN5600 剩余电流式电气火灾监控探测器 安装使用说明书
- 天津理工大学信息系统设计实验
- jsp ssm 学校录取查询系统 高校志愿填报录取 项目源码 web java【项目源码+数据库脚本+项目说明+软件工具】毕设
- jsp ssm 网上购物系统 在线购物 在线商城平台 项目源码 web java【项目源码+数据库脚本+项目说明+软件工具】毕设
- 29网课交单平台源码最新修复全开源版本
- jsp ssm 超市网上购物系统 超市管理 超市购物 项目源码 web java【项目源码+数据库脚本+项目说明+软件工具】毕
- 海湾火灾自动报警系统主要设备参数
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功