首页 > 数据库技术 > 详细

MySQL存储引擎

时间:2015-12-11 06:55:44      阅读:207      评论:0      收藏:0      [点我收藏+]

1、简介

mysql使用插件式存储引擎,支持第三方存储引擎,数据库的很多特性都有存储引擎决定

存储引擎是表级别的概念也称为表类型,在创建表中可以单独定义,同一个数据库不建议使用多个存储引擎

mysql在5.1及之前的版本默认的存储引擎是MyISAM,现在是InnoDB,最大的区别就是InnoDB支持事务而MyISAM不支持

表类型:

      CREATE TABLE ... ENGINE=

2、InnoDB

设计目标:处理大量的短期事务,

数据存储于“表空间(table space)”中:

 1)所有InnoDB表的数据和索引放置于同一个表空间中;

表空间文件:datadir定义的目录下

数据文件:ibddata1, ibddata2, ...             #1个文件不够用会使用多个文件,但在上级表空间看来属于同一个文件

 2)每个表单独使用一个表空间存储表的数据和索引;

        innodb_file_per_table=ON   #在配置文件中添加这个指令使用该特性

     数据文件(存储数据和索引):tbl_name.ibd, 

    表格式定义:tbl_name.frm


基于MVCC来支持高并发,支持所有的四个隔离级别,默认级别为REPEATABLE READ; 间隙锁防止幻读;

使用聚集索引

支持“自适应hash索引”

锁粒度:行级锁


MariaDB (XtraDB (percona))



数据存储:表空间

并发:MVCC, 间隙锁

索引:聚集索引、辅助索引

性能:预计操作、自适应hash、插入缓存区

备份:支持热备(xtrabacup)


MyISAM:

支持全文索引(FULLTEXT index)、压缩、空间函数(GIS); 但不支持事务,且为表级锁;

崩溃后无法安全恢复


适用场景:只读(或者写较少)、表较小(可以接受长时间进行修复操作)

Aria:crash-safe


文件:

tbl_name.frm: 表格式定义

tbl_name.MYD: 数据文件

tbl_name.MYI: 索引文件


特性:

加锁和并发:表级锁

修复:手工或自动修复、但可能丢失数据

索引:非聚集索引

延迟更新索引键:

压缩表


行格式:dynamic, fixed, compressed, compact, redundent


其它的存储引擎:

CSV:将普通的CSV(字段通过逗号分隔)作为MySQL表使用;

MRG_MYISAM:将多个MyISAM表合并成为一个虚拟表;

BLACKHOLE:类似于/dev/null,不真正存储任何数据;

MEMORY:所有数据都保存于内存中,内存表;支持hash索引;表级锁;

临时表

PERFORMANCE_SCHEMA:伪存储引擎;

ARCHIVE:只支持SELECT和INSERT操作;支持行级锁和专用缓存区;

FEDERATED:用于访问其它远程MySQL服务器一个代理,它通过创建一个到远程MySQL服务器的客户端连接,并将查询传输到远程服务器执行,而后完成数据存取;

在MariaDB的上实现是FederatedX


MariaDB支持的其它存储引擎:

OQGraph

SphinxSE

TokuDB

Cassandra

CONNECT

SQUENCE


MySQL存储引擎

原文:http://xiexiaojun.blog.51cto.com/2305291/1721872

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!