最近一直都在搞新员工的培训材料,MySQL的培训PPT我居然写了100多页,我都佩服我自己的毅力了。不如现在把这些总结一下,慢慢写到博客里,供入门者参考。
一 关系型数据库
关系型数据库的理论提出于上世纪七十年代,由IBM的研究员E.F.Codd的论文提出。
关系型数据库的理论基础可以参考王珊和萨师煊编著的经典教材《数据库系统概论》。我就不在这里写了,这些理论性太强,作为快速入门的教程也不应该说这些,但是这些理论就像是武功里的易筋经一样,练了以后什么功夫都学得快。
二 数据库的基本概念
以前玩儿Oracle的时候加了一个群,发现很多人写了好久的PL/SQL,但是还是搞不明白什么叫数据库,什么叫做实例。我觉得,虽然不知道这些还是可以写PL/SQL,但是如果想成为一个DBA,基本概念还是一定要清楚的,就像是练功还是要先扎马步一样,下盘不稳总是容易倒下嘛。
数据库(database):指的是文件系统上的一组文件,在innoDB中表现为后缀为idb的文件。
实例(instance):指的是操作系统上的一组进程/线程和内存的集合。如果在MySQL服务器上执行ps -ef | grep mysql,就能看见MySQL的进程了。
简单地说,数据库指的是文件,实例指的是进程/线程和内存。
平时我们说的数据库,很多的时候指的是关系型数据库管理系统(RDBMS),这些概念在严谨的文档中是要严格区分的,但是在平时的交流中,基本上大家约定俗成的说法是没有问题的。
至于数据库的其他一些概念:表,行,列,视图和索引等等,这些以后慢慢讲吧。
三 MySQL数据库概述
MySQL最开始是创始人Monty觉得别人的数据库不好使,自己写出来服务自己的(Linux是当年Linus觉得Minix只能用在教学,为了更好地学操作系统写出来的),不得不说这些人牛。
后来,他成立了MySQL AB公司,开发用于商用的MySQL。之后公司被大名鼎鼎的Sun收购,在Sun时期,MySQL推出了5.1版本,这个版本我用了好久,堪称难用,尤其是和后来的5.5比起来,简直是太难用了。
2009年,MySQL随着Sun一起被Oracle收购,随后Oracle推出了5.5版本,我个人觉得这个版本真的是里程碑版本了,当年我们从5.1升级到5.5的时候,性能好的真的是让我都快流泪了,尤其是比5.1完善的多的分区表,简直是当年我做数据仓库的福音。
后来,我们迎来了5.6和5.7版本, 这些版本大幅提高了并发能力和复制的性能,尤其是5.7的并行复制功能,理论上解决了一直存在的复制延迟问题。我确实感觉到,Oracle公司在数据库领域的领先确实不是其他公司可以比拟的。
当然,开源软件,尤其是好的开源软件总是有分支的。MySQL最大的分支就是Percona Server和MariaDB了。Percona Server专注于性能的提升,其推出的XtraDB引擎就是innoDB的加强版;MariaDB则会引进更多的新特性,尤其是MariaDB率先推出的并行复制功能,着实让官方MySQL用户眼红。
--------------------------------------------------------------------------------
今天写了一些基本概念和MySQL的历史,这些我们也是需要理解和知道的,对一个DBA来说这些知识只有好处没有坏处。今天躺着写的,没有鼠标不是很方便,所以写的比较简略。