草庐IT

Mysql存储引擎

我不知道取什么名字好 2023-03-28 原文

Mysql存储引擎:

1. MyISAM

1.1 MyISAM存储组成

MyISAM的存储格式主要有:

1、数据文件:存储数据行, 数据文件扩展名为.MYD(MYData)。

2、索引文件:存储索引数据,索引文件扩展名为.MYI(MYIndex)。

3、frm文件:存储表定义信息,主要包括表列和列定义信息、各种属性、扩展及MyISAM的表的各种参数等信息,表定义扩展名为.MYD(MYData)。

4、opt文件:存储MyISAM表的相关选项,将缓存的表据放在此文件中。

 

1.2 MyISAM具有的特点:

1. 不支持事务:MyISAM表不支持事务处理,无法保证多次操作要么全部成功,要么全部失败,若不小心造成数据损坏只能重建整个表。
2. 不支持完整性约束(不支持外键):MyISAM表不支持完整性约束,比如不能建立主外键,也不能限制列的唯一性、非空性等。
3. 支持表锁:MyISAM表支持表锁、行锁,但是表锁模式在某些场景下可能会阻塞其它事务,所以不建议采用。
4. 支持全文索引:MyISAM引擎支持全文索引。
5. 支持插入高速缓存:MyISAM表支持插入高速缓存,在插入大量数据时可以大大提升效率。
6. 高读取性能:MyISAM表的数据量比较大,无法采用事务的机制防止数据的脏读,因此MyISAM表的性能更加好。(建议在主从机制中,可以在主服务器使用InnoDB存储引擎,在从结点中使用MyISAM存储引擎)

注:全文索引是指一种特殊的索引,可以让系统分析整段文本的意思,从而建立索引,方便用户在搜索引擎中搜索出包含所要搜索指定文本的信息。例如在一个文档中包含有“它的色彩艳丽”一词,只要输入“艳丽”一词就可以搜索到所要查询的文档。这样可以节省很多时间,搜索结果也会更精准。

 

2. InnoDB

2.1 InnoDB存储组成

InnoDB存储引擎使用B+树来索引数据,将索引数据存储在IBD文件中。InnoDB存储引擎使用两个独立的文件:索引文件和数据文件。 索引文件后缀为.ibd,它将一些B+树数据结构储存在一个文件里,用来存放关键字或是主键。 而数据文件是 .ibd 类型,部分其他内容索引文件中有新信息时将同步更新,以便恢复或更新操作的完整过程的正确性,达到索引重建、内容抵消以及内容读取的功能。 关于范式,InnoDB会自动拆分大的多样的表,形成一个索引树,通过B+树的索引去定位一条具体的数据,从而实现快速查找数据。

 

1.2 InnoDB具有的特点:

1. 支持事务:InnoDB存储引擎是支持事务的,它支持ACID(原子性、一致性、隔离性和持久性)特性,且实现了MVCC(多版本并发控制),支持自动提交,回滚,崩溃恢复等。
2. 支持行锁和表锁:InnoDB支持行级锁和表级锁,行级锁可以有效的提高并发性能,而表级锁可以确保数据的完整性。
3. 支持完整性约束(外键):InnoDB存储引擎支持外键约束功能,可以保证完整性,减少数据冗余。
4. 实现了类型可拓展表:InnoDB支持多字段的类型可拓展表,可以很好的满足用户的多变需求。
5. 支持多版本并发控制:InnoDB实现了多版本并发控制(MVCC),应用程序可以比较数据的变化范围,以此来避免写冲突及死锁。
6. 支持原子性:InnoDB支持事务原子性,可以让修改某行记录操作原子化。
7. 支持快照恢复:InnoDB支持快照恢复,可以从上一次发生故障后的检查点(checkpoint)开始恢复。
8. 支持分区表:InnoDB支持水平及垂直分区表,可以支持更大的表,以及提升查询性能。
9. 支持缓存机制:InnoDB内部采用预读机制,将数据放入缓存中,可以提高数据的读取性能。
10. 支持排序:InnoDB可以根据用户给出的排序域,对结果集进行排序。


A:ACID是指原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

1. 原子性(Atomicity):事务是作为一个不可分割的单元执行的,要么完全执行,要么完全不执行。
2. 一致性(Consistency):事务执行前和执行后,数据库必须保持一致状态。
3. 隔离性(Isolation):一个事务的执行不能被其他并发的事务所干扰。
4. 持久性(Durability):一个事务一旦被提交,它对数据库中数据的改变就是永久性的,即使发生系统故障也不应破坏其结果。

 

3.MEMORY

3.1,MEMORY介绍存储引擎

MEMORY存储引擎使用物理内存存储数据,在服务器关闭时会丢失存储的内容,因此又被称为内存存储引擎,不支持事务操作。

3.2,InnoDB具有的特点:

1. 速度极快:MEMORY引擎存储的数据存储在物理内存中,且没有磁盘的IO消耗,读写数据的速度非常快;

2. 服务器重启消失:MEMORY存储引擎存储的内容随着服务器的关闭而消失,因此数据不可持久化;

3. 不支持事务:MEMORY不支持事务操作,也就是说不能用ROLLBACK、COMMIT等操作;

4. 不能添加索引:MEMORY存储引擎不能添加索引,全表扫描几乎是唯一的访问方式。

 

用途:

MEMORY的主要应用是临时表,一些短暂的操作,使用MEMORY可以提高查询的效率,比如从复杂的表中查询 出少量的数据,在不需要持久化的场景中,使用MEMORY会更加高效。

有关Mysql存储引擎的更多相关文章

  1. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  2. ruby - 在没有 sass 引擎的情况下使用 sass 颜色函数 - 2

    我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re

  3. ruby-on-rails - Rails 中的推荐引擎 - 2

    我想为我的Rails网络应用程序提供推荐功能。特别是,我想向新注册的用户推荐他可能想要关注的其他用户。Rails中是否有用于此目的的引擎/gem?如果没有,我应该从哪里开始构建它?谢谢。 最佳答案 有Coletivogemhttps://github.com/diogenes/coletivo我试了一下。在MySQL上运行。Neo4jhttp://neo4j.org真的很容易实现一个“跟随谁”。事实上,大多数展示其能力的样本都涉及“跟随谁”。快速提示-只有在JRuby上运行时,Neo4j.rb才会很酷。如果不是-使用Neograph

  4. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  5. ruby - Rack:如何将 URL 存储为变量? - 2

    我正在编写一个简单的静态Rack应用程序。查看下面的config.ru代码:useRack::Static,:urls=>["/elements","/img","/pages","/users","/css","/js"],:root=>"archive"map'/'dorunProc.new{|env|[200,{'Content-Type'=>'text/html','Cache-Control'=>'public,max-age=6400'},File.open('archive/splash.html',File::RDONLY)]}endmap'/pages/search.

  6. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  7. UE4 源码阅读:从引擎启动到Receive Begin Play - 2

    一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame

  8. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  9. ruby-on-rails - 为什么在 Rails 5.1.1 中删除了 session 存储初始化程序 - 2

    我去了这个website查看Rails5.0.0和Rails5.1.1之间的区别为什么5.1.1不再包含:config/initializers/session_store.rb?谢谢 最佳答案 这是删除它的提交:Setupdefaultsessionstoreinternally,nolongerthroughanapplicationinitializer总而言之,新应用没有该初始化器,session存储默认设置为cookie存储。即与在该初始值设定项的生成版本中指定的值相同。 关于

  10. ruby-on-rails - 无法安装 mysql2 0.3.14 gem - 2

    我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby​​目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin

随机推荐