mysql myisam和innodb的存储

MySQL存储引擎MyISAM和InnoDB底层索引结构 目录 一 存储引擎作用于什么对象 二 MyISAM和InnoDB对索引和数据的存储在磁盘上是如何体现的 三 MyISAM主键索引与辅助索引的结构 1. 主键索引: 2. 辅助(非主键)索引: 四 InnoDB主键索引与辅助索引的结构 1. 主键索引: 2. 辅助(非主键)索引: 五 InnoDB索引结构需要注意的点 PS:为了更好地理解本文内容,我强烈建议先阅读完我的上一篇文章... 阅读详情

--------------------------------------------------------------------myisam---------------------------------------------------------------------------------

MyISAM 是 MySQL 的默认存储引擎。MyISAM 不支持事务、也不支持外键,其优势是访
问的速度快,对事务完整性没有要求或者以 SELECT、INSERT 为主的应用基本上都可以使用
这个引擎来创建表。
每个 MyISAM 在磁盘上存储成 3 个文件,其文件名都和表名相同,但扩展名分别是:
 .frm(存储表定义);
 .MYD(MYData,存储数据);
 .MYI (MYIndex,存储索引)。
数据文件和索引文件可以放置在不同的目录,平均分布 IO,获得更快的速度。
要指定索引文件和数据文件的路径, 需要在创建表的时候通过 DATA DIRECTORY 和 INDEX
DIRECTORY 语句指定,也就是说不同 MyISAM 表的索引文件和数据文件可以放置到不同的路
径下。文件路径需要是绝对路径,并且具有访问权限。
MyISAM 类型的表可能会损坏,原因可能是多种多样的,损坏后的表可能不能访问,会
提示需要修复或者访问后返回错误的结果。 MyISAM 类型的表提供修复的工具, 可以用 CHECK
TABLE 语句来检查 MyISAM 表的健康,并用 REPAIR TABLE 语句修复一个损坏的 MyISAM 表。
表损坏可能导致数据库异常重新启动,需要尽快修复并尽可能地确认损坏的原因。具体的操
作步骤可以参见第 35 章应急处理。
MyISAM 的表又支持 3 种不同的存储格式,分别是:
 静态(固定长度)表;
 动态表;
 压缩表。
其中,静态表是默认的存储格式。静态表中的字段都是非变长字段,这样每个记录都是
固定长度的,这种存储方式的优点是存储非常迅速,容易缓存,出现故障容易恢复;缺点是
占用的空间通常比动态表多。静态表的数据在存储的时候会按照列的宽度定义补足空格,但
是在应用访问的时候并不会得到这些空格,这些空格在返回给应用之前已经去掉。
但是也有些需要特别注意的问题,如果需要保存的内容后面本来就带有空格,那么在返
回结果的时候也会被去掉,开发人员在编写程序的时候需要特别注意,因为静态表是默认的
存储格式,开发人员可能并没有意识到这一点,从而丢失了尾部的空格。以下例子演示了插
入的记录包含空格时处理的情况:
mysql> create table Myisam_char (name char(10)) engine=myisam;
Query OK, 0 rows affected (0.04 sec)
mysql> insert into Myisam_char values('abcde'),('abcde '),(' abcde'),(' abcde ');
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> select name,length(name) from Myisam_char;
+---------+--------------+
| name | length(name) |
+---------+--------------+
| abcde | 5 |
| abcde | 5 |
| abcde | 7 |
| abcde | 7 |
+---------+--------------+
4 rows in set (0.00 sec)
从上面的例子可以看出,插入记录后面的空格都被去掉了,前面的空格保留。
动态表中包含变长字段,记录不是固定长度的,这样存储的优点是占用的空间相对较少,但
是频繁地更新删除记录会产生碎片,需要定期执行 OPTIMIZE TABLE 语句或 myisamchk -r 命
令来改善性能,并且出现故障的时候恢复相对比较困难。
压缩表由 myisampack 工具创建,占据非常小的磁盘空间。因为每个记录是被单独压缩的,
所以只有非常小的访问开支。
 

----------------------------------------------------------------------innodb------------------------------------------------------------------------

