MyISAM和InnoDB以及其他常见搜索引擎

Mysql-简谈存储引擎InnoDB和MyISAM 2.MyISAM和InnoDB区别 2.1 事务支持 MyISAM 强调的是性能,每次查询具有原⼦性,其执⾏速度⽐InnoDB类型更快,但是不提供事务⽀持。 阅读详情

MyISAM存储引擎
特点:
1,不支持事务,表锁(表级锁,加锁会锁住整个表),支持全文索引,对于一些OLAP(online analytical processing,在线分析处理)操作速度快
2,官方存储引擎,除windows版本外,是所有mysql版本的默认存储引擎。
设计理念:
1,myisam存储引擎表由myd和myi组成。myd用来存放数据文件,myi用来存放索引文件,可以通过myisampack工具进一步压缩 数据文件,因为该工具使用huffman编码静态算法来压缩数据。因此,使用该工具压缩后的表是只读的,当然也可以通过myisampack来解压数据文 件。
InnoDB存储引擎
特点:
1,支持事务,主要面向在线事务处理(OLTP)方面的应用。
2,行锁设计,支持外键,并支持orcle的非锁定读,即默认情况下读取操作不加锁。
3,第三方存储引擎,被orcle收购。
4,windows版本默认存储引擎,其他系统mysql默认存储引擎为MyISAM。
设计理念:
InnoDB默认将数据放到一个逻辑的表空间中,这个表空间就像黑盒子一样由InnoDB自身进行管理。从mysql4.1开始,它可以将每个 InnoDB存储引擎的表单独存放到一个独立的ibd文件中。与orcle类似,InnoDB存储引擎同样可以使用裸设备(row disk)来建立其表空间。

MySQL有以下几种引擎:ISAM、MyISAM、HEAP(也称为MEMORY)、CSV、BLACKHOLE、ARCHIVE、PERFORMANCE_SCHEMA、InnoDB、 Berkeley、Merge、Federated和Cluster/NDB等。
ISAM
该引擎在读取数据方面速度很快,而且不占用大量的内存和存储资源;但是ISAM不支持事务处理、不支持外来键、不能够容错、也不支持索引。该引擎在包括MySQL 5.1及其以上版本的数据库中不再支持。
MyISAM
该引擎基于ISAM数据库引擎,除了提供ISAM里所没有的索引和字段管理等大量功能,MyISAM还使用一种表格锁定的机制来优化多个并发的读写操作,但是需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间,否则碎片也会随之增加,最终影响数据访问性能。MyISAM还有一些有用的扩展,例如用来修复数据库文件的MyISAMChk工具和用来恢复浪费空间的 MyISAMPack工具。MyISAM强调了快速读取操作,主要用于高负载的select,这可能也是MySQL深受Web开发的主要原因:在Web开发中进行的大量数据操作都是读取操作,所以大多数虚拟主机提供商和Internet平台提供商(Internet Presence Provider,IPP)只允许使用MyISAM格式。
MyISAM类型的表支持三种不同的存储结构:静态型、动态型、压缩型。
静态型:指定义的表列的大小是固定(即不含有:xblob、xtext、varchar等长度可变的数据类型),这样MySQL就会自动使用静态MyISAM格式。使用静态格式的表的性能比较高,因为在维护和访问以预定格式存储数据时需要的开销很低;但这种高性能是以空间为代价换来的,因为在定义的时候是固定的,所以不管列中的值有多大,都会以最大值为准,占据了整个空间。
动态型:如果列(即使只有一列)定义为动态的(xblob, xtext, varchar等数据类型),这时MyISAM就自动使用动态型,虽然动态型的表占用了比静态型表较少的空间,但带来了性能的降低,因为如果某个字段的内容发生改变则其位置很可能需要移动,这样就会导致碎片的产生,随着数据变化的增多,碎片也随之增加,数据访问性能会随之降低。
对于因碎片增加而降低数据访问性这个问题,有两种解决办法:
a、尽可能使用静态数据类型;
b、经常使用optimize table table_name语句整理表的碎片,恢复由于表数据的更新和删除导致的空间丢失。如果存储引擎不支持 optimize table table_name则可以转储并重新加载数据,这样也可以减少碎片;
压缩型:如果在数据库中创建在整个生命周期内只读的表,则应该使用MyISAM的压缩型表来减少空间的占用。
HEAP(也称为MEMORY)
该存储引擎通过在内存中创建临时表来存储数据。每个基于该存储引擎的表实际对应一个磁盘文件,该文件的文件名和表名是相同的,类型为.frm。该磁盘文件只存储表的结构,而其数据存储在内存中,所以使用该种引擎的表拥有极高的插入、更新和查询效率。这种存储引擎默认使用哈希(HASH)索引,其速度比使用B-+Tree型要快,但也可以使用B树型索引。由于这种存储引擎所存储的数据保存在内存中,所以其保存的数据具有不稳定性,比如如果mysqld进程发生异常、重启或计算机关机等等都会造成这些数据的消失,所以这种存储引擎中的表的生命周期很短,一般只使用一次。
CSV(Comma-Separated Values逗号分隔值)
使用该引擎的MySQL数据库表会在MySQL安装目录data文件夹中的和该表所在数据库名相同的目录中生成一个.CSV文件(所以,它可以将CSV类型的文件当做表进行处理),这种文件是一种普通文本文件,每个数据行占用一个文本行。该种类型的存储引擎不支持索引,即使用该种类型的表没有主键列;另外也不允许表中的字段为null。
BLACKHOLE(黑洞引擎)
该存储引擎支持事务,而且支持mvcc的行级锁,写入这种引擎表中的任何数据都会消失,主要用于做日志记录或同步归档的中继存储,这个存储引擎除非有特别目的,否则不适合使用。详见博客《BlackHole 存储引擎》
ARCHIVE
该存储引擎非常适合存储大量独立的、作为历史记录的数据。区别于InnoDB和MyISAM这两种引擎,ARCHIVE提供了压缩功能,拥有高效的插入速度,但是这种引擎不支持索引,所以查询性能较差一些。
PERFORMANCE_SCHEMA
该引擎主要用于收集数据库服务器性能参数。这种引擎提供以下功能:提供进程等待的详细信息,包括锁、互斥变量、文件信息;保存历史的事件汇总信息,为提供MySQL服务器性能做出详细的判断;对于新增和删除监控事件点都非常容易,并可以随意改变mysql服务器的监控周期,例如(CYCLE、MICROSECOND)。
InnoDB
该存储引擎为MySQL表提供了ACID事务支持、系统崩溃修复能力和多版本并发控制(即MVCC Multi-Version Concurrency Control)的行级锁;该引擎支持自增长列(auto_increment),自增长列的值不能为空,如果在使用的时候为空则自动从现有值开始增值,如果有但是比现在的还大,则直接保存这个值; 该引擎存储引擎支持外键(foreign key) ,外键所在的表称为子表而所依赖的表称为父表。该引擎在5.5后的MySQL数据库中为默认存储引擎。
Berkeley(BDB)
该存储引擎支持COMMIT和ROLLBACK等其他事务特性。该引擎在包括MySQL 5.1及其以上版本的数据库中不再支持。
Merge
该引擎将一定数量的MyISAM表联合而成一个整体。参见博客《MySQL Merge存储引擎》
Federated
该存储引擎可以不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。这种存储引擎非常适合数据库分布式应用。
Cluster/NDB
该存储引擎用于多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大、安全和性能要求高的场景










