您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > MariaDB数据库存储引擎详解
MariaDB数据库存储引擎详解在看MariaDB的存储引擎之前,可以先了解MySQL存储引擎。MySQL常用的存储引擎:MyISAM存储引擎:是MySQL的默认存储引擎。MyISAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求。MyISAM表还支持3中不同的存储格式:1静态表2动态表3压缩表静态表是默认的存储格式,静态表中的字段都是非变长的字段,优点是:存储非常迅速,容易缓存,出现故障容易恢复;缺点是:占用的空间通常比动态表多。(注意:在存储时,列的宽度不足时,用空格补足,当时在访问的时候并不会得到这些空格)动态表的字段是变长的,优点是:占用的空间相对较少,但是频繁地更新删除记录会产生碎片,需要定期改善性能,并且出现故障的时候恢复相对比较困难。压缩表占用磁盘空间小,每个记录是被单独压缩的,所以只有非常小的访问开支。MyISAM表存储为三个文件:.frm文件存储表定义。数据文件的扩展名为.MYD(MYData)。索引文件的扩展名是.MYI(MYIndex)InnoDB存储引擎:提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。MEMORY(heap)存储引擎:memory实际是heap的替代品。使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件(只包含表定义)。优点:MEMORY类型的表访问非常得快,因为它的数据是放在内存中的,并且默认使用HASH索引缺点:一旦服务关闭,表中的数据就会丢失掉。其只支持表锁,并发性能较差,并且不支持TEXT和BLOB列类型.存储变长字段(varchar)时是按照定常字段(char)的方式进行的,因此会浪费内存MERGE(mrg_myisam)存储引擎:是一组MyISAM表的组合,这些MyISAM表必须结构完全相同。MERGE表本身没有数据,类似于一个视图.对MERGE类型的表进行查询、更新、删除的操作,就是对内部的MyISAM表进行的。似乎看到分区表的影子,但完全是两种不同的东西.官网说明:存储引擎:这种类型只支持select和insert语句,而且不支持索引。非常适合存储大量的独立的作为历史记录的数据。Archive拥有高效的插入速度,但其对查询的支持相对较差常,应用于日志记录和聚合分析方面。Federated:将不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用CSV:逻辑上由逗号分割数据的存储引擎。它会在数据库子目录里为每个数据表创建一个.CSV文件。这是一种普通文本文件,每个数据行占用一个文本行。CSV存储引擎不支持索引。BlackHole:黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继MYSQL中的部分存储引擎的特性:AttributeMyISAMHeapBDBInnoDBTransactions(支持事务)NoNoYesYesLockgranularity(锁粒度)TableTablePage(8KB)RowStorage(存储)SplitfilesIn-memorySinglefilepertableTablespace(s)Isolationlevels(隔离级别)NoneNoneReadcommittedAllPortableformat(可移植性)YesN/ANoYesReferentialintegrity(参照完整性,似乎是对外键的支持)NoNoNoYesPrimarykeywithdataNoNoYesYesMySQLcachesdatarecordsNoYesYesYesAvailability(支持的版本)AllversionsAllversionsMySQL-MaxAllVersionsMariaDB与MySQL相比较MariaDB提供以下特性:XtraDB替换InnoDB(在MariaDB中使用InnoDB等同于XtraDB),XtraDB是Percona开发维护的InnoDB威力加强版,整合Google、Facebook等公司和MySQL社区的补丁。XtraDB存储引擎是完全的向下兼容,在MariaDB中,XtraDB存储引擎被标识为ENGINE=InnoDB,这个与InnoDB是一样的,所以你可以直接用XtraDB替换掉InnoDB而不会产生任何问题Aria存储引擎和Sphinx存储引擎基于GeleraCluster的MariaDB集群方案多主复制(将在MariaDB10.0实现,由淘宝贡献)Cassandra存储引擎(将在MariaDB10.0实现),MariaDB更强的地方在于:Aria(原名Maria)存储引擎Aria存储引擎是默认被编译进MariaDB5.1里的,并且在mysqld启动的时候就要求同时启动.另外,内部的磁盘表是Aria表格式而不是MyISAM表格式.这将使某些GROUPBY和DISTINCT请求速度更快,因为Aria有比MyISAM更好的缓冲机制.包含Aria是MariaDB5.1和MySQL5.1之间的一个不同.TherearealsosomenewoptionstoCREATETABLE:TRANSACTIONAL=0|1:Transactionalmeanscrash-safeforAriaPAGE_CHECKSUM=0|1:Ifindexanddatashouldusepagechecksumsforextrasafety.TABLE_CHECKSUM=0|1:SameasCHECKSUMinMySQL5.1ROW_FORMAT=PAGE:ThenewcacheablerowformatforAriatables.DefaultrowformatforAriatablesandonlyrowformatthatcanbeusedifTRANSACTIONAL=1.ToemulateMyISAM,useROW_FORMAT=FIXEDorROW_FORMAT=DYNAMICCHECKSUMTABLEnowignoresvaluesinNULLfields.ThismakesCHECKSUMTABLEfasterandfixessomecaseswheresametabledefinitioncouldgivedifferentchecksumvaluesdependingonrowformat.ThedisadvantageisthatthevalueisnowdifferentcomparedtootherMySQLinstallations.ThenewchecksumcalculationisfixedforalltableenginesthatusesthedefaultwaytocalculateandMyISAMwhichdoesthecalculationinternally.Note:OldMyISAMtableswithinternalchecksumwillreturnthesamechecksumasbefore.TofixthemtocalculateaccordingtonewrulesyouhavetodoanALTERTABLE.Youcanusetheoldwaystocalculatechecksumsbyusingtheoption--oldtomysqldorsetthesystemvariable'@@old'to1whenyoudoCHECKSUMTABLE...EXTENDED;AtstartupAriawillchecktheArialogsandautomaticallyrecoverthetablesfromlastcheckpointifmysqldwasnottakendowncorrectly.PBXT是MariaDB附带的一种存储引擎,PBXT在MariaDB的5.1/5.2/5.3版本中存在,但从MariaDB5.5开始就不再提供PBXT存储引擎,而且以后也将不再提供。原因是PBXT已经不再继续开发了,当然,在MariaDB的源码发行中还将包含它的源码,但你需要自行构建才能使用。PerconaXtraDB是InnoDB存储引擎的增强版,被设计用来更好的使用更新计算机硬件系统的性能,同时还包含有一些在高性能环境下的新特性。XtraDB存储引擎是完全的向下兼容,在MariaDB中,XtraDB存储引擎被标识为ENGINE=InnoDB,这个与InnoDB是一样的,所以你可以直接用XtraDB替换掉InnoDB而不会产生任何问题。PerconaXtraDB包含有所有InnoDB's健壮性,可依赖的ACID兼容设计和高级MVCC架构。XtraDB在InnoDB的坚实基础上构建,使XtraDB具有更多的特性,更好调用,更多的参数指标和更多的扩展。从实践的角度来看,XtraDB被设计用来在多核心的条件下更有效的使用内存和更加方便,更加可用。新的特性被用来降低InnoDB的局限性。MariaDB对存储引擎新特性的选择基于用户的需求和现实环境中的真实需求。FederatedX存储引擎分布式存储SphinxSE存储引擎用于全文检索官网介绍:更快的复制查询处理线程池更少的警告和bug运行速度更快多的Extensions(Moreindexparts,newstartupoptionsetc)更好的功能测试数据表消除慢查询日志的扩展统计支持对Unicode的排序MariaDB存储引擎小结引擎引擎优点缺点适用场景问题思考AriaXtraDB支持事务1写入的效率较差2占用更多的存储空间需要事务支持的生产环境FederatedX支持分布式系统需要使用分布式系统的情况1.和单机相比的读写效率如何?2.如某个RDBMS故障会发生什么?SphinxSE支持全文检索需要全文检索的情景使用前要单独安装MEMORY读写速度快1.重启后数据清空2.占用内存空间使用读频繁的基础代码表可以创建Aria表再通过触发器定入memory表aria表负责更新,memory表负责读取重启后通过aria表初始化memory表MERGE(mrg_myisam)合并多个同构表进行操作1.执行效率没有提升2.本身没有任何约束如:将数据进行分表存储(表的数量随时间增长)又需要对这些表进行聚合操作,这时可以使用merge感觉只是在使用的时候方便并没有带来效率的提升约束完全由基础表控制,这样会在多个表中产生重复数据archive插入速度非常快1.只支持插入和查找2.不支持索引适用于日志类的,只插入不修改且查询较少的数据.CSVBlackHole官网的一些建议:XtradbandInnoDBisagoodgeneraltransactionstorageengineandusuallythebestchoiceifunsure.--XtradbandInnoDB是一种很好的通用事务存储引擎,在无法确定如何选择时,它也许就是一种最佳的选择MyISAMandAriahaveasmallfootprintandallowforeasycopybetweensystems.MyISAMisMySQL'soldeststorageengine,whileAriaisMariaDB'smoremodernimprovement.--MyISAMandAria占用的资源比较小,两者是兼容的,可以很容易的在这两个系统间进行迁移.MyISAM是mysql最古老的存储引擎,而Aria是MariaDB对它的更先进的改进.TokuDBisatransactionalstorageenginewhichisoptimizedforworkloadsthatdonotfitmemory,and
本文标题:MariaDB数据库存储引擎详解
链接地址:https://www.777doc.com/doc-2886782 .html