《MySQL DBA修炼之道》——第1章 理解MySQL 1.1MySQL 介绍

第1章 理解MySQL

本章将介绍MySQL的一些常识,以及目前MySQL的发展现状。然后简要说明MySQL的基础架构、存储引擎、运行机制,以及工作中应该如何使用MySQL,为后面章节的学习做个铺垫。

1.1 MySQL介绍

1.1.1 应用领域和适用场景
MySQL是目前世界上最流行的开源关系数据库。在国内,MySQL大量应用于互联网行业,比如,大家所熟知的百度、腾讯、阿里、京东、网易、新浪等都在使用MySQL。搜索、社交、电商、游戏后端的核心存储往往都是MySQL,有的具有上千台甚至几千台MySQL数据库主机。可以说,支撑互联网公司日常运转的主要数据库就是MySQL。近年来,随着业务的发展,互联网公司产生了许多成熟的架构和技术,这也促使MySQL不断变得更加成熟和稳健。但MySQL的应用并未局限于互联网应用,许多软件开发商也把MySQL集成到了自己的产品中,这样一来,传统行业的大公司也都可以在企业内部大量使用MySQL存储企业数据了,包括政府信息系统,同样也在大量使用MySQL数据库。
MySQL的定位是通用的数据库,各种类型的应用一般都能利用到MySQL存取数据的优势。业内生产实践也证明,MySQL更适合中小型数据库、OLTP业务,以目前的软硬件产品水平来看,如果单机数据超过几个TB将难以高效利用MySQL。
MySQL可以作为传统的关系型数据库产品使用,也可以当作一个key-value产品来使用,由于它具有优秀的灾难恢复功能,因此相对于目前市场上的一些key-value产品会更有优势。
我们所说的MySQL更适合OLTP业务、中小型数据库,并不是说MySQL仅限于此,数据的存储往往是一个架构问题,如果配合架构,MySQL也是可以存储海量数据的。海量数据没有一个明确的标准,对于MySQL来说,我们可以简单地认为海量数据是指单个实例难以处理的几十亿以上的数据。不过,MySQL对于海量数据的分析就不擅长了,你可能还需要其他产品来协助解决这方面的问题。一般而言,中小型公司最佳的选择仍然是MySQL,毕竟在这类公司里,海量数据并不常见。下面让我们来看看部分知名互联网公司的MySQL主机规模,一些公开资料显示如下。
Facebook 2008年有10 000台服务器,其中包括1800台MySQL服务器,到2013年已经突破了20万台服务器,按40?∶?1计算,MySQL服务器至少也有五千台了。
Twitter 早在2011年就有2000~4000台服务器,绝大部分数据后端的持久化存储都是MySQL服务器。
对于国内的几大互联网公司,如阿里、百度、腾讯,依据公开的信息,它们均有千台以上MySQL服务器的规模。
这些大型互联网公司都注重使用MySQL,而且往往也在内部维护了一个MySQL的分支,同时它们也积极参与到MySQL社区,促使MySQL不断改进。
1.1.2 为什么那么多公司和机构选择使用MySQL
它们选择使用MySQL的主要原因有以下两点。
低成本、高效能。
处于起步阶段的团队、小公司需要一个开放的系统来适应发展的需要。
互联网公司,特别是处于起步阶段的公司,需要一个低成本的系统来构建服务,从而可以把更多的资金用于业务的扩张。LAMP(其中的“M”指的就是MySQL)的组合已被广泛应用——目前世界上的大部分网站使用的都是LAMP(或者LNMP)组合。由于它是免费的,LAMP自然就成了第一选择,一般而言,选择成熟可靠、使用人数广泛的产品,公司的技术风险也会大大降低。同时MySQL是一个开放的系统,源代码开放,社区成熟活跃,在公司发展壮大的过程中,可以不断从外部获取成熟的思想和解决方案。可以说MySQL已经构建了成熟的生态圈,使用它的人往往能得到许多益处,而且相对于目前市场上的其他产品,MySQL也具备许多优势。
一些公司出于节省成本和扩展性的考虑,尝试把某些业务从商业数据库迁移到MySQL上,比如阿里,由于数据库集群的规模巨大,传统的基于小型机和高端的存储架构难以扩展,且支出成本庞大,所以把大部分业务逐步迁移到PC服务器的MySQL集群上,成功地降低了成本。
1.1.3 MySQL的优势是什么,它解决了什么问题
MySQL是一个轻量级的通用关系型数据库,具有稳定、易安装、易使用、高性能等特点,可配合架构进行扩展。它的安装包不大,百MB级别,安装简单方便,入门也很简单,而一些商业化的关系型数据库产品往往安装包庞大,且配置使用复杂,需要开发人员或DBA花费几倍的时间去掌握产品的使用。
MySQL起初也有很多Bug,而且不太稳定,但经过十多年的发展,目前的MySQL(5.0/5.1)已经很稳定了。新的5.5/5.6/5.7也发布了GA版本,正在持续完善中,截至2015年年底,我们可以看到MySQL 5.1/5.5已经大量应用于生产环境了。
此外,MySQL也是一个高性能的产品,它不仅适用于中小型公司,还能稳定高效地处理大数据。业内存在一种误解,认为MySQL的扩展性不好,若超过一定的数据量时,性能就会下降。其实这更多的是一个架构问题,配合成熟的架构,比如在应用层切分数据,MySQL的扩展性就不再是什么问题了,而且很多数据是能够分片到各个MySQL节点的。Facebook、Twitter、Google等都在大量使用MySQL存储海量数据。
一些人倾向于用NoSQL产品来存储数据,其实,NoSQL产品,特别是一些key-value单机产品,相对于MySQL来说并没有什么优势。MySQL同样可以把数据存储为key-value的形式,并且,NoSQL的产品还不是很稳定,一旦数据丢失就可能会导致很严重的损失,又往往因为数据模型简单,所以应用范围狭小。MySQL成熟稳定且拥有丰富的数据类型,它的关系模型可以满足项目不断增加的商业需求。

