MySQL存储引擎概述

一、MySQL支持插件式存储引擎,默认包括有多种存储引擎,还可以自己定制化引擎,引擎是在表级别设置的。

二、各种存储引擎的特性

  (A) MyISAM :不支持事务、不支持外键、访问速度快。

    每个MyISAM表在磁盘上存储成3个文件,文件名与表名相同,扩展名是:

    (A1) frm (存储表定义)

    (A2) MYD (MYData, 存储数据)

    (A3) MYI (MYIndex, 存储索引)

    数据文件和索引文件可以放置在不同的目录,平均分布IO,获得更快的速度。可以在创建表的时候,指定该表的 DATA DIRECTORY

和 INDEX DIRECTORY 语句来分别指定路径。

    MyISAM表可能损坏,可以通过工具检测和修复,表损坏可能导致数据库异常重新启动,需要尽快修复。支持三种存储格式,分别是:

    静态(固定长度)表;字段都是非变长字段:存储速度快,容易缓存,故障易恢复,占用空间多。注意:会去除字段的尾部空格

    动态表;包含变长字段,可能产生碎片,需定期优化表。占用空间较多,故障不易恢复。

    压缩表;由 myisampack 工具创建,占用空间非常小,每个记录单独压缩,非常小的访问开支。

  (B) InnoDB :支持事务、支持外键,相比于MyISAM,写入速度稍差一些,占用空间稍多一些。

  注意:使用 LAST_INSERT_ID() 查询的只是当前线程最后插入记录使用的值,并不是数据库中最后插入记录使用的值。

  外键关联时:四种索取类型:

    RESTRICT:限制在子表有关联记录的情况下,父表不能更新或者删除;

    NO ACTION:限制在子表有关联记录的情况下,父表不能更新或者删除;

    CASCADE:表示父表在更新或删除时,相应地更新和删除子表的记录。

    SET NULL:表示父表在更新或删除时,子表的对应字段被SET NULL。

  当某个表被其他表创建了外键参照,那么该表的对应索引或者主键禁止被删除。

  可以暂时关闭外键的检测:SET FOREIGN_KEY_CHECKS=0。

  InnoDB存储表和索引有两种方式:

    使用共享表空间存储,表结构在 .frm 文件中,数据和索引文件在 innodb_data_home_dir 和 innodb_data_file_path 定义的表空间中,可以是多个文件。

    使用多表空间存储,表结构在 .frm 文件中,每个表的数据和索引单独在 .ibd 中。如果是分区表,这每个分区对应单独的 .ibd 文件,文件名是“表名+分区名", 可以指定每个分区的数据文件位置。

    注意:即使在多表空间的存储方式下,共享表空间还是必须的,InnoDB把内部数据词典和未作日志放在这个文件中。

  (C) MEMORY:使用内存中的内容来创建表。访问速度快,默认是HASH索引,数据不可持久化。

    每个MEMORY表只对应一个磁盘文件,格式是 .frm。

    每个MEMORY表的数据量大小,受到 max_heap_table_size 系统变量的约束,初始大小是16MB。

    MEMORY表通常用于内容变化不频繁的转换码表,统计操作的中间结果表。注意该表数据的不持久化特性。

  (D) MERGE:其实就是对多个结构完全相同的MyISAM表的合并表示。

    

时间: 2024-11-07 02:12:00

MySQL存储引擎概述的相关文章

mysql基础之-mysql存储引擎概述(八)

0x01 mysql 存储引擎:存储引擎也通常被称作“表类型” mysql> show engines;   --- 查看当前所有所支持的存储引擎 mysql> show table status 存储引擎格式: SHOW TABLE STATUS [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr] mysql> show table status in hellodb where Name='class'\G Name 表名 Engi

MYSQL 存储引擎概述

一.存储引擎 Mysql中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中每一种技术都使用了不同的存储机制,索引技巧.锁定水平并且最终提供广泛的不同功能和能力.通过选择不同的技术,你能够获得额外的速度或功能,从而改善你的应用的整体功能. 二.分类 1.MYISAM存储引擎: 不支持事务,也不支持外键,优势是访问速度快,对事务完整性没有要求或者以SELECT,INSERT为主的应用基本可以用这个引擎创建表. (1)数据存储形式 MyISAM采用的是索引与数据分离的形式,将数据保存在三个文

