MariaDB数据库存储引擎详解资料.docx
- 文档编号:11687141
- 上传时间:2023-03-30
- 格式:DOCX
- 页数:7
- 大小:20.88KB
MariaDB数据库存储引擎详解资料.docx
《MariaDB数据库存储引擎详解资料.docx》由会员分享,可在线阅读,更多相关《MariaDB数据库存储引擎详解资料.docx(7页珍藏版)》请在冰豆网上搜索。
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表进行的。
似乎看到分区表的影子,但完全是两种不同的东西.
官网说明:
archive存储引擎:
这种类型只支持select和 insert语句,而且不支持索引。
非常适合存储大量的独立的作为历史记录的数据。
Archive拥有高效的插入速度,但其对查询的支持相对较差常,应用于日志记录和聚合分析方面。
Federated:
将不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。
非常适合分布式应用
CSV:
逻辑上由逗号分割数据的存储引擎。
它会在数据库子目录里为每个数据表创建一个.CSV文件。
这是一种普通文本文件,每个数据行占用一个文本行。
CSV存储引擎不支持索引。
BlackHole:
黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继
MYSQL中的部分存储引擎的特性:
Attribute
MyISAM
Heap
BDB
InnoDB
Transactions(支持事务)
No
No
Yes
Yes
Lockgranularity(锁粒度)
Table
Table
Page(8KB)
Row
Storage(存储)
Splitfiles
In-memory
Singlefilepertable
Tablespace(s)
Isolationlevels(隔离级别)
None
None
Readcommitted
All
Portableformat(可移植性)
Yes
N/A
No
Yes
Referentialintegrity(参照完整性,似乎是对外键的支持)
No
No
No
Yes
Primarykeywithdata
No
No
Yes
Yes
MySQL cachesdatarecords
No
Yes
Yes
Yes
Availability(支持的版本)
Allversions
Allversions
MySQL-Max
AllVersions
MariaDB 与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表格式.这将使某些GROUP BY和DISTINCT请求速度更快,因为Aria有比MyISAM更好的缓冲机制.包含Aria是MariaDB5.1和MySQL 5.1之间的一个不同.
Therearealsosomenewoptionsto CREATETABLE:
TRANSACTIONAL=0|1 :
Transactional meanscrash-safeforAria
PAGE_CHECKSUM=0|1 :
Ifindexand datashouldusepagechecksumsforextrasafety.
TABLE_CHECKSUM=0|1 :
Same as CHECKSUM inMySQL5.1
ROW_FORMAT=PAGE :
Thenewcacheable rowformatforAriatables.DefaultrowformatforAriatablesand onlyrowformatthatcanbeusedif TRANSACTIONAL=1.To emulateMyISAM, use ROW_FORMAT=FIXED orROW_FORMAT=DYNAMIC
CHECKSUMTABLE nowignoresvaluesinNULLfields.This makes CHECKSUMTABLE fasterandfixessomecaseswhere sametabledefinitioncouldgivedifferentchecksumvalues dependingonrowformat.Thedisadvantageisthatthevalueisnow differentcomparedtootherMySQLinstallations.Thenewchecksum calculationisfixedforalltableenginesthatusesthedefault waytocalculateandMyISAMwhichdoesthecalculationinternally. Note:
OldMyISAMtableswithinternalchecksumwillreturnthesame checksumasbefore.Tofixthemtocalculateaccordingtonewrules youhavetodoan ALTERTABLE.Youcanusetheoldwaysto calculatechecksumsbyusingtheoption --old tomysqld orsetthesystemvariable'@@old'to 1 whenyou doCHECKSUMTABLE...EXTENDED;
AtstartupAriawillchecktheArialogsandautomatically recoverthetablesfromlastcheckpointifmysqldwasnottaken downcorrectly.
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存储引擎小结
引擎引擎
优点
缺点
适用场景
问题思考
Aria
XtraDB
支持事务
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.不支持索引
适用于日志类的,只插入不修改
且查询较少的数据.
CSV
BlackHole
官网的一些建议:
XtradbandInnoDB isagoodgeneraltransactionstorage engineandusuallythebestchoiceifunsure.
--Xtradband InnoDB 是一种很好的通用事务存储引擎,在无法确定如何选择时,它也许就是一种最佳的选择
MyISAM and Aria haveasmallfootprintandallow foreasycopybetweensystems.MyISAMisMySQL'soldeststorage engine,whileAriaisMariaDB'smoremodernimprovement.
--MyISAM and Aria占用的资源比较小,两者是兼容的,可以很容易的在这两个系统间进行迁移 .MyISAM是mysql最古老的存储引擎,而Aria是MariaDB对它的更先进的改进.
TokuDB isatransactionalstorageenginewhichisoptimized forworkloadsthatdonotfitmemory,andprovidesagood compressionratio.
MEMORY doesnotwritedataon-disk(allrowsareloston crash)andisbest-usedforread-onlycachesofdatafromother tables,orfortemporaryworkareas.
--MEMORY 不写数据到硬盘中(意味着重启将丢失),最适用于缓存其它表中的数据用于只读,或者用于临时工作区
The Archive storageengineis,unsurprisingly,best usedforarchiving.
--Archive顾名思义最适用于存档类的数据
CONNECT allowsaccesstodifferentkindsoftextfilesand remoteresourcesasiftheywereregularMariaDBtables.
SphinxSE isusedasaproxytorunstatementsonaremote Sphinxdatabaseserver(mainlyusefulforadvancedfulltext searches).
Spider usespartitioningtoprovidedatashardingthrough multipleservers.
ScaleDB isacommercialstorageenginesuitedfor large-scaleonlinetransactionprocessinganddatawarehousing.
常用的有关存储引擎的操作命令
查看数据库可以支持的存储引擎:
查看某张表使用的存储引擎
Show create table tablename; //显示表的创建语句,其中包含存储引擎信息ENGINE=XXX
show table status like ‘XXX’\G //显示表的当前状态
创建表时指定:
Create table XXX(
columnName(列名1) type(数据类型) attri(属性设置),
columnName(列名2) type(数据类型) attri(属性设置),
……..) engine = engineName
修改表的存储引擎:
Alter table tableName engine =engineName
引用于朝夕网络()分享时请保留
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MariaDB 数据库 存储 引擎 详解 资料