MySQL之四大引擎、账号管理以及建库认识 MySQL中的引擎是指存储引擎,它是用于存储、管理和检索数据的内部组件。不同的存储引擎具有不同的特性和功能,例如MyISAM、InnoDB、MEMORY等。选择合适的存储引擎可以根据应用的需求来提高性能和可靠性。MySQL中的存储引擎可以通过CREATE TABLE语句中的ENGINE选项来指定。 阅读详情

相关推荐

mysql数据表引擎InnoDB和MyISAM的特点

1、MyISAM表引擎特点 (1)MyISAM 是MySQL缺省存贮引擎 (2)具有检查和修复表格的大多数工具. (3)表格可以被压缩 (4)支持全文搜索. (5)不是事务安全的.如果事物回滚将造成不完全回滚,不具有原子性。 (6)不支持外键。 (7)如果执行大量的SELECT,MyISAM是更好的选择。 (8)每张MyISAM 表被存放在三个文件 :frm 文件存放表格定义,数据文件是MYD (MYData),索引文件是MYI (MYIndex) 引伸。 (9)表是保存成文件的形式,在跨平台的数据转移

陈嘉怡的专栏 1879

mysql数据库引擎有哪些

MySQL是一个开源的关系型数据库管理系统(RDBMS),它支持多种数据库引擎。这些数据库引擎可以用于存储、管理和操纵数据。 MySQL支持以下数据库引擎: InnoDB: 这是MySQL的默认数据库引擎,它是一种事务安全的引擎,支持外键约束、行级锁定和崩溃恢复能力。 MyISAM: 这是MySQL的传统数据库引擎,它提供了较快的查询性能,但是不支持事务处理和外键约束。 MEMORY: 这是...

weixin_35756690的博客 1995

Remote ID的调制解调FPGA实现

