Mysql学习笔记--Mysql体系结构和存储引擎

注:使用了MySQL技术内幕 第二版书籍

1.定义数据库和实例

数据库:物理操作系统文件或其他形式文件类型的集合。即存储数据数据的文件,可为frm、MYD等格式文件,也可为内存中数据。
数据库实例:用于操作数据库文件的程序。
实例与数据库常常是一一对应的,即一个实例用于操作一个数据库,一个数据库被一个实例操作。在集群情况下,可能存在一个数据库被多个数据库实例使用的情况。

Mysql是单进程多线程。数据库实例在系统上的表现就是一个进程。

启动实例时,会读取配置文件,根据配置文件的参数来启动数据库实例。

mysql --help | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf 
按照从左到右顺序读取配置文件,若有相同参数,以靠右参数为准。
2.Mysql体系结构

Mysql区别于其他数据库的最重要的特点是插件式的表存储引擎。插件式存储引擎架构提供了一系列标准的管理和服务支持,这些标准与存储引擎本身无关,可能是每个数据库系统本身所必需的,如SQL分析和优化器等,而存储引擎是底层物理结构的实现,每个存储引擎可以按照自己的意愿来进行开发。

存储引擎是基于表的,而不是数据库。

3.存储引擎

每个表都可以根据需求,使用不同的存储引擎。每个存储引擎都有各自的特点。可以查看Mysql支持的引擎及他们的区别。

InnoDB:支持事务,主要面向在线事务处理(OLTP)。行锁设计,支持全文索引,支持外键,支持非锁定读,即默认读取操作不产生锁。

MyISAM:不支持事务,表锁设计,支持全文索引,主要面向在线分析处理(OLAP)。由MYD和MYI组成。MYD用来存储数据文件,MYI用来存储索引文件。缓存池只缓存索引文件。

NDB:集群存储引擎,share nothing 集群架构。数据放在内存中,可以将非索引数据放在磁盘上,主键查找速度极快。

          注:此引擎已独立出来,从https://dev.mysql.com/downloads/cluster/下载

Memory:将表中数据存储于内存中,若数据库重启或崩溃,数据将消失,适合做临时表。默认使用HASH索引。只支持表锁,不支持TEXT与BLOB列类型。Mysql数据库使用Memory存储引擎存储查询中间结果集,如果结果集大于Memory容量设置,或含有TEXT或BLOB类型字段,则Mysql会把其转到MyISAM存储引擎表而存到磁盘上,而MyISAM不缓存数据文件,因此对查询性能有损失。

Archive:只支持INSERT和SELECT操作。支持索引、行锁;使用zlib算法将数据行压缩后存储,压缩比一般为1:10,适合存储归档数据,如日志。

Federated:并不存放数据,指向远程Mysql服务器上表。此引擎默认未开启,开启federated存储引擎只需要在my.cnf文件中增加‘federated’就可以。

Maria:用于MariaDB中,用以替换MyISAM。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值