最近一直都在搞新员工的培训材料,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来说这些知识只有好处没有坏处。今天躺着写的,没有鼠标不是很方便,所以写的比较简略。

MySQL入门(一)的更多相关文章

  1. 21分钟 MySQL 入门教程(转载!!!)

    21分钟 MySQL 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数 ...

  2. MySQL入门02-MySQL二进制版本快速部署

    在上篇文章 MySQL入门01-MySQL源码安装 中,我们介绍了MySQL源码安装的方法. 源码安装虽然有着更加灵活和更加优化等诸多优势.但源码编译安装部署的过程相对复杂,而且整个过程所花费的时间很 ...

  3. MYSQL入门全套(第三部)

    MYSQL入门全套(第一部) MYSQL入门全套(第二部) 索引简介 索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构.如果想按特定职员的姓来查找 ...

  4. MySQL入门(三)

    写了两篇<MySQL入门>以后我发现,写书的人还是都挺有本事的,起码人家知道怎么编排自己想讲的知识点,我实在是不知道该先说那里后说哪里,那我就想到什么讲什么吧. 一 写SQL 其实我是不想 ...

  5. MySQL入门笔记

    MySQL入门笔记 版本选择: 5.x.20 以上版本比较稳定 一.MySQL的三种安装方式: 安装MySQL的方式常见的有三种: ·          rpm包形式 ·          通用二进制 ...

  6. MySQL入门转载

    21分钟 MySQL 入门教程 http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html 目录 一.MySQL的相关概念介绍 二.Wi ...

  7. mysql 入门 基本命令

    MYSQL入门学习之一:基本操作  1.登录数据库    www.2cto.com     命令:mysql -u username –p (mysql -h主机地址 -u用户名 -p用户密码)   ...

  8. MySQL入门笔记(一)

    一.数据类型 1. 整型 2. 浮点型 3. 字符型 4. 日期时间型 二.数据库操作 1. 创建库 CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_nam ...

  9. MySQL入门(上)

    1 课程回顾 自定义标签&编码实战 1)自定义标签步骤: 1.1 编写标签处理器类,继承SimpleTagSupport类,覆盖doTag方法 1.2 在WEB-INF目录下建立tld文件,在 ...

  10. 第二章 MySQL入门篇

    第一章 MySQL入门篇 一.MySql简介 简言: 和SQL Server数据库相同,MySQl也是一个关系型数据库管理系统.由瑞典的MySQL AB公司开发,2008年被SUN公司收购,2009年 ...

随机推荐

  1. HDU 1131 Count the Trees 大数计算

    题目是说给出一个数字,然后以1到这个数为序号当做二叉树的结点,问总共有几种组成二叉树的方式.这个题就是用卡特兰数算出个数,然后因为有编号,不同的编号对应不同的方式,所以结果是卡特兰数乘这个数的阶乘种方 ...

  2. 修改windows系统文件权限

    修改windows系统文件总是提示没有权限,虽然已是administrator也不管用. 以下方法可以解决: 右键属性,安全,高级,所有者,编辑,选择当前用户并确定, 回到上一页再确定, 然后在安全页 ...

  3. mysql与oracle常用函数及数据类型对比

    最近在转一个原来使用oracle,打算改为mysql的系统,有些常用的oracle函数的mysql实现顺便整理了下,主要是系统中涉及到的(其实原来是专门整理过一个详细doc的,只是每次找word麻烦) ...

  4. Nodejs与ES6系列4:ES6中的类

    ES6中的类 4.1.class基本语法 在之前的javascript语法中是不存在class这样的概念,如果要通过构造函数生成一个新对象代码 function Shape(width,height) ...

  5. CSS中的margin、border、padding区别

    CSS padding margin border属性详解 图解CSS padding.margin.border属性W3C组织建议把所有网页上的对像都放在一个盒(box)中,设计师可以通过创建定义来 ...

  6. go语言选择语句 switch case

    根据传入条件的不同,选择语句会执行不同的语句.下面的例子根据传入的整型变量i的不同而打印不同的内容: switch i { case 0: fmt.Printf("0") case ...

  7. win7系统下,vs2010一调式,vs就关闭要重启

    进入我的文档 %appdata%\Microsoft\VisualStudio, 将 10.0 重命名.网上找的方法有些问题,可能找这路径很难找到啊. 于是自己 找了找 一般都在当前用户文件夹下 Ap ...

  8. JavaScript实战-菜单特效

    以下是我自己用原生JS写的各种菜单特效,虽然网上一搜一大堆,但我还是喜欢自己来写一写! 这是上一篇:JavaScript实战(带收放动画效果的导航菜单) 下面是经过优化后的完整代码,优化了CSS样式. ...

  9. swift学习笔记之-类和结构体

    //类和结构体 import UIKit //类和结构体 /* 1.枚举enum.结构体struct和String.Array.Dictionary类型,都属于值传递类型,被赋值给新的常量或变量时传递 ...

  10. jQuery原型方法each使用和源码分析

    jQuery.each方法是jQuery的核心工具方法之一,通用例遍方法,可用于例遍对象和数组.不同于例遍 jQuery 对象的 $().each() 方法,此方法可用于例遍任何对象.通常需要两个参数 ...