MySQL存储引擎简介_MySQL
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)
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工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

第一批用于笔记本电脑的 LPCAMM2 模块已经交付,预计未来台式机主板也将配备 CAMM2。 CAMM2和LPCAMM2彼此不兼容,即使在台式电脑上,客户也需要小心

MySQL储存引擎选型对比:InnoDB、MyISAM与Memory性能指标评估引言:在MySQL数据库中,储存引擎的选择对于系统性能和数据完整性起着至关重要的作用。MySQL提供了多种储存引擎,其中最常用的引擎包括InnoDB、MyISAM和Memory。本文将就这三种储存引擎进行性能指标评估,并通过代码示例进行比较。一、InnoDB引擎InnoDB是My

win10系统是一款非常值得使用的优秀系统,强大的兼容性和高智能可以确保win10系统在使用中基本不会出现什么问题,但近日却有很多小伙伴们反应自己的电脑出现了频繁蓝盘并且老是提示错误代码memorymanagement这是怎么回事呢?今天小编就为大家带来了win10频繁蓝屏并且出现了memorymanagement终止代码的解决办法游戏需要的话就快来看看吧。win10memorymanagement蓝屏的解决办法:解决方法一:1、使用“Win键+R”+输入“control+enter”进入控制面

PHP是一种广泛使用的服务器端脚本语言,但是在运行PHP应用程序时,可能会遇到‘PHPFatalerror:Allowedmemorysizeofbytesexhausted’的错误信息,这通常意味着内存分配问题。在本文中,我们将探讨一些常见的导致‘PHPFatalerror:Allowedmemorysizeofbytese

1、Memory表的每个表可以有多达32个索引。每个索引16列,以及500字节的键长度。2、存储引擎执行HASH和BTREE缩影。3、表中可以有非唯一的键值。4、表采用固定的记录长度格式。5、不支持BLOB或TEXT列。实例mysql>CREATETABLElookup(idINT,INDEXUSINGHASH(id))ENGINE=MEMORY;mysql>CREATETABLElookup(idINT,INDEXUSINGBTREE(id))ENGINE=MEMORY;

韩国内存制造商SK海力士公司宣布推出最新的图形内存GDDR7,号称业界领先。此消息发布近两周前,三星于 7 月 19 日宣布推出业界首款 1.5 TBps 的 GDDR7 DRAM 解决方案

Raspberry Pi 5 是一款用途非常广泛的单板计算机,主要是因为其广泛的连接性,与前几代产品相比显着提高的计算能力也发挥了作用。在IT领域,这样的事情并不罕见。

三星电子的8层HBM3E存储芯片已成功通过Nvidia的严格测试,将自己定位为快速增长的AI芯片行业的关键供应商。 HBM(高带宽内存)是一种特殊类型的 DRAM 设计
