mysql体系结构和存储引擎

转自: mysql技术内幕:innodb存储引擎(非常棒的一本书)

【1】mysql体系结构和存储引擎

【1.2】mysql体系结构

1)mysql数据库实例在系统上的表现就是一个进程;

2)数据库与数据库实例的区别:

数据库是文件的集合,是根据某种模型组织文件并其存放在二级存储器中的数据集合;

数据库实例是程序,用户对数据库文件的增删改查都是通过数据库实例程序去完成的;

更贴切地说:数据库是由一个个文件组成的(二进制文件),要对这些文件进行增删改查操作不能通过简单的文件操作来实现,需要通过数据库实例来完成;

【1.3】存储引擎

1)mysql数据库区别于其他数据库的一个最重要的特点是: 有插件式的表存储引擎;

2)存储引擎是基于数据库表而不是基于数据库的;所以不同的数据库表可以使用不同的存储引擎,尽管这些表都属于同一个数据库;

3)存储引擎分类:

3.1)innodb存储引擎:

a.innodb存储引擎支持事务,设计目标主要面向 OLTP(online transaction processing,联机事务处理)的应用。特点是行锁设计,支持外键,并支持非锁定度,即默认读数据不会产生锁;

b.默认隔离级别是 READ REPEATABLE 可重复读级别(RR);mysql默认隔离级别是 READ COMMITTED 可提交读(RC);

c.之外, innodb还提供了 插入缓存(insert buffer), 二次写(double write), 自适应哈希索引(adaptive hash index), 预读(read ahead)等高性能和高可用的功能;

d.innodb 采用 聚集cluster存储方式, 故每张表的存储都是按照主键的顺序进行存放的;

3.2)MyISAM 存储引擎:

a.myisam 不支持事务,表锁设计, 支持全文索引, 主要面向OLAP 数据库应用;(online analysis processing, 联机分析处理)

b.myisam 的缓冲池只 缓存索引文件,不缓存数据文件;

3.3)NDB 存储引擎:集群存储引擎, NDB == network database 网络数据库, ndb 是基于mysql集群的分布式数据库系统;

a.ndb的所有数据都放在内存中;

3.4)Memory 存储引擎: 内存存储引擎

a.memory 将表中数据存放在内存中, 如果数据库发生崩溃或重启,表中的数据将会丢失;

b.memory默认使用哈希索引,不是B+索引;

3.5)Archive 存储引擎:

a.archive 只支持 insert 和 select 操作;

b. archive 非常适合存储归档数据, 如日志信息;

3.6)Federated 存储引擎:

a. Federated 存储引擎表并不存放数据, 它只是指向一台远程mysql 数据库服务器上的表;

3.7)Maria 存储引擎:

a.Maria设计目标是取代 MyISAM 存储引擎,从而成为mysql的默认引擎;

b. Maria 存储引擎的特点:支持缓存数据和索引文件,应用了行锁,提供了MVCC功能, 支持事务和非事务安全的选项, 以及更好的blob 字符类型的处理性能;

猜你喜欢

转载自blog.csdn.net/PacosonSWJTU/article/details/81193278