【读书笔记】【MySQL技术内.幕InnoDB存储引擎第2版中文】-第一章:MySQL架构体系和存储引擎

名词解释

  • 数据库(databse)

“物理操作系统文件或其他形式文件类型的集合。在mysql数据库中,可以是frm、MYD、MYI、ibd结尾的文件。使用NDB引擎时候,文件存放在内存之中,定义不变”。

  • 实例(instance)

“mysql数据库由后台线程以及一个共享内存区组成。共享内存可以被运行的后台线程所共享。数据库实例是真正用于操作数据库文件的。”
mysql数据库实例在系统上的表现就是一个进程。

”数据库是由一个个文件组成(一般来说都是二进制的文件)的,要对这些文件执行诸如SELECT、INSERT、UPDATE、DELETE之类的数据库操作是不能通过简单的操作文件来更改数据库的内容,需要通过数据库实例来完成对数据库的操作。“

mysql组成

  • 连接池组件
  • 管理服务和工具组件
  • SQL接口组件
  • 查询分析器组件
  • 优化器组件
  • 缓冲(Cache)组件
  • 插件式存储引擎
  • 物理文件

MySQL体系架构
在这里插入图片描述
(摘自Mysql官方手册)

mysql存储引擎

由于MySQL数据库开源特性,存储引擎可以分为MySQL官方存储引擎和第三方存储引擎。著名的InnoDB存储引擎(最早是三方存储引擎,后被Oracle收购),应用就极其广泛。

InnoDB存储引擎

支持事务,特点是行锁设计、支持外键,面向OLTP(在线事务处理)支持类似Oracle的非锁定读,即默认读取不会产生锁。将数据存放在一个逻辑的表空间中,由其自身进行管理。MySQL4.1(包含4.1)版本开始,将每个InnoDB存储引擎的表单独存放到一个独立的ibd文件中。此外它还支持裸设备(row disk)来建立其表空间。提供了插入缓冲(insert buffer)、二次写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead)等高性能和高可用的功能。

MYISAM存储引擎

MYISAM存储引擎不支持事务、表锁设计,支持全文索引,面向OLAP(在线分析处理)数据库应用。(OLAP与OLTP区别具体可以查看)
MYISAM存储引擎表由MYD和MYI组成,MYD存放数据文件,MYI存放索引文件。

NDB存储引擎

NDB存储引擎(share nothing)是一个集群存储引擎,类似Oracle的RAC(share everything架构)集群。特点是数据全部放在内存中(MySQL5.1版本开始,可以将非索引数据放在磁盘上),因此主键查找(primary key lookups)的速度极快。

Memory存储引擎

Memory存储引擎将表中数据存放在内存中。适用于存储临时数据的临时表,以及数据仓库中的纬度表。默认使用哈希索引。限制:不支持TEXT和BLOB列类型。

Archive存储引擎

Archive存储引擎只支持INSERT和SELECT操作,从MySQL5.1开始支持索
引。使用zlib算法将数据行(row)进行压缩后存储,压缩比一般可
达1:l0。非常适合存储归档数据,如日志信息。使用行锁来实现高并发的插入操作,但是其本身并不是事务安全的存储引擎,其设计目标主要是提供高速的插人和压缩功能。

Federated存储引擎

Federated存储引擎表并不存放数据,它只是指向一台远程MySQL数据库服务器上
的表。这非常类似于SQL Server的链接服务器和Oracle的透明网关,不同的是,当前
Federated存储引擎只支持MySQL数据库表,不支持异构数据库表。

Maria存储引擎

Maria存储引擎是新开发的引擎,设计目标主要是用来取代原有的MyISAM存储引
擎,从而成为MySQL的默认存储引擎。Maria存储引擎的开发者是MySQL的创始人之
一的Michael Widenius。因此,它可以看做是MyISAM的后续版本。Maria存储引擎的
特点是:支持缓存数据和索引文件,应用了行锁设计,提供了MVCC功能,支持事务和
非事务安全的选项,以及更好的BLOB字符类型的处理性能。

除此之外MySQL还有Merge、CSV等,都有各自使用场合。详细查看官方文档

不同存储引擎的区别

Table 16.1 Storage Engines Feature Summary

FeatureMyISAMMemoryInnoDBArchiveNDB
B-tree indexesYesYesYesNoNo
Backup/point-in-time recovery (note 1)YesYesYesYesYes
Cluster database supportNoNoNoNoYes
Clustered indexesNoNoYesNoNo
Compressed dataYes (note 2)NoYesYesNo
Data cachesNoN/AYesNoYes
Encrypted dataYes (note 3)Yes (note 3)Yes (note 4)Yes (note 3)Yes (note 3)
Foreign key supportNoNoYesNoYes (note 5)
Full-text search indexesYesNoYes (note 6)NoNo
Geospatial data type supportYesNoYesYesYes
Geospatial indexing supportYesNoYes (note 7)NoNo
Hash indexesNoYesNo (note 8)NoYes
Index cachesYesN/AYesNoYes
Locking granularityTableTableRowRowRow
MVCCNoNoYesNoNo
Replication support (note 1)YesLimited (note 9)YesYesYes
Storage limits256TBRAM64TBNone384EB
T-tree indexesNoNoNoNoYes
TransactionsNoNoYesNoYes
Update statistics for data dictionaryYesYesYesYesYes

Notes:

  1. Implemented in the server, rather than in the storage engine.

  2. Compressed MyISAM tables are supported only when using the compressed row format. Tables using the compressed row format with MyISAM are read only.

  3. Implemented in the server via encryption functions.

  4. Implemented in the server via encryption functions; In MySQL 5.7 and later, data-at-rest encryption is supported.

  5. Support for foreign keys is available in MySQL Cluster NDB 7.3 and later.

  6. Support for FULLTEXT indexes is available in MySQL 5.6 and later.

  7. Support for geospatial indexing is available in MySQL 5.7 and later.

  8. InnoDB utilizes hash indexes internally for its Adaptive Hash Index feature.

  9. See the discussion later in this section.

常用命令

查看mysql启用的进程情况

ps -ef | grep mysqld

查看MySQL数据库所支持的存储引擎

SHOW ENGINES

转换表的引擎的方法

ALTER TABLE XXX ENGINE=InnoDB;

修改默认存储引擎

SET DEFAULT_STORAGE_ENGINE=MyISAM;

创建表指定存储引擎

CREATE TABLE xxx(
xxxx;
) ENGINE=InnoDB

查看所有数据库

show databses;

查看所有表

show tables;

查看innodb版本

show variables like 'innodb_version'

查看innodb中的IO Thread

show engine innodb status;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值