MySQL学习笔记(1) - 存储引擎概述

和大多数数据库不同,在MySQL中存在一个存储引擎的概念,针对不同的存储需求可以选择最优的存储引擎. 一.MySQL存储引擎概述 插件式存储引擎是MySQL数据库最重要的特征之一,用户可以根据应用的需要寻找如何存储和索引数据.是否使用事务等.MySQL默认支持多种存储引擎,以适用于不同领域的数据库应用需求,用户可以通过选择选择不同的存储引擎提供应用的效率,提供灵活的存储,用户甚至可以按照自己的需要定制和使用自己的存储引擎,以实现最大程度的可定制性. MySQL支持的存储引擎包括MyISAM.In

7.Mysql存储引擎

7.表类型(存储引擎)的选择7.1 Mysql存储引擎概述 mysql支持插件式存储引擎,即存储引擎以插件形式存在于mysql库中. mysql支持的存储引擎包括:MyISAM.InnoDB.BDB.MEMORY.MERGE.EXAMPLE.NDB Cluster.ARCHIVE.CSV.BLACKHOLE.FEDERATED等. 其中:InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表: 默认存储引擎(即建表时不指定存储引擎),mysql5.5开始默认存储引擎为InnoDB,my

第 3 章 MySQL 存储引擎简介

3.1MySQL 存储引擎概述 到后来,MySQL 意识到需要更改架构,将前端的业务逻辑和后端数据存储以清晰的层次结构拆分开的同时,对ISAM 做了功能上面的扩展和代码的重构,这就是MyISAM存储引擎的由来. MySQL 的插件式存储引擎主要包括MyISAM,Innodb,NDB Cluster,Maria,Falcon, Memory,Archive,Merge,Federated 等,其中最著名而且使用最为广泛的MyISAM 和Innodb两种存储引擎.MyISAM 是MySQL 最早的I

mysql存储引擎的种类与区别(innodb与myisam)

查找数据库的存数引擎: show engines show variables like '%storage_engine%' 更改数据库的引擎更改配置文件/etc/my.cnf 修改default-storage-engine=InnoDB(需要更改的存储引擎),然后重启数据库 service mysqld restart alter table engine=innodb 存储引擎说白了就是如何存储数据.如何为存储的数据建立索引和如何更新.查询数据等技术的实现方法.因为在关系数据库中数据的存

MySql存储引擎+表解压缩机制+索引+查询缓存机制+慢查询日志

一.大型网站优化之MySql优化 1.优化和不优化的对比的 在业界当中我们有一个叫大数据(big data)的概念,所谓的大数据指代千万级别以上的数据作为起步的数据.所以我们现在需要对两张都具有50331650条记录的表进行查询对比,其中表名为tbl_no的表是没有做过任何优化手段的表,表名为tbl_yes的表是做过优化手段的表.这个实验的目的是观察具有优化手段和不具有优化手段的查询中速度的差别. 实验条件: 1)两张表的数据记录总数是相同的 2)两张表的数据字段结构也是一样的 3)查询的记录的

解析MySQL的体系架构及学习Mysql存储引擎MyISAM和InnoDB

mysql体系结构: 由:连接池组件.管理服务和工具组件.sql接口组件.查询分析器组件.优化器组件. 缓冲组件.插件式存储引擎.物理文件组成.mysql是独有的插件式体系结构,各个存储引擎有自己的特点. mysql各个存储引擎概述: (1) innodb存储引擎:[/color][/b] 面向oltp(online transaction processing).行锁.支持外键.非锁定读.默认采用repeaable级别(可重复读)通过next-keylocking策略避免幻读.插入缓冲.二次写

mysql存储引擎

mysql的物理文件组成包括错误日志,查询日志,慢查询日志,事务日志,二进制日志. 日志文件中记录mysql数据库运行期间发生的变化,记录mysql数据库的客户端连接状况,sql语句的执行情况和错误信息. mysql的逻辑结构可以看成是二层架构,第一层叫做SQL layes,数据库系统处理底层数据库之前的所有工作都在这一层完成,包括权限判断,sql解析,执行计划优化,query cache的处理等.第二层就是存储引擎层,叫做storage engine layes,也是底层数据存取操作实现部分,