0

0

MySQL存储引擎简介_MySQL

php中文网

php中文网

发布时间:2016-06-01 13:13:48

|

1345人浏览过

|

来源于php中文网

原创

mysql使用的是插件式存储引擎。

主要包括存储引擎有:MyISAM,Innodb,NDB Cluster,Maria,Falcon,Memory,Archive,Merge,Federated。

其中最为广泛的是MyISAM 和Innodb两种存储引擎,所以接下来对它们做简单介绍。

MyISAM 存储引擎简介

MyISAM 存储引擎的表存储在数据库中,每一个表都被存放为三个以表名命名的物理文件。

1、(.frm文件)任何存储引擎都不可缺少的存放表结构定义信息的文件

2、(.MYD文件)存放表数据的文件

3、(.MYI文件)存放该表所有索引数据的文件

注:有且仅有这样三个文件做为MyISAM 存储类型的表的存储

MyISAM 的表以不同的格式存放在一个相同后缀名的.MYD 文件中。

其中格式分为:静态(FIXED)固定长度、动态(DYNAMIC)可变长度以及压缩(COMPRESSED)三种格式。

压缩:可以创建表的时候通过ROW_FORMAT 来指定{COMPRESSED | DEFAULT}(默认不压缩)

也可以通过myisampack 工具来进行压缩

非压缩:

动态:只要表中有可变长度类型的字段存在,那么该表就肯定是DYNAMIC 格式的

静态:如果没有任何可变长度的字段,则为FIXED 格式

MyISAM 支持以下三种类型的索引:

1、B-Tree 索引

B-Tree 索引,所有的索引节点都按照balance tree 的数据结构来存储,所有的索引数据节点都在叶节点。

2、R-Tree 索引

R-Tree 索引的存储方式和b-tree 索引有一些区别,主要设计用于为存储空间和多维数据的字段做索引,支持geometry 类型的字段作索引。

3、Full-text 索引

Full-text 索引就是我们长说的全文索引,他的存储结构也是b-tree。主要是为了解决在我们需要用like 查询的低效问题。

注:参与一个索引的所有字段的长度之和不能超过1000 字节

Innodb 存储引擎简介
1、支持事务安装

实现了SQL92 标准所定义的所有四个级别(READ UNCOMMITTED,READ COMMITTED,REPEATABLE READ 和SERIALIZABLE)

CWC 大型商城
CWC 大型商城

基于jsp+javabean+mysql三层结构的动态购物网站,网站用户接口(即界面)由jsp完成,数据和逻辑处理由beans完成,数据储存由mysql完成 主要做了以下一些修正: 1.新增产品站内搜索引擎。 2.新增人气商品排行。 3.新增热评商品排行。 4.新增重点推荐产品。 5.删除不太需要的新闻频道。 6.修正后台管理的一些Nullpointexception错误。 7.新增顾客资料修改。

下载

2、数据多版本读取

Innodb 在事务支持的同时,为了保证数据的一致性已经并发时候的性能,通过对undo信息,实现了数据的多版本读取。

3、锁定机制的改进

Innodb 改变了MyISAM 的锁机制,实现了行锁。行锁机制的实现是通过索引来完成的。

4、实现外键

建议不要使用外键,数据库系统调优专家都建议不要使用

5、Innodb 的物理结构

跟MyISAM一样:(.frm 文件)来存放表结构定义相关的元数据。

跟MyISAM不一样:表数据和索引数据是存放在一起的

Innodb 的物理结构分为两大部分:

1、数据文件(表数据和索引数据)

存放数据表中的数据和所有的索引数据,包括主键和其他普通索引。

Innodb 的表空间分为两种形式:

一种是共享表空间,也就是所有表和索引数据被存放在同一个表空间(一个或多个数据文件)中,通过innodb_data_file_path 来指定,增加数据文件需要停机重启。

另外一种是独享表空间,也就是每个表的数据和索引被存放在一个单独的.ibd 文件中。

注:共享表空间是必须存在的,因为Innodb 的undo 信息和其他一些元数据信息都是存放在共享表空间里面的。

共享表空间的数据文件是可以设置为固定大小和可自动扩展大小两种形式,自动扩展形式的文件可以设置文件的最大大小和每次扩展量。

2、日志文件

Innodb 的日志文件和Oracle 的redo 日志比较类似:

可以设置多个日志组(最少2个),采用轮循策略来顺序的写入,甚至在老版本中还有和Oracle 一样的日志归档特性。

注:千万别全部删除innodb 的日志文件,因为很可能就会让你的数据库crash,无法启动,或者是丢失数据。

Innodb 完全可以通过redo 日志将数据库Crash 时刻已经完成但还没有来得及将数据写入磁盘的事务恢复,也能够将所有部分完成并已经写入磁盘的未完成事务回滚并将数据还原。

Innodb 的所有参数基本上都带有前缀“innodb_”,可以仅仅通过参数(skip-innodb)来屏蔽MySQL 中的Innodb存储引擎,这样即使我们在安装编译的时候将Innodb 存储引擎安装进去了,使用者也无法创建Innodb 的表。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java连接字符串方法汇总
java连接字符串方法汇总

本专题整合了java连接字符串教程合集,阅读专题下面的文章了解更多详细操作。

7

2026.02.05

java中fail含义
java中fail含义

本专题整合了java中fail的含义、作用相关内容,阅读专题下面的文章了解更多详细内容。

8

2026.02.05

控制反转和依赖注入区别
控制反转和依赖注入区别

本专题整合了控制反转和依赖注入区别、解释、实现方法相关内容。阅读专题下面的文章了解更多详细教程。

11

2026.02.05

钉钉脑图插图教程合集
钉钉脑图插图教程合集

本专题整合了钉钉脑图怎么插入图片、钉钉脑图怎么用相关教程,阅读专题下面的文章了解更多详细内容。

24

2026.02.05

python截取字符串方法汇总
python截取字符串方法汇总

本专题整合了python截取字符串方法相关合集,阅读专题下面的文章了解更多详细内容。

2

2026.02.05

Java截取字符串方法合集
Java截取字符串方法合集

本专题整合了Java截取字符串方法汇总,阅读专题下面的文章了解更多详细操作教程。

1

2026.02.05

java 抽象方法
java 抽象方法

本专题整合了java抽象方法定义、作用教程等内容,阅读专题下面的文章了解更多详细内容。

2

2026.02.05

Eclipse创建jsp文件教程合集
Eclipse创建jsp文件教程合集

本专题整合了Eclipse创建jsp文件、创建jsp项目等等内容,阅读专题下面的文章了解更多详细教程。

26

2026.02.05

java 字符串转数字
java 字符串转数字

本专题整合了java如何字符串转数字相关内容,阅读专题下面的文章了解更多详细教程。

4

2026.02.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号