存储引擎的特性-MyISAM InnoDB MEMORY MERGE

MyISAM:不支持事务、外键 优势:访问速度快 对事务完整性没有要求或者以select insert为主的应用基本可以使用这个引擎来创建表

每个MyISAM在磁盘上存储成3个文件 其文件名和表名相同 扩展名分别是

.frm  (存储表定义)

.MYD(DATA)

.MYI(INDEX)

数据 索引文件可以放置在不同的目录 平均分布IO

MyISAM类型的表可能会损坏 损坏后不能被访问 可以用check table 语句来检查MyISAM表的健康 用REPAIR TABLE语句修复一个损坏的MyISAM表。表损坏可能导致数据库异常重新启动,需要尽快修复 确认原因

MyISAM支持3种不同的存储格式:

静态表 :默认存储格式 非变长字段 每个记录都是固定长度 有点存储迅速 容易缓存 出现故障容易恢复 缺点:占用的空间通常比动态表多。静态表的数据在存储 按照列的宽度定义 补足空格。但访问不能得到空格,在返回前已经去掉。 

 动态表:占用空间小 但频繁更新和删除记录会产生碎片 需要定期执行OPTIMIZE TABLE语句或者myisamchk -r改善性能 在出现故障时恢复相对困难

 压缩表:myisampack工具创建 占非常小的磁盘空间 每个记录都是被单独压缩 


InnoDB:提供具有提交、回滚 崩溃恢复的事务安全。对比MyISAM的存储引擎 InnoDB写的处理效率差一些,占用跟多的磁盘空间以保留数据和索引

特点:

1.自动增长列

InnoDB表的自动增长可以手工插入,

mysql> alter table autoincre_demo auto_increment=5;

设置自动增长初始值

查询当前线程最后插入记录使用的值 插入多个值 返回的第一条记录使用自增长的值

mysql> select LAST_INSERT_ID();

对于InnoDB表 自动增长列是索引

2.外键约束

3.存储方式:1).使用共享表空间存储   保存在frm文件中 数据和索引文件 保存在innodb_data_home_dir innodb_data_file_path定义的表空间中,可以是多个文件

            2).多表空间存储  表结构放在.frm文件中,每个表的数据和索引单独保存在ibd中 设置参数Innodb_file_per_table+重启服务 多表空间的数据文件没有大小限制 不需要设置初始大小 比较方便进行单表备份和恢复操作     可以通过以下命令将备份恢复到数据库中

ALTER TABLE TB1 DISCARD TABLESPACE;

ALTER TABLE TB1 IMPORT TABLESPACE;

该种操作只能恢复到原来的数据库中 无法复制到其他库中

注意:在多表空间存储下  共享表空间必须  InnoDB把内部数据字典和在线重做日志放在这个文件中

Memory:使用存在内存中的内容创建表 每个Memory表实际对应一个磁盘文件 格式.frm访问速度快 由于数据存放在内存 并且用HASH索引 一旦服务关闭  表中数据就会丢掉

在创建index时候 可以指定使用HASH or BTREE索引

create index mem_hash using HASH on tab_memory(city_id);

drop index mem_hash on tab_memory;

create index mem_hash using BTREE on tab_memory(city_id);

SHOW INDEX FROM tab_memory \G

服务器需要足够内存维持所有在同一时间使用的MEMORY表,不再需要MEMORY内容时 要释放被MEMORY表使用的内存 DELETE FROM | TRUNCATE | DROP TABLE删除整张表

每个MEMORY表中可以放置的数据量大小 受到max_heap_table_size系统变量的约束 这个系统变量的初值16M 

MAX_ROWS 最大行数

MERGE:一组MyISAM表的组合,这些MyISAM表必须结构完全相同 可以进行SELECT | UPDATE | DELETE操作 实际对内部的MyISAM进行  insert操作 通过INSERT_METHOD子句定义插入的表 使用FIRST LAST使得插入操作被相应作用在第一或最后一个表上,不定义这个子句或定义为NO 不能进行插入操作

MERGE表保留两个文件:文件名以表名开始 frm文件存储定义 另一个MRG文件包含组合表信息  包括MERGE表有哪些表组成 插入新数据时的依据 

选择适用的存储引擎

MyISAM:以读操作 插入操作为主 很少的更新和删除操作 对事务完整性 并发性不是很高Web  数据仓库和其他应用环境下最常适用的存储引擎之一

InnoDB:用于事务处理应用程序 支持外键 对应用事务的完整性有较高要求 在并发条件下要求数据一致性 除了插入 查询以外还有很多更新 删除操作  InnoDB存储引擎除了有效降低删除 更新导致的锁 确保事务的完整提交 和回滚。对于计费 和 财务系统

MEMORY:所有数据保存在RAM中 需要快速定位记录和其他类似数据的环境下 提供极快的访问 MEMORY的缺陷是表的大小有限制 大表无法缓存在内存中 其次确保表数据可恢复 用于更新不太频繁的小表 用来快速得到访问结果

MERGE:将一系列的等同的MyISAM表以逻辑方式组合在一起 作为一个对象引用他们 有点在于可以突破对单个MyISAM的限制 通过将不同的表分布在多个磁盘上 有效改善MERGE表的访问效率 对数据仓库VLDB环境比较合适。

猜你喜欢

转载自blog.csdn.net/ichglauben/article/details/81180564
今日推荐