青蛙学Linux—MySQL

1、MySQL是什么?

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

MySQL为什么会如此流行呢?因为它有以下特点:

  • 简单易用:MySQL的使用非常简单,稍微有IT技术背景的人员都可以参照文档安装和运行MySQL
  • 开源:开源意味着免费,这也是一开始很多人选择MySQL的原因
  • 支持多种存储引擎:MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE
  • 支持高可用架构:MySQL自身提供的replication(主从复制)功能可以实现MySQL数据的实时备份,结合其他高可用软件可以很方便的实现高可用

MySQL官网:https://www.mysql.com

2、基于MySQL的发行版

目前流行的MySQL分支发行版有Percona Server和MariaDB。

Percona Server

Percona Server是由领先的MySQL咨询公司Percona发布的一款基于MySQL的关系型数据库,是一款独立的数据库产品,与MySQL完全兼容。在众多MySQL分支发行版中是最为接近官方MySQL Enterprise的版本。

Percona Server使用自行开发的XtraDB引擎;Percona Server在可管理性和稳定性上较MySQL都有一定的提升;Percona Server还是开源和免费的软件,而官方的MySQL Enterprise则是收费版本。

Percona公司还提供了其他诸如高可用、数据库管理和备份等解决方案,官网:https://www.percona.com

MariaDB

MariaDB由MySQL的创始人Michael Widenius主导开发。先前其曾将自己创建的公司MySQL AB出售给了SUN,随后SUN被Oracle收购,Michael Widenius不满于Oracle有将MySQL闭源的潜在风险所以开发了MariaDB。

MariaDB当前主要由开源社区进行维护,采用GPL授权许可;MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品;在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。

MariaDB官网:https://mariadb.org

3、MySQL的存储引擎

MySQL常用的存储引擎有MyISAM和InnoDB。

在MySQL 5.5之前的版本,默认使用的是MyISAM引擎,而从MySQL 5.5开始,已将默认存储引擎从MyISAM改为InnoDB。

两种存储引擎的大致区别在于:

  • InnoDB支持事务,而MyISAM不支持。事务是一种高级的数据处理方式,可以在一些增删改查出错时进行回滚操作以还原数据
  • MyISAM查询数据相对较快,适合大量的select操作,可以全文索引;InnoDB适合频繁修改以及安全性要求较高的应用
  • InnoDB支持外键,支持行级锁,MyISAM不支持
  • MyISAM索引和数据是分开的,且其索引是压缩的,缓存在内存的是索引,而不是数据;InnoDB缓存在内存的是数据,相对来说,服务器内存越大,InnoDB发挥的优势越大
  • InnoDB可支持大并发请求,适合大量insert、update操作

3.1、InnoDB存储结构

使用InnoDB存储引擎,MySQL会将以.frm结尾的表结构文件存放于数据存储目录下以数据库命名的目录中;而数据库中的数据、索引和元数据都会被存储在数据存储目录下的ibdata1文件中;在MySQL的数据存储目录下还存在名为ib_logfile0ib_logfile1的文件(文件大小可以设置,可设置镜像),这两个文件为事务日志(redo log),用于记录数据库操作的变化,用于事务的回滚操作,这两个文件的写入规则为:先写ib_logfile0,写满后写ib_logfile1,在ib_logfile1写满后再返回写ib_logfile0。

3.2、MyISAM存储结构

MyISAM引擎会将数据全部放置在MySQL数据存储目录中以数据库命名的目录下,名称以表名表示,通过后缀区分不同的文件:.frm为表结构文件;.myd为数据存储文件;.myi为索引文件

posted @ 2019-01-26 09:54  青蛙学Linux  阅读(237)  评论(0编辑  收藏  举报