InnoDB 存储表和索引有以下两种方式。
 使用共享表空间存储,这种方式创建的表的表结构保存在.frm 文件中,数据和索引
保存在 innodb_data_home_dir 和 innodb_data_file_path 定义的表空间中,可以是
多个文件。
 使用多表空间存储,这种方式创建的表的表结构仍然保存在.frm 文件中,但是每个
表的数据和索引单独保存在.ibd 中。如果是个分区表,则每个分区对应单独的.ibd
文件,文件名是“表名+分区名” ,可以在创建分区的时候指定每个分区的数据文件
的位置,以此来将表的 IO 均匀分布在多个磁盘上。
要使用多表空间的存储方式,需要设置参数 innodb_file_per_table,并重新启动服务后
才可以生效,对于新建的表按照多表空间的方式创建,已有的表仍然使用共享表空间存储。
如果将已有的多表空间方式修改回共享表空间的方式,则新建表会在共享表空间中创建,但
已有的多表空间的表仍然保存原来的访问方式。所以多表空间的参数生效后,只对新建的表
生效。
多表空间的数据文件没有大小限制,不需要设置初始大小,也不需要设置文件的最大限
制、扩展大小等参数。
对于使用多表空间特性的表,可以比较方便地进行单表备份和恢复操作,但是直接复
制.ibd 文件是不行的,因为没有共享表空间的数据字典信息,直接复制的.ibd 文件和.frm 文
件恢复时是不能被正确识别的,但可以通过以下命令:
ALTER TABLE tbl_name DISCARD TABLESPACE;
ALTER TABLE tbl_name IMPORT TABLESPACE;
将备份恢复到数据库中,但是这样的单表备份,只能恢复到表原来在的数据库中,而不
能恢复到其他的数据库中。如果要将单表恢复到目标数据库,则需要通过 mysqldump 和
mysqlimport 来实现。
注意:即便在多表空间的存储方式下,共享表空间仍然是必须的,InnoDB 把内部数据词典和未
作日志放在这个文件中。
 

迅投miniQMT量化交易之【网格交易】的实现(25)——写在最后 和大家一起分享如何使用miniQMT实现我们自己的网格交易系统。如果您对量化交易感兴趣,欢迎一起交流。 阅读详情

相关推荐

卫星监测“America”级#两#栖#攻#击#舰#(LHA-6)出港

卫星监测“America”级#两#栖#攻#击#舰#(LHA-6)出港 前脚刚走,后脚又来,山姆大叔又来刷存在感,2020年7月28日,USS Ronald Reagan流窜在我国东海海区被卫星拍了下来: 2020年8月1日,最新卫星图像显示USS Ronald Reagan已经返回母港日本横须贺:距离其出港(2020年6月8日)已经过去了快两个月 然而事情并没有到此结束,“America”级#两#栖#攻#击#舰#(LHA-6)选择在 “八.一” 这个特殊的日子前后出港颇具挑衅的味道。 根据2020年

qq_46071146的博客 1565

MySQL的存储引擎(InnoDB与MyISAM)

Mysql 底层数据引擎以插件形式设计,最常见的是 Innodb 引擎和 Myisam 引擎,用户可以根据个人需求选择不同的引擎作为 Mysql 数据表的底层引擎。 MyISAM 存储引擎 是 MySQL 中常见的存储引擎,虽然性能极佳, 拥有较高的插入,查询速度,但却不支持事务处理(transaction),不支持外键。曾(MySQL 5.5及之前版本)是 MySQL 的默认存储引擎。 InnoDB 存储引擎 是MySQL的数据库引擎之一,现为MySQL的默认存储引擎,事务型数据库的首选引擎

MrYushiwen的博客 2888

Ansys Lumerical + HFSS + optiSLang 三剑客:手把手教你优化行波MZM调制器(附完整参数配置)

本文详细介绍了如何利用Ansys Lumerical、HFSS和optiSLang三款工具构建自动化协同设计流程,以优化行波马赫曾德尔调制器(TW-MZM)的性能。通过参数化仿真、流程集成与元模型技术,该方案能高效解决多物理场耦合挑战,实现调制带宽、驱动电压等多目标的全局优化,显著提升光子集成芯片的设计效率与性能潜力。

