当前位置: 首页 > news >正文

MySQL常见的存储引擎(InnoDB、MyISAM)data目录下(.frm,.myi,.myd)

查看支持的存储引擎

SHOW ENGINES;show variables like '%storage_engine%'; 看你的mysql当前默认的存储引擎:

data目录

如果一个表同时有这3个文件,则存储引擎是myisam:
(1*.frm--表定义,是描述表结构的文件。2*.MYD--"D"数据信息文件,是表的数据文件。3*.MYI--"I"索引信息文件,是表数据文件中任何索引的数据树。

1 InnoDB存储引擎 .frm .ibd

InnoDB存储引擎总支持AUTO_INCREMENT。自动增长列的值不能为空,并且值必须唯一。
MySQL中规定自增列必须为主键。在插入值的时候,如果自动增长列不输入值,则插入的值为自动增长后的值;
如果输入的值为0或空(NULL),则插入的值也是自动增长后的值;
如果插入某个确定的值,且该值在前面没有出现过,就可以直接插入。 
InnoDB还支持外键(FOREIGN KEY)。
外键所在的表叫做子表,外键所依赖(REFERENCES)的表叫做父表。
父表中被字表外键关联的字段必须为主键。
当删除、更新父表中的某条信息时,子表也必须有相应的改变,这是数据库的参照完整性规则。

1.1 存储 .frm .ibd

InnoDB中,创建的表的表结构存储在.frm文件中。 
数据和索引存储在innodb_data_home_dir和innodb_data_file_path定义的表空间中。

1.2 InnoDB的优势缺点

在于提供了良好的事务处理、崩溃修复能力和并发控制。 
支持事务安全的引擎,支持外键、行锁、事务是他的最大特点。
如果有大量的updateinsert,建议使用InnoDB,特别是针对多个并发和QPS较高的情况。
Innodb支持事务和行级锁,是innodb的最大特色。 
缺点是读写效率较差,占用的数据空间相对较大。

1.3 InnoDB事务

innodb支持事务和行级锁,是innodb的最大特色。事务的ACID属性:原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability) 并发事务带来的几个问题:更新丢失,脏读,不可重复读,幻读。 事务隔离级别:读未提交(Read uncommitted),读已提交(Read committed),可重复读(Repeatable read),串行化(Serializable) show global variables like 'tx_isolation';

2 MyISAM存储引擎

MyISAM是MySQL中常见的存储引擎,曾经是MySQL的默认存储引擎。
MyISAM是基于ISAM引擎发展起来的,增加了许多有用的扩展。 
基于MyISAM存储引擎的表支持3种不同的存储格式。
包括静态型、动态型和压缩型。
其中,静态型是MyISAM的默认存储格式,它的字段是固定长度的;动态型包含变长字段,记录的长度不是固定的;
压缩型需要用到myisampack工具,占用的磁盘空间较小。

2.1 MyISAM的表存储成3个文件 .frm .myd .myi

文件的名字与表名相同。拓展名为frm、MYD、MYI。
frm文件存储表的结构;
myd文件存储数据,是MYData的缩写;
myi文件存储索引,是MYIndex的缩写。

2.2 MyISAM的优势缺点

MyISAM的优势在于占用空间小,处理速度快。 
缺点是不支持事务的完整性和并发性。 
不是事务安全的,而且不支持外键,如果执行大量的selectinsert MyISAM比较适合 myisam只支持表级锁

相关文章:

  • 海云安参与制定《信息安全技术 移动互联网应用程序(App)软件开发工具包(SDK)安全要求》标准正式发布
  • 编织魔法世界——计算机科学的奇幻之旅
  • 虚拟数据优化器VDO
  • 漫步者开放式耳机怎么样?南卡、漫步者开放式耳机哪个好?
  • Python-文件操作详解
  • 一对一互相聊天
  • 【多线程】线程的三种常见创建方式
  • jenkins-cicd基础操作
  • SpringBoot第56讲:SpringBoot集成文件 - 集成EasyExcel之Excel导入导出
  • php中WebSocket简单使用
  • 外包干了2个多月,技术明显有退步了。。。。。
  • Day52力扣打卡
  • 拨号连接bat命令和拨号错误623,系统无法找到此连接的电话簿项的解决方法
  • JavaWeb(二)
  • 小纸条..
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • Android开源项目规范总结
  • HTTP 简介
  • js如何打印object对象
  • Mac转Windows的拯救指南
  • mysql_config not found
  • PHP变量
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Yii源码解读-服务定位器(Service Locator)
  • 程序员最讨厌的9句话,你可有补充?
  • 分类模型——Logistics Regression
  • 浮现式设计
  • 每天10道Java面试题,跟我走,offer有!
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 数据科学 第 3 章 11 字符串处理
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • (1)(1.13) SiK无线电高级配置(五)
  • (day6) 319. 灯泡开关
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (zt)最盛行的警世狂言(爆笑)
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (十)c52学习之旅-定时器实验
  • (四)Controller接口控制器详解(三)
  • (循环依赖问题)学习spring的第九天
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (轉)JSON.stringify 语法实例讲解
  • ***利用Ms05002溢出找“肉鸡
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .Net Memory Profiler的使用举例
  • .NET Micro Framework 4.2 beta 源码探析
  • .NET 反射 Reflect
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • @html.ActionLink的几种参数格式
  • [Android] Amazon 的 android 音视频开发文档