MySQL简介以及MySQL中InnoDB 与 MyISAM 引擎的区别

MySQL

MySQL简介

数据库的产生
  • 为何有数据库?
    文件保存数据有以下缺陷:
    1.文件安全性问题
    2.不利于查询和管理
    3.不利于存储海量数据
    4.程序中使用不方便
  • 什么是数据库?
    综合以上文件存储的缺陷,专家们设计出更利于管理数据的东西----数据库,可以有效的管理数据,数据库水平是衡量一个程序员水平的重要指标。
  • 数据库的存储介质:
    1.磁盘
    2.内存
主流数据库
  • SQL Server :微软的产品, .Net程序员的最爱,中大型项目。
  • Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
  • MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商, SNS,论坛。对简单的SQL处理效果好。
  • PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
  • SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
  • H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。

MySQL数据安装

  • Centos 6.5下编译安装MySQL
  • CentOS 7 下编译安装MariaDB
  • Windows下安装MySQL5.7
  • CentOs 7 镜像下载
  • 提取码:zl1v
MySQL分类
  • DDL数据定义语言,用来维护存储数据的结构代表指令: create, drop, al ter
  • DML数据操纵语言,用来对数据进行操作代表指令: i nsert, del ete, update
  • DML中又单独分了一个DQL,数据查询语言,代表指令: sel ect
  • DCL数据控制语言,主要负责权限管理和事务代表指令: grant, revoke, commi t
查看数据引擎
show engines;
  • 现在默认使用MySQL创建库时候使用的引擎是 InnoDB
谈一谈MySQL中 InnoDB 与 MyISAM 引擎的区别
  • 在功能上的区别:

    1.事务支持:

    • MyISAM不支持事务,而InnoDB支持。InnoDB的AUTOCOMMIT默认是打开,即每一条SQL语句都会被默认封装成一个事务,自动提交。
    • MyISAM是非事务安全型的,而InnoDB是食物安全型的。

    2.存储结构:

    • MyISAM:每个MyISAM在磁盘上存储成三个文件,第一个文件类型后缀名.fem(以表的名字开始), 第二个文件后缀名 .MYD(MYData)(数据文件),第三个文件后缀名.MYI(MYIndex)(索引文件)
    • InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB之受限于操作系统的大小,一般是2GB。

    3.存储空间

    • MyISAM:可以压缩,但是存储空间较小。支持三种不同的存储格式:静态表,动态表,压缩表。
    • InnoDB:需要更多的内存河村春,他会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。

    4.可移植性备份及恢复

    • MySIAM:数据以文件形式存储,跨平台数据转移很方便。备份恢复时可单独对于某表进行操作。
    • InnoDB:可以拷贝数据文件,备份binlog,或者使用mysqldump,但是当数据量过大时就很难受了。

    5.事务支持

    • MySIAM:强调的是性能,操作具有原子性,执行效率比InnoDB快,但是不提供事务支持
    • InnoDB:提供事务支持,外键等高级数据库功能。

    6.AUTO_INCREMENT(自增)

    • MySIAM:可以和其他字段一起建立联合索引
    • InnoDB:必须包含只有该字段的索引

    7.表锁差异

    • MySIAM:只支持表级锁
    • InnoDB:支持事务和行级锁

    8.全文索引

    • MySIAM:支持全文索引
    • InnoDB:不支持全文索引

    9.表的主键

    • MySIAM:允许没有任何索引和主键的表存在,索引保存行的地址。
    • InnoDB:若是没有设置主键或者索引就会自动创建生成一个6字节的主键(用户不可见)

    10.表的总行数

    • MySIAM:保存有表的总行数,(使用:select count( * ) from table),就可以知道总行数。
    • InnoDB:没有保存表的总行数。

    11.外键

    • MySIAM:不支持
    • InnoDB:支持

    12.CURD操作

    • MySIAM:若是执行大量SELECT,MySIAM更合适
    • InnoDB:若是数据执行大量的INSERT,UPDATE,更适合使用InnoDB
  • 索引方式不同:
    详细请看:

  • MySQL中 InnoDB 与 MyISAM 引擎的区别(简单总结)

  • MySQL中 InnoDB 与 MyISAM 引擎的区别(都使用了B-Tree 但是索引方式有所不同)

下一篇:

  • MySQL基础语句

你可能感兴趣的:(入门级,MySQL,InnoDB,与,MyISAM,引擎的区别)