Remote ID源于航空安全需求,例如在无人机密集区域实现设备跟踪和防碰撞。它类似于航空领域的ADS-B系统,但针对低空飞行器。Remote ID系统通常工作在特定频段(如2.4 GHz或5.8 GHz),通过无线链路广播数据包,包含设备ID、经纬度、高度和速度等信息。调制解调过程确保这些数据在噪声环境中可靠传输。例如,标准如ASTM F3411定义了Remote ID的协议框架,其中调制解调是关键物理层组件。

yulongfenghu的博客 1506

MySQL中的各种引擎

MySQL中的各种引擎

gaohuanjie的专栏 5万+

onnxruntime模型部署(一)-pythonAPI

简单模型的onnx模型的导出,以及onnxruntime推理引擎的模型部署

qq_45983373的博客 4059

避坑指南:STM32H7不同DMA控制器(MDMA/DMA2D/BDMA)到底该用哪个?

本文深入解析STM32H7系列芯片的DMA控制器选型策略,涵盖MDMA、DMA2D、BDMA等不同控制器的架构原理与性能对比。通过实际项目案例,提供高速TCM数据搬运、GUI加速、低功耗传输等场景的选型决策树,并分享性能优化与调试技巧,帮助工程师避开常见陷阱,提升系统效率。

weixin_26876073的博客 447

MySQL的数据库引擎介绍

Mysql数据库引擎

wangshiqi666的博客 2382

每天一个优秀提示词学习收藏 - 文本去AI化(四)

宝子们,今天不藏私啦!我把这段时间四处搜罗、潜心钻研出来的文本去AI化Prompt 提示词大礼包双手奉上,这可都是能让你的 AI 创作水平原地起飞的干货!走过路过不要错过,赶紧码住,开启你的 AI 创作进阶之旅吧!

2446

mysql数据库搜索引擎要先进入_Mysql搜索引擎都有哪些区别

Mysql搜索引擎都有哪些区别发布时间:2020-09-16 14:04:13来源:亿速云阅读:72作者:小新小编给大家分享一下Mysql搜索引擎都有哪些区别,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!一般MySQL常用的引擎有:ISAM,MyISAM,HEAP,InnoDB和Berkley(BDB).ISAM:ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源,不足之...

weixin_39673303的博客 123

Fiori Elements 表格之 Tree Tables:从数据建模到交互行为的全链路剖析

SAP Fiori elements的Tree Table组件将分层数据以表格形式展示,支持展开/折叠操作,适用于组织结构、物料清单等多级数据场景。该组件在List Report和Object Page中均可使用,支持懒加载、多选、列冻结等标准表格功能,并与OData V4服务层级注解深度集成。后端需通过RAP或CAP建模提供层级数据,前端通过清单配置切换表类型。需注意在草稿模式下仅显示活动实体,且展开状态在编辑时不保留。性能方面建议采用懒加载策略,避免全量加载树节点。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 160

基于OpenCV实现暗通道先验去雾算法及改进,效果惊人

深度技术文,前方高能

公号:一条coding 2万+

知识点

但在分布式数据库中,有时会出于可用性和性能的考虑,在处理网络分区或故障时,采用柔性事务和最终一致性的方案,以满足CAP和BASE的要求。在TCC模式中,每个参与者(服务或数据库)实现自己的Try、Confirm和Cancel方法,Try在业务执行前进行预留资源和校验,Confirm在业务执行成功后确认提交,Cancel则在业务失败后进行回滚操作。XA协议:XA协议是一种经典的分布式事务协议,通过两阶段提交(Two-Phase Commit,2PC)来保证跨多个参与者(例如数据库)的事务的一致性。

B__B_B的博客 292

模型预测控制(MPC)解析(三):多输入多输出系统

本文为阅读笔记,仅供学习交流使用!!! 在之前的文章中,为了简单起见,以单输入单输出系统为例介绍了MPC控制的实现方法。因为使用的是状态空间方程作为系统模型,这种方法可以轻松的扩展到多输入多输出系统中。 ...

行者无疆的博客 1万+

mysql中innodb和myisam对比及索引原理区别

InnoDB和MyISAM是很多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,5.7之后就不一样了1、事务和外键InnoDB具有事务,支持4个事务隔离级别,回滚,崩溃修复能力和多版本并发的事务安全,包括ACID。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索...

杰哥一号号的博客 8万+

【文献阅读】使用深度语音后验改进独立于说话者的构音障碍可懂度分类

