Mysql存储引擎

阅读更多

一、Mysiam

a、存储

Mysiam由FRM、MYI和MYD文件组成

b、锁

共享锁,只能锁表不支持锁行

c、损坏修复

CHECK TABLE myisam_table; //检查表是否损坏
REPAIR TABLE myisam_table; //修复表

d、索引类型

全文索引

e、压缩

对于数据大量插入后不进行任何修改后可以队标进行压缩处理,压缩后表不可写入任何数据

mysiampack -f mysiam_table.myi //需要进入mysql数据文件的目录

 f、限制

  mysql5.0之前文件最大为4G,如果存储大表则修改 MAX_ROWS和AVG_ROW_LENGTH 

g、使用场景

  归档数据,财务数据归档分析 等一些不需要使用事务的大数据存储

 

 

二、Innodb

Mysql5.5.8(包含)之后版本默认存储引擎修改为Innodb,这是一重大改变,让数据库管理人员

优点:

1、Innodb是一种事务性存储引擎,完全支持事务的ACID特性。

2、Innodb支持行级锁

3、行级锁可以最大程度的支持并发

4、行级锁是有存储引擎层实现的,Mysql数据库并不知道

 

缺点:

存储文件:

.ibd 数据存储文件(innodb_file_per_table设置为1时才有该文件)

.frm 元数据表结构存储文件

 

阻塞和死锁

什么是阻塞:

阻塞一个事务中的锁需要等待另外一个事务的锁释放。

什么是死锁:

两个或者两个事务上相互对方的事务而产生的 异常。

 

innodb优化:

系统表空间所有表数据都存在:ibdata1文件中,在繁忙的系统中,会发现系统表空间会不断增长。会产生IO瓶颈。

 

独立表空间存下在和扩展名为ibd的文件中。Mysql5.6后默认使用独立表空间配置。
查看innodb运行状态:
show engine innodb status
 
三、CSV

存储文件:

.CSV 是数据内容文件 

.CSM元数据、表状态和数据量存储文件

缺点:不能建立任何索引,字段不能为空,不能创建自增列

优点:可以手动编辑,可以识别任何csv格式的文件。可以将excel转换成为csv格式后,直接进行识别。

 

四、ARCHIVE

 特点:只支持select 和 insert 操作,不支持delete 和update,支持高并发的插入

缺点:只支持在自增列上创建索引,其他字段不能创建索引

存储:ARZ文件存储数据

 

五、MEMORY

特点:数据存在在内存中,所以数据库重启数据就会丢失,支持hash索引和btree两种索引,等值查找简历hash索引,范围查询使用btree索引,MEMORY引擎表默认是hash索引。犹豫数据存储在内存中,所以尽可能让字段范围变的更精确比如char(10) 而不使用varchar(10),不支持大字段类型,例如text blog等,MEMORY是表级锁。

表存储数据最大不能超过 max_heap_table_size 的值,默认为16M,如果想要存储更多数据就需要修改该数据。

使用场景:

1、用于查找和映射,例如邮编和地区对应表。

2、用于保存数据分析产生的中间表

3、用于缓存周期性性聚合数据的结果表

 

六、FEDERATED

特点:

1、提供了访问远程mysql服务器上的表方法

2、本地不存储数据,数据全放在远程服务器上。

3、本地需要保存表结构和远程服务器链接信息 

 

创建表语法语法和远程表一样:

CREATE TABLE `local` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `uname` VARCHAR(150) DEFAULT NULL COMMENT '名称',
  KEY `id` (`id`)
) ENGINE=FEDERATED CONNECTION='mysql://root:[email protected]:3307/db1/archive_table' ; 

 

 

七、Blackhole(黑洞引擎)

任何写入到此引擎的数据均会被丢弃掉,不做实际存储,Select语句的内容永远是空,Blackhole虽然不存储数据,但是MySQL还是会正常的记录下Binlog,而且这些Binlog还会被正常的同步到Slave上,可以在Slave上对数据进行后续的处理。 这样对于在Master上只需要Binlog而不需要数据的场合下,balckhole就有用了。

 

  • Mysql存储引擎_第1张图片
  • 大小: 14.9 KB
  • 查看图片附件

你可能感兴趣的:(Mysql存储引擎)