MySQL之存储引擎.docVIP

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MySQL之存储引擎

MySQL之存储引擎 存储引擎的概念是MySQL的一个特性,可简单理解为表类型;每一个表都有一个存储引擎,可在创建时指定,也可之后使用ALTER TABLE语句修改,都是通过ENGINE关键字设置的;若创建时没有指定,则为默认存储引擎,默认存储引擎也可通过参数文件中default-table-type参数修改。 ----查看当前默认存储引擎,默认为MyISAM mysql show variables like table_type; ----查看当前数据库支持的存储引擎 mysql show engines \G; 从输出结果可看到支持多个存储引擎,下面介绍几个重要的存储引擎如下: MyISAM 默认存储引擎,不支持事务、外键,但访问速度快,对事务完整性不要求,适合于以SELECT/INSERT为主的表;每个MyISAM物理上存储为3个文件,文件名与表名相同,扩展名分别为:.frm(存储表定义)、MYD(MYData存储数据)、MYI(MYIndex存储索引),其中数据文件和索引文件可以放置在不同目录,平衡I/O。 数据文件和索引文件的路径,需要在创建表时通过DATA DIRECTORY和INDEX DIRECTORY语句指定,需要绝对路径,且具有访问权限。 MySQL类型的表可能因各种原因损坏,可通过CHECK TABLE语句检查表的健康,使用REPAIR TABLE语句修改。 MySQL类型的表支持3中不同的存储格式,如下: 静态表:默认存储格式,字段长度固定,存储迅速,容易缓存,缺点是占用空间多。注意:字段存储按照宽度定义补足空格,应用访问时去掉空格,若字段本身就带有空格,也会去掉,这点特别注意。 动态表:变长字段,记录不是固定长度,优点是占用空间少,但频繁的更新删除操作会产生碎片,需要定期执行OPTIMIZE TABLE语句或myisamchk –r命令来改善,出现故障时难以恢复。 压缩表:由myisampack工具创建,每个记录单独压缩,访问开支小,占用空间小。 InnoDB 具有提交、回滚、崩溃恢复的事务安全,相对MySQL来说,写处理能力差些,且会占用较多磁盘空间以保留数据和索引。具有以下不同于其他引擎的特点: (1)自动增长列 InnoDB表可定义自动增长列,若插入的值为0或空时,则实际插入的值为自动增长后的值;可通过ALTER table语句强制设置自动增长列的初始值,默认从1开始,该值保存在内存中,若数据库重启,则会丢失;可使用LAST_INSERT_ID()查询当前线程最后插入记录使用的值,若一次插入多条记录,则返回第一条记录使用的自动增长值。 对于InnoDB表,自动增长列必须是索引,或者是组合索引的第一列;对于MyISAM表,可以为组合索引的其他列,插入记录后,自动增长列是按照组合索引的前面几列进行排序后递增的。 (2)外键约束 只有InnoDB引擎支持外键约束;创建索引时,可指定删除、更新父表时,对子表的相应操作;RESTRICT/NO ACTION相同,是指限制在子表有关联记录的情况下父表不能更新;CASCADE表示父表在更新或删除时,更新或删除子表对应记录;SET NULL表示父表在更新或删除时,子表对应字段被SET NULL。 (3)存储格式 InnoDB存储表和索引有两种方式: 使用共享表空间存储――表结构保存在.frm文件中;数据和索引保存在innodb_data_home_dir和innodb_data_file_path定义的表空间中,可以为多个文件 使用多表空间存储――表结构仍然存储在.frm文件中,但每个表的数据和索引单独保存在.ibd中。若为分区表,则每个分区对应单独的.ibd文件,文件名为表名+分区名 使用多表空间存储,需设置参数innodb_file_per_table,并重启服务才可生效,只对新建表有效 MEMORY 该存储引擎使用存在于内存中的内容来创建表,每个表实际对应一个磁盘文件,格式为.frm;这类表因为数据在内存中,且默认使用HASH索引,所以访问速度非常快;但一旦服务关闭,表中的数据会丢失。 每个MEMORY表可以放置数据量的大小受max_heap_table_size系统变量的约束,初始值为16MB,可按需求增大;此外,在定义MEMORY表时可通过MAX_ROWS子句定义表的最大行数。 该存储引擎主要用于那些内容稳定的表,或者作为统计操作的中间表;对该类表需谨慎,因为数据并没有实际写入磁盘,一旦重启,则会丢失。 MERGE 该引擎是一组MyISAM表的组合,这些表必须结构相同,MERGE表本身没有数据;对MERGE表查询、更新、删除操作实际上是对内部实际MyISAM表进行的;对于MERGE表的插入,是通过INSERT_METHOD子句定

文档评论(0)

hf916589 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档