weixin_29251131的博客 586

关于Mysql的存储引擎Innodb和Myisam

数据结构 MyIsam和InnoDB 都是采用 B+Tree这种数据结构来实现 B-Tree索引。而很大的区别在于,InnoDB 存储引擎采用“聚集索引”的数据存储方式实现B-Tree索引,所谓“聚集”,就是指数据行和相邻的键值紧凑地存储在一起,注意 InnoDB 只能聚集一个叶子页(16K)的记录(即聚集索引满足一定的范围的记录),因此包含相邻键值的记录可能会相距甚远。 ...

难得糊涂 1074

别再浪费NFC了!手把手教你用Android手机模拟门禁卡(Mifare Classic破解教程)

本文深入探讨Android NFC技术的核心原理与创新应用,教你如何利用手机模拟门禁卡(Mifare Classic破解教程),解锁智能生活的无限可能。涵盖NFC标签类型解析、HCE开发实战及安全实践,让你的Android设备成为数字生活的万能钥匙。

weixin_29239661的博客 230

第1关:STL模板之queue实例一:最少个数

头歌自创答案

xiyunSacire的博客 819

MySQL - 存储引擎MyISAM和Innodb

首先,我们先看一下MySQL的体系架构,对MySQL整个架构有一个直观的感受: MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。存储引擎在MySQL的体系架构中位于第三层,负责MySQL中数据的存储与提取,是与底层系统文件打交道的子系统。MySQL存储引擎是插件式的,执行器通过调用存储引擎的API接口操作数据,接口屏蔽了不同存储引擎之间的差异,可以根据不同的需求去选择不同的存储引擎。存储引擎是根据MySQL提供的文件访问层抽象接口定制的一种文件访问机制,这种机制就

迪曼奥特迦-博客 5063

Android11原生设置屏幕亮由Gamma变化改为线性变化

从Android9 开始屏幕亮度调解变成非线性变化,这样的话就会出现 之前亮度变化很小,到后面时变化亮度很快; 修改为线性变化,只需要修改 ./frameworks/base/packages/SettingsLib/src/com/android/settingslib/display/BrightnessUtils.java /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache L

Android 4926

[MySQL]InnoDB引擎和MyIsam引擎索引存储结构

文章目录MyIsam主键索引非主键索引InnoDB主键索引非主键索引聚集索引与稀疏索引聚集索引稀疏索引 MyIsam 主键索引 ①user.myi文件中存储的是USER表的主键索引结构,最终的叶子节点中存储的是数据在磁盘中的地址; ②user.myd文件中存储的是磁盘地址对应的数据信息。 非主键索引 此处可以看到,user.myi文件中除了存储了主键索引的树装结构外,还存储了我们的另一个索引NAME的索引树结构,查找时根据name找到在磁盘中的位置后再去user.myd中找到相应的数据。 结论:在MyI

从前有座无庙山 495

UG NX二次开发-博客文章速览

写了一些UG NX二次开发的心得体会,内容较多,感觉不好查找相应的内容,所以决心把导航写出来,方便自己也方便读者。主专栏是“”,C#专栏为 : “” ,Python专栏为 : “这三个专栏都会持续的更新。如果有需要咨询或者学习讨论的,请私信博主或者加QQ群:749492565。博主几乎每天都在。

GimiGimmy 3716

【Halcon-2D测量】add_metrology_object_rectangle2_measure 函数功能(用于向2D计量模型中添加旋转矩形(rectangle2类型)计量对象)

HALCON算子add_metrology_object_rectangle2_measure解析摘要 该算子是HALCON 2D计量模块的核心算子,用于添加旋转矩形计量对象并配置测量参数。主要功能包括:定义旋转矩形几何轮廓(中心坐标、主轴角度、长短半长);生成垂直于矩形边界的测量区域;设置边缘提取预处理参数(高斯平滑、振幅阈值)。关键注意事项:MeasureLength1必须小于矩形长短半长;角度参数Phi需使用弧度单位;多线程需同步模型句柄。该算子适用于方形螺母、PCB板边框等矩形零件的精密测量,需与a