时间: 2024-10-27 18:46:56

《MySQL DBA修炼之道》——第1章 理解MySQL 1.1MySQL 介绍的相关文章

《MySQL DBA修炼之道》——1.4 MySQL权限

1.4 MySQL权限 1.4.1 MySQL权限机制 MySQL权限控制包含如下两个阶段. 阶段1:服务器检查是否允许你连接. 阶段2:假定你能连接,服务器将检查你发出的每一个请求,查看你是否有足够的权限实施它.例如,如果你从数据库表中选择(SELECT)行或从数据库中删除表,那么服务器要确定你是否对表有SELECT权限或对数据库有DROP权限. MySQL是通过用户名.密码.IP(主机名) 3个要素来验证用户的.当你想要访问MySQL服务器时,MySQL客户端程序一般会要求你指定如下参数.

《MySQL DBA修炼之道》——1.2MySQL 的基础架构和版本

第1章 理解MySQL 1.2MySQL 的基础架构和版本 1.2.1 软件架构中数据库的定位 数据库一般位于整个软件架构的后端,而不直接服务于用户,数据的展示.应用逻辑的处理都是由其他层次的程序来实现的.比较流行的一种软件架构的分类是"双层"."三层"."多层"架构.客户端直接和数据库服务器通信,比如通过ODBC.JDBC连接数据库,一般称为"双层架构"或"client-server"架构.若客户端和数据

《MySQL DBA修炼之道》——导读

前言 为什么要写本书 本书主要讲述MySQL DBA的必备技能,包括MySQL的安装部署.开发.测试.监控和运维,此外,读者还可从中学习到系统架构的一些知识. 我从业10多年,先是在传统行业做开发工程师.系统管理员.Oracle DBA,2008年因为机缘巧合投身互联网,开始从事MySQL运维工作.相对于成熟的商业数据库,MySQL缺乏高质量的技术文档和图书,我在接触MySQL的过程中,也感觉市面上的相关图书还存在一些不足,难以系统化地学习MySQL. 从一名Oracle DBA转型为一名MyS

