MySQL入门(一)
最近一直都在搞新员工的培训材料,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用户眼红。
四 Linux还是Windows?
我现在就是用Windows来写这篇博文的,但是我还是觉得Linux在服务器领域远远好于Windows。
其实我最近和很多网友交流过,发现很多人学习MySQL的时候还是首先会选择Windows,在我推荐使用Linux时很多人都会抱怨Linux的GUI太差了,安装软件也非常复杂,实在是不想用。实际上从入门学习的角度上说,用Windows也是可以的,不过很多DBA每天不止是写写SQL,还要搞很多操作系统和网络上的事情,所以还是直接用Linux比较好。我最开始学习Linux的时候也天天骂为什么不能把操作系统做的好用一点,不过后来熟悉了觉得挺好用的,有时候写个Shell还是挺高效的。
学习Linux可以从Ubuntu入手,这个版本的GUI做的很不错,现在很多公司的系统采用了RHEL或者CentOS,学习的时候也可以看看,和Ubuntu大同小异。推荐一本书:《鸟哥的Linux私房菜》,只看第一卷就可以了,基本上学会了就可以把Linux作为日常工作系统了。
我以前看到过一些资料,说是MySQL在Linux上的性能更好,Windows的版本也是后来某个版本才开始优化了,不知道这个说法是否成立,我姑且信之。不过有个点可以作为参考,就是Percona公司的Percona Server就根本没有Windows版本。
所以最好还是从开始学习就用Linux吧,毕竟一个DBA得杂学操作系统和网络。
--------------------------------------------------------------------------------
今天写了一些基本概念和MySQL的历史,这些我们也是需要理解和知道的,对一个DBA来说这些知识只有好处没有坏处。今天躺着写的,没有鼠标不是很方便,所以写的比较简略。