weixin_45590420的博客 1223

MySQL存储引擎MyISAM和InnoDB的区别

需要完整版PDF面试文档可扫描左侧二维码拿! 你都工作3年了,怎么还不知道MyISAM和InnoDB有什么区别?一位粉丝被面试官这样一个问题。当时,这位粉丝直接回复“不知道”,这位粉丝自己也怪不好意思的。 其实,面试官问他这个问题也不是随便问的,也是看了这位粉丝简历上写了熟练MySQL才提问的。其实,对于MySQL,这位粉丝可能只是非常熟练地完成建库、建表、往数据库表中读写数据这些简单的操作而已,并没有去了解建表的原理。 这个面试题也给我们敲了一下警钟,对于有些技术的知识点,要是没有掌握到一定深

Tom弹架构 1万+

把 300 亿参数的 Qwen3-30B-A3B 塞进 16GB 手机:MoE、mmap 与内存轮转的完整拆解

这篇文章详细拆解了如何在16GB内存手机上运行305亿参数的Qwen3-30B-A3B大模型。作者通过MoE(专家混合)架构、内存映射(mmap)和专用NPU内存(rpcmem)的巧妙结合实现了这一"不可能"的任务。 核心原理在于:MoE模型将庞大的前馈网络拆分为128个专家,每个词只激活8个专家,97%的权重处于闲置状态;通过mmap技术按需加载当前需要的专家权重;同时利用NPU专用内存高效计算关键部分。三个关键开关(GGML_HEXAGON_MOE_PAGING=1、--mmap、GGML_CPU_RE

q742971636的博客 187

【MYSQL】存储引擎MyISAM和InnoDB

在实现上面两个功能的同时,需要考虑客观条件的限制,因为机器的内存大小是有限的,所以MySQL的InnoDB Buffer Pool的大小同样是有限的,如果需要缓存的页占用的内存大小超过了Buffer Pool大小,也就是Free链表中已经没有多余的空闲缓存页的时候岂不是很尴尬,发生了这样的事儿该咋办?所以,我们不得不再创建一个存储脏页的链表,凡是在LRU链表中被修改过的页都需要加入这个链表中,因为这个链表中的页都是需要被刷新到磁盘上的,所以也叫FLUSH链表,有时候也会被简写为FLU链表。

xiazi0721的博客 1227

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Mysql的【存储引擎】之【InnoDB】与【MyISAM】的区别

"InnoDB"是一种数据库存储引擎,最初由Innobase Oy公司开发,后来被MySQL AB公司收购。这个名称确实不是一个显而易见的缩写或全称,但"Inn"可能代表"inner"(内部)的一个缩写,"DB"代表数据库。因此,可以将"InnoDB"解释为一种内部支持数据库操作的存储引擎。希望这次的解释更清楚了。如果您还有任何疑问,请随时告诉我。--Innobase Oy是一家位于芬兰赫尔辛基的数据库技术公司,最初开发了InnoDB存储引擎。公司成立于1995年,专注于开发高性能的数据库管理系统技术。

sun0322 1321

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

MySQL存储引擎InnoDB和MyISAM的区别

面试经常会问到MySQL存储引擎的相关内容。常见的MySQL存储引擎有MyISAM和InnoDB,本文主要介绍这两种存储引擎的特点和区别以及如何选择合适的存储引擎。 什么是引擎? 引擎(Engine)是开发程序或系统的核心组件。利用引擎,开发者可迅速建立、铺设程序所需的功能。什么是MySQL 引擎? 简单来说:MySQL存储引擎就是指表的类型以及表在计算机上的存储方式。不同的存储引擎决定了MySQL数据库中的表可以用不同的方式来存储。我们可以根据数据的特点来选择不同的存储引擎。InnoDB是事务型数据库的首

qq_52173163的博客 2615

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

MySQL的三种存储引擎 InnoDB、MyISAM、Memory

InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在 MySQL 5.5 之后,InnoDB是默认的MySQL 存储引擎。MyISAM是MySQL早期的默认存储引擎。Memory引擎的表数据时存储在内存中的,由于受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。

weixin_46039745的博客 1588

MySQL的InnoDB和MyISAM存储引擎的区别

详细介绍了Mysql的InnoDB和MyISAM存储引擎的区别。

终生学习践行者 2408

MySQL存储引擎MyISAM和InnoDB

数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。现在许多数据库管理系统都支持多种不同的存储引擎。MySQL 的核心就是存储引擎。

热爱IT行业 1681

MySQL 存储引擎 MyISAM 和 InnoDB

目录引言一、MyISAM 存储引擎1. 存储引擎概述2. MyISAM 介绍3. MyISAM 特点4. MyISAM 支持的存储格式5. 适用的生产场景二、InnoDB 存储引擎1. InnoDB 概述2. 特点3. 适用的生产场景4. 企业选择存储引擎的依据三、存储引擎的查看与修改1. 查看数据库可配置的存储引擎类型2. 查看表使用的存储引擎3. 修改存储引擎总结 引言 存储引擎的实质就是如何实现存储数据,为存储的数据建立索引以及查询、更改、删除数据等技术实现的方法。 不同于很多数据库系统仅仅选择一种

不要因为走的太远而忘了为什么出发 3083

MySQL存储引擎 INNODB和MYISAM

是数据库底层软件组件,数据库管理系统使用数据索引进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧】锁定水平等功能,使用不同的存储引擎可以获得特定的功能。

anbesrt的博客 1177

MySQL存储引擎MyISAM与InnoDB的区别

本文内容是MySQL存储引擎MyISAM与InnoDB的介绍及区别

qq_68874993的博客 1021

深入解析 MySQL 的 MyISAM 和 InnoDB 存储引擎

在 MySQL 数据库中,存储引擎是负责存储和检索数据的核心组件。不同的存储引擎有不同的特点和适用场景。其中,MyISAM 和 InnoDB 是 MySQL 中最为人熟知的两个存储引擎。本文将深入探讨这两个存储引擎的区别,帮助您更好地理解它们的特性以及如何根据实际需求选择合适的存储引擎。

兀行者的博客 1187

MySql存储引擎MyISAM和InnoDB

什么是存储引擎? MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。 例如,如果你在研究大量的临时数据,你也许需要使用内存MySQL存储引擎。内存存储引擎能够在内存中存储所有的表格数据。又或者,你也许需要一个支...

zhangshengdong111的专栏 275

MySQL存储引擎(InnoDB和MyISAM)

    1.InnoDB存储引擎     该引擎最大的优势就是支持事务,其主要设计目标是面向在线事务处理(OLTP)的应用。其特点是行锁设计,支持外键,并支持类似Oracle的非锁定读,即默认读取操作不会产生锁(隔离级别为RR-可重复读)。从5.5.8版本开始,MySQL的默认存储引擎就是InnoDB。       InnoDB通过多版本并发控制(MVCC)来获得高并发性,并且实现了SQL的四种隔离标准。用一种叫做next-keylocking的策略来避免幻读(行锁与间隙锁组合起来用就叫做Next-Key

秃头计划——启动! 2575

Mysql的MyISAM和Innodb两种存储引擎以及区别

目录 一、Mysql的两种存储引擎   1、MyISAM:   2、Innodb: 一、Mysql的两种存储引擎 1、MyISAM: ①不支持事务,但是整个操作是原子性的(事务具备四种特性:原子性、一致性、隔离性、持久性) ②不支持外键,支持表锁,每次锁住的是整张表,MyISAM的表锁有读锁和写锁(两个锁都是表级别): 表共享读锁和表独占写锁。在对MyISAM表进行读操作时,不会阻塞其他用户对同一张表的读请求,但是会阻塞其他用户对表的写请求;对其进行写操作时会阻塞对同一表读操作和写操作.

白不懂黑的静的专栏 1321
上一篇: 深入讲解MySQL Innodb索引的原理
下一篇: js模块化编程之彻底弄懂CommonJS和AMD/CMD!
wiscourper_
博客等级 码龄17年 1641粉丝 272原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值