原文名称:本文探讨了利用DeepSpeech后验概率改进说话人无关的构音障碍可理解性分类方法。作者提出了一个基于DeepSpeech(一种端到端的语音转文本引擎)输出的新特征集,用于评估构音障碍患者的语音可理解性。这些新特征在说话人无关的情况下表现良好,能够更好地处理不同说话人的变异性。背景介绍:数据集:特征提取:实验设置:结果:本文提出的新特征集在说话人无关的构音障碍可理解性分类任务中表现出色,特别是在低可理解性和高可理解性类别上。未来的工作将集中在减少低可理解性和中可理解性类别之间的混淆,以进一步提高系

帅小柏的博客 452

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

MyISAM和InnoDB介绍

MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transaction)。

w_hname的博客 776

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

mysql的innodb和myisam对比及索引原理区别

mysql的innodb和myisam对比及索引原理区别事务和外键InnoDBMyISAMmysql中的锁存储索引并发两个选择的场景其它细节为什么MyISAM会比Innodb 的查询速度快SELECT InnoDB必须每行数据来保证它符合两个条件MyISAM索引实现InnoDB索引实现总结 事务和外键 InnoDB InnoDB具有事务,支持4个事务隔离级别,回滚,崩溃修复能力和多版本并发的事务安...

Ariqiao的博客 1850

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

MySql何时用MyISAM何时用InnoDB

MyISAM和InnoDB是MySQL提供的两种搜索引擎 MyISAM和InnoDB的区别 ①InnoDB支持事务与外键和行级锁,MyISAM不支持(最主要的差别) ②MyISAM读性能要优于InnoDB,除了针对索引的update操作,MyISAM的写性能可能低于InnoDB,其他操作MyISAM的写性能也是优于InnoDB的,而且可以通过分库分表来提高MyISAM写操作的速度 ③MyI...

最怕一生碌碌无为,还安慰自己平凡可贵 2万+

MySQL存储引擎 INNODB和MYISAM

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

anbesrt的博客 1177

MySql的MyIsam和InnoDb两个搜索引擎的区别与联系

首先说MySQL MySQl用的数据结构是B+树数据结构,而oracle用的是B树数据结构,稍微说一点,不是重点 MyIsam和InnoDb的结构区别(非聚簇和聚簇) 首先你肯定要知道MySql用的是B+树数据结构,但是B+树结构也是有区别的,比如这两个搜索引擎下的B+树的结构就有相同和区别: 首先是肯定像B+树的特点一样,所有的data数据域都在叶子节点,而内结点就只有索引,节省空间 叶子节点...

胖墩的IT博客 1781

InnoDB和MyISAM的对比

InnoDB和MyISAM是MySQL数据库中的两种存储引擎,它们各有特点,适用于不同的场景。

我爱JAVA 1765

关于mysql的自增id测试,innodb和myisam下的不同表现

innodb引擎下的自增id测试 1 innodb引擎下,如果显示insert了最大值,那么下次的AUTO_INCREMENT值就是这个最大值+1 mysql> select * from innodb_test; +----+ | id | +----+ |  1 | |  2 | |  3 | +----+ 3 rows in set (0.00 sec) mys

cug_jiang126com的专栏 5478

mysql中innodb和myisam对比

InnoDB和MyISAM是很多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,5.7之后就不一样了 1、事务和外键 InnoDB具有事务,支持4个事务隔离级别,回滚,崩溃修复能力和多版本并发的事务安全,包括ACID。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能 MyISAM管理非事务表。它提供高速存储和检索,以...

砍柴樵夫 542

【面试】MyISAM 和 INNODB的区别是什么?

MyISAM存储: 如果表对事务要求不高,同时是以查询和添加为主的,我们考虑使用myisam存储引擎,比如bbs 中的 发帖表,回复表,还有批量添加MyISAM效率高 INNODB 存储: 对事务要求高,保存的数据都是重要数据,我们建议使用INNODB,比如订单表,账号表。 【面试重点】MyISAM 和 INNODB的区别? 1. 事务安全(MyISAM不支持事务,INNODB支持事务) ...

zp的博客 1万+

mysql中innodb和myisam的区别

1、innodb和myisam是什么? innodb和myisam是mysql最常用的两种存储引擎。 MySQL 有多种存储引擎,每种存储引擎有各自的优缺点(第3节说)。可以使用命令“show engines”查看引擎(下图附命令以及显示内容)。 2、如何使用innodb和myisam? mysql 5.5版本以及以后默认使用innoDB,如果创建表时候不指定存储引擎默认使用innoDB,如果不想使用默认的存储引擎可以使用如下方法改变: a、表创建默认存储引擎: ...

zhangkang65的专栏 831
上一篇: MYSQL获取当前表自增值
下一篇: 正则表达式常用通配符
Yaroo
博客等级 码龄11年 88粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值