《MySQL DBA修炼之道》——3.4 PHP开发

3.4 PHP开发 3.4.1 概述 一般的流行语言,如PHP.C.Perl.Java都对MySQL提供了完善支持,这其中PHP是最常用的使用MySQL数据库的语言,互联网普遍使用的是LAMP/LNMP架构,这里的P可以理解为就是PHP,可以说PHP的应用范围相当广泛,尤其是在Web程序的开发上,比如,我们熟知的Facebook,就是PHP.MySQL的重度使用者.作为互联网开发者,我们有必要熟悉MySQL在各种语言环境下的使用,尤其是PHP. 以下简要介绍PHP与MySQL开发,PHP(全称为

《MySQL DBA修炼之道》——2.5 常用命令

2.5 常用命令 本节先介绍几个常用命令,如mysql.mysqladmin.mysqldump的简单用法.后续章节还会再详述这些命令的使用.2.5.1 使用mysql命令 首先,需要留意区分MySQL的大小写.标准的说法是,MySQL指MySQL服务器,mysql指客户端. 从Unix/Linux系统下发展出来的MySQL有着优良的设计,客户工具的所有选项都可以保存到一个"-/.my.cnf"的用户级配置文件里的[client]部分中,而且它把适用于MySQL的选项集中在了[MySQ

《MySQL DBA修炼之道》——3.7 字符集和国际化支持

3.7 字符集和国际化支持 3.7.1 什么是字符集 字符集(character set)是一套符号和编码.校对规则(collation)是在字符集内用于比较字符的一套规则,即字符集的排序规则. 假设我们有一个字母表使用了4个字母:'A'.'B'.'a'.'b'.现在为每个字母赋予一个数值:'A'=0,'B'= 1,'a'= 2,'b'= 3,字母'A'是一个符号,数字0是'A'的编码,那么这4个字母和它们的编码组合在一起就是一个字符集.我们可以认为字符集是字符的二进制的编码方式,即二进制编码到

《MySQL DBA修炼之道》——3.3 SQL基础

3.3 SQL基础 SQL是一种高级查询语言,它是声明式的,也就是说,只需要描述希望怎么获取数据,而不用考虑具体的算法实现.3.3.1 变量 MySQL里的变量可分为用户变量和系统变量.1.用户变量 用户变量与连接有关.也就是说,一个客户端定义的变量不能被其他客户端看到或使用.当客户端退出时,该客户端连接的所有变量将自动释放.这点不同于在函数或存储过程中通过DECLARE语句声明的局部变量,局部变量的生存周期在它被声明的"BEGIN-END"块内.对于用户变量的值,可以先保存在用户变量

《MySQL DBA修炼之道》——1.8 一些基础概念

1.8 一些基础概念 为了方便后续阅读,让大家对部分概念的理解保持一致,从而更好地理解书中的内容,这里有必要先对下面的这些概念进行阐述.1. MySQL Server.MySQL实例.MySQL数据库 MySQL数据库指的是实际存在的物理操作系统文件的集合,也可以指逻辑数据的集合.为了访问.处理数据,我们需要一个数据库管理系统,也就是MySQL Server(也称为MySQL服务器). MySQL实例指的是MySQL进程及其所持有的内存结构,我们对数据的操作实际上是通过MySQL实例来访问物理数

《MySQL DBA修炼之道》——2.4 安装InnoDB Plugin

2.4 安装InnoDB Plugin 对于MySQL 5.0.MySQL 5.1版本,有时我们可能会想要安装InnoDB Plugin,因为它较之Built-in版本新增了一些特性.而且一些性能测试也表明,InnoDB Plugin的性能.伸缩性明显优于MySQL 5.1里内置的InnoDB.不过,在这么做之前要先留意一下不同的InnoDB Plugin版本和MySQL版本的兼容性.对于源代码编译的MySQL,一般可以用编译的InnoDB代替内建的InnoDB,但是二进制版本的InnoDB插件