MySQL入门(2)——存储引擎
MySQL入门(2)——存储引擎
查询MySQL支持的存储引擎
查询全部支持的引擎:
show engines;
“;”可以使用“\g”等价替换,而使用“\G”会使输出更为美观。
查询默认存储引擎:
show variables like 'storage_engine%';
InnoDB存储引擎
一般作为默认存储引擎。InnoDB是MySQL上第一个提供外键约束的表引擎。InnoDB拥有MySQL其它引擎无法比拟的事务处理能力。
InnoDB引擎支持自动增长列AUTO_INCREMENT。自动增长列的值不能为空,且值必须唯一。MySQL中规定自增列必须为主键。在插入值时,如果自动增长列不输入值,则插入的值为自动增长后的值;如果输入的值为0或空(NULL),则插入的值也为自动增长后的值;如果插入某个确定值,且该值未在先前出现过,则可以直接插入。
InnoDB引擎支持外键(FOREIGN KEY)。外键所在的表为子表,外键所依赖的表为父表。父表中被子表外键关联的字段必须为主键。当删除、更新父表的某条信息时,子表也必须有相应的更改。InnoDB存储引擎中,创建的表的表结构存储在.frm文件中。数据和索引存储在innodb_data_home_dir和innodb_data_file_path表空间中。
InnoDB优缺点
InnoDB的优势是良好的事务管理、崩溃修复能力和并发控制。缺点是读写效率较差,占用数据空间较大。
InnoDB是如下情况的理想引擎:
- 更新密集的表:InnoDB存储引擎特别适合处理多重并发的更新请求。
- 事务:InnoDB引擎是唯一支持事务的标准MySQL存储引擎,是管理敏感数据(如金融信息和用户注册信息)的必需软件。
- 自动灾难恢复:与其它存储引擎不同,InnoDB表支持自动从灾难中恢复。虽然MyISAM表能在灾难后恢复,但过程复杂。
MyISAM存储引擎
MyISAM曾经是MySQL的默认存储引擎,由ISAM发展而来,解决了ISAM多种缺陷。
MyISAM存储引擎的文件类型
MyISAM存储的表存储成3个文件。文件名称与表名相同,扩展名包括.frm、.MYD、.MYI。
- .frm:存储表的结构。
- .MYD:存储数据,即MYData。
- .MYI:存储索引,即MYIndex。
MyISAM存储引擎的存储格式
基于MyISAM的表有3种存储格式,包括静态型、动态型、压缩型。
- MyISAM静态:如果所有表列的大小都是静态的(即不使用xBLOB、xTEXT或VARCHAR数据类型),就会自动使用静态MyISAM格式。这种类型的表性能非常高,因为维护和访问预定义格式的数据时开销很低。但这项优点以空间为代价,因为每列都需要分配最大空间,无论是否真正需要使用。
- MyISAM动态:如果有表列(即使只有一列)定义为动态的(使用xBLOB、xTEXT或VARCHAR),MySQL就会自动使用动态格式。这能够节省空间,但会使性能下降。如果某个字段内容发生改变,则其位置很可能需要移动,这会导致碎片的产生。随着数据集中碎片增加,数据访问性能就会相应下降。修复方法有:
① 尽可能使用静态数据类型。
② 经常使用OPTIMIZE TABLE语句,以整理表的碎片,恢复由于表更新和删除而导致的空间丢失。 - MyISAM压缩:有时需要创建整个应用程序生命周期中都只读的表。这种情况下可以使用myisampack工具将其转换为MyISAM压缩表来减少占用空间。在给定硬件条件下性能提升显著。
MyISAM优缺点
MyISAM存储引擎的优势在于占用空间小,处理速度快;缺点是不支持事务的完整性和并发性。
MEMORY存储引擎
MEMORY存储引擎是MySQL存储引擎中的特殊一类,其使用存储在内存中的内容来创建表,且所有数据也放在内存中。这些特性与InnoDB、MyISAM不同。
MEMORY存储引擎的文件存储形式
每个基于MEMORY存储引擎的表实际上对应一个磁盘文件。该文件的文件名与表名相同,类型为.frm。该文件仅存储表的结构,数据文件则存储在内存中,这样有利于对数据快速处理,提高整个表的处理效率。同时需要服务器具备足够的内存以维持MEMORY引擎的表的使用,当不再使用时,可以释放内存删除不需要的表。
MEMORY存储引擎的索引类型
MEMORY存储引擎默认使用哈希(HASH)索引,其速度比使用B树(BTREE)索引快。
MEMORY存储引擎的存储周期
基于内存,且MEMORY通常很少被使用,表基本只供一次性使用。
MEMORY优缺点
MEMORY表大小受限,取决于两个参数max_rows和max_heap_table_size。其中,max_rows可在创建表时指定;max_heap_table_size的大小默认为16MB,可以按需扩大。其存在于内存的特性,决定了这类表处理速度非常快、易丢失、生命周期短的特点。
创建MySQL MEMORY存储引擎的出发点是速度。但是在守护进程mysqld崩溃时,所有的MEMORY数据都会丢失。
MEMORY表不支持VARCHAR、BLOB和TEXT数据类型,即这种表只能按照固定长度的记录格式存储。此外,使用版本4.1.0之前的MySQL,不支持自动增加列(通过AUTO_INCREMENT属性)。
当具有如下情况时,可以考虑使用MEMORY表:
- 暂时:目标数据临时需要且必须立即可用。
- 相对无关:数据丢失不会造成实质性负面影响,不会对数据完整性有长期影响。
MySQL入门(2)——存储引擎的更多相关文章
- MySQL的多存储引擎架构
支持多种存储引擎是众所周知的MySQL特性,也是MySQL架构的关键优势之一.如果能够理解MySQL Server与存储引擎之间是怎样通过API交互的,将大大有利于理解MySQL的核心基础架构.本文将 ...
- Mysql更换MyISAM存储引擎为Innodb的操作记录
一般情况下,mysql会默认提供多种存储引擎,可以通过下面的查看: 1)查看mysql是否安装了innodb插件.通过下面的命令结果可知,已经安装了innodb插件. mysql> show p ...
- mysql缓存、存储引擎
一. mysql查询缓存 查询缓存不是mysql的子系统,却是查询优化和执行子系统不可缺少的组成部分.它不仅可以缓存查询结果,还可以缓存查询结果本身.如果某个查询的结果就在缓存里, 系 ...
- 转!!MySQL中的存储引擎讲解(InnoDB,MyISAM,Memory等各存储引擎对比)
MySQL中的存储引擎: 1.存储引擎的概念 2.查看MySQL所支持的存储引擎 3.MySQL中几种常用存储引擎的特点 4.存储引擎之间的相互转化 一.存储引擎: 1.存储引擎其实就是如何实现存储数 ...
- MySQL数据库InnoDB存储引擎多版本控制(MVCC)实现原理分析
文/何登成 导读: 来自网易研究院的MySQL内核技术研究人何登成,把MySQL数据库InnoDB存储引擎的多版本控制(简称:MVCC)实现原理,做了深入的研究与详细的文字图表分析,方便大家理解I ...
- MySQL数据库InnoDB存储引擎中的锁机制
MySQL数据库InnoDB存储引擎中的锁机制 http://www.uml.org.cn/sjjm/201205302.asp 00 – 基本概念 当并发事务同时访问一个资源的时候,有可能 ...
- MySQL支持多种存储引擎
MySQL的强大之处在于它的插件式存储引擎,我们可以基于表的特点使用不同的存储引擎,从而达到最好的性能. MySQL有多种存储引擎:MyISAM.InnoDB.MERGE.MEMORY(HEAP).B ...
- mysql基础之存储引擎
原文:mysql基础之存储引擎 数据库对同样的数据,有着不同的存储方式和管理方式,在mysql中,称为存储引擎 常用的表的引擎 Myisam ,批量插入速度快, 不支持事务,锁表 Innodb, 批量 ...
- MySQL查看修改存储引擎总结
文总结了MySQL下查看.修改存储引擎的一些方法.测试.验证环境为MySQL 5.6 1:查看MySQL的存储引擎信息 1.1 使用show engines命令. .csharpcode, .csha ...
- MySQL的常见存储引擎介绍与参数设置调优
MySQL常用存储引擎之MyISAM 特性: 1.并发性与锁级别 2.表损坏修复 check table tablename repair table tablename 3.MyISAM表支持的索引 ...
随机推荐
- 【python接口自动化】- PyMySQL数据连接
什么是 PyMySQL? PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,Python2中则使用mysqldb.它是一个遵循 Python数据库APIv2.0规范, ...
- js camelCase formatter
js camelCase formatter 驼峰命名 转换器 'A'.charCodeAt(); // 65 'Z'.charCodeAt(); // 90 'a'.charCodeAt(); // ...
- js location API All In One
js location API All In One location "use strict"; /** * * @author xgqfrms * @license MIT * ...
- VirtualBox All in One
VirtualBox All in One 虚拟机 / VM / Virtual Machine x86 and AMD64/Intel64 VirtualBox is a powerful x86 ...
- how to disabled alert function in javascript
how to disabled alert function in javascript alert 阻塞主线程 default alert; // ƒ alert() { [native code] ...
- VS Code & terminal & Canvas & DOM
VS Code & terminal & Canvas & DOM https://code.visualstudio.com/docs/editor/integrated-t ...
- auto skip function args
auto skip function args https://repl.it/@xgqfrms/auto-skip-function-args "use strict"; /** ...
- 初学c++,vc++6.0必备!
文章首发 | 公众号:lunvey 作为一个纯粹的萌新,工作需要,刚接触到c++. 按照以往的经验,配置一个开发环境是首要的,其次便是边学边敲. c++入门书籍寻找了一堆,发现了一个共同点,在Wind ...
- 国内源安装ROS2
资料参考: https://www.mscto.com/op/428870.html 需要修正的一点是,使用如下的命令添加源: sudo sh -c 'echo "deb [arch=$(d ...
- 020_CSS3
目录 如何学习CSS 什么是CSS 发展史 快速入门 css的优势 三种CSS导入方式 拓展:外部样式两种写法 选择器 基本选择器 层次选择器 结构伪类选择器 属性选择器 美化网页元素 为什么要美化网 ...