首页 > 数据库 > MySQL > 正文

MySQL的多种存储引擎

2024-07-24 12:59:34
字体:
来源:转载
供稿:网友

MyISAM

5.5之前的默认存储引擎 系统表,临时表(在排序分组等操作中,数量超过一定大小,由查询优化器建立的临时表)

MyISAM存储引擎由MYD数据信息和MYI索引信息组成 它的锁级别是表级锁,对表进行数据读取时使用共享锁进行(共享锁与共享锁之间不会发生阻塞,因为只进行读并未修改) 当表损坏时可以进行修复,并不支持事务!!!

create table myIsam(id int, c1 varchar(10))engine=myisam;//这是创建一个MyISAM存储引擎的表check table myIsam;//检查表是否正常repair table MyIsam; //这是对表名为MyIsam表进行修复

当然,也可以使用myisamchk工具进行修复,但是要停止MySQL服务才能操作此工具 支持索引:全文索引 支持数据压缩,使用myisampack命令

myisampack -b -f(强制) muIsam.MYI//会自动备份生成myIsam.OLD

在mysql5.0之前表最大为4G,要想存储大表要修改参数MAX_Rows和AVG_ROW_LENGTH,但在5.0之后取消的对表的限制,默认为256TB。 使用场景:非事务性应用。报表应用,只读类应用,空间类应用,GPS数据存放

Innodb

使用表空间进行数据存储,适合处理小事务,很少进行回滚 innodb_file_per_table参数 如果是on,则每一个表都有一个tablename.ibd 系统表空间和独立表空间的选择 1.系统表空间无法简单的收缩文件大小, 2.独立表空间可以用 optimize table 命令收缩系统文件,对表进行重建,无需重启sql服务器 系统表空间,会产生顺序读写,影响IO效率 独立表空间可以对多个文件刷新数据 建议:innodb使用独立表空间

表转移的步骤(系统表转移到独立表) 1.使用mysqldump导出所以数据库数据 2.停止mysql服务,修改参数,删除相关文件, 3.重启MYSQL,重建表并导入

系统表中存放innodb数据字典信息(通过B树管理),Undo回滚段 innodb是事务性存储引擎 支持事务acid特性 原子性 一致性 持久性 隔离性 Redo Log 重做日志,存储已提交事务,顺序读写 Undo Log 回滚日志 ,存储未提交事务,随机读写

它支持行级锁(存储引擎层实现)最大程度支持并发

lock table tablename write;//锁上

锁实现了事务的隔离性 锁分为 共享锁(read) 和 独占锁(write) 锁的粒度,表示锁定的单位(表,行,等) 表级锁,并发低。 阻塞和死锁并不一样!! innodb状态检查

show engine innodb status

innodb支持全文索引,空间函数 myisam innodb 都是以2进制存储

CSV

CSV存储引擎的存储是以文本形式存储的(打开文件能看得懂,,字符文件) .csv存储表内容(数据) csm存储元数据 表状态数据量 .frm表结构 它的特点:以csv格式对数据进行存储,列不能为NULL,不支持索引(优化查询)

create table mycsv(id int not null,c1 varchar(10) not null,c2 char(10) not null) engine=csv;//这是创建一个csv引擎的表

适用场景:数据交换的中间表,电子表格(变成csv文件 放在mysql目录下)

Archive

缓存写,用zlib对表数据进行压缩 数据存在.ARZ文件中 只支持insert和select操作,支持缓冲区 只支持在自增ID上增加索引(auto_increment)

create table myarchive(id int auto_increment not null,key(id)) engine=archive;//创建archive索引表

适用场景 日志和数据采集类应用

Memory

存储在内存中, 功能特点:支持hash索引(不能范围查找,等值查找使用hash) 支持btree索引(范围查找使用) 所有字段固定长度,不支持BLOG和TEXT等大字段 使用的是表级锁,表的大小由max_heap_table_size参数决定。 适用场景 查找或者映射表,例如邮编和地区的对应表

Federated

提供了访问远程MySQL服务器上表的方法 但本地要保存表结构和远程服务器的连接信息 性能不太好 show engines; 这里写图片描述 要想支持 要在mysql配置文件中修改


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表