zoukankan      html  css  js  c++  java
  • 表类型(存储引擎)的选择

    1、常用存储引擎的对比

    2、MyISAM是MySQL的默认存储引擎,不支持事务、不支持外键。优点是访问速度快,批量插入的速度高,对事务完整性没有要求或者以select、insert为主的应用基本上都可以使用这个引擎来创建表。

    2.1、每个MyISAM在磁盘上有3个文件,.frm(存储表定义),.MYD(MYData,存储数据),.MYI(MYIndex,存储索引),数据文件和索引文件可以放置在不同的目录,平均分布IO,获得更快的速度。

    2.2、MyISAM的表支持3种不同的存储格式,分别是静态(固定长度)表(默认存储格式,优点是存储非常迅速,容易缓存,出现故障容易恢复,但占用的空间通常比动态表多,静态表的数据在存储的时候会按照列的宽度定义补足空格,但是在应用访问的时候并不会得到这些空格,这些空格在返回给应用之前已经去掉,所以如果数据末尾原本就存在空格,也会被去掉,需要特别注意)、动态表(记录的字段不是固定长度的,这样占用的存储空间相对较少,但是频繁地更新删除记录会产生碎片,而且出现故障的时候回复相对比较困难)、压缩表(由myisampack工具创建,占据非常小的磁盘空间,每个记录是被单独压缩的,所以只有非常小的访问开支)。

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

    3.1、InnoDB表的自动增长列可以手工插入,但是插入的值如果是空或者0,则实际插入的将是自动增长后的值。对于InnoDB表,自动增长列必须是索引,如果是索引,也必须是组合索引列的第一列。

    3.2、MySQL支持外键的存储引擎只有InnoDB。在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。

    3.3、InnoDB存储表和索引有两种方式:使用共享表空间存储(表结构保存在.frm文件中,数据和索引保存在Innodb_home_dir和innodb_data_file_path定义的表空间中,可以是多个文件);使用多表空间存储(表结构依然保存在.frm文件中,但是每个表的数据和索引单独保存在.ibd中,如果是个分区表,则每个分区对应单独的.ibd文件,文件名是“表名+分区名”,可以在创建分区的时候指定每个分区的数据文件的位置,以此来将表的IO 均匀分布在多个磁盘上。即便在多表空间的存储方式下,共享表空间仍然是必须的,InnoDB 把内部数据词典和未作日志放在这个文件中。)

    4、MEMORY存储引擎使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件,格式是.frm,默认使用HASH索引。MEMORY 类型的存储引擎主要用在那些内容变化不频繁的代码表,或者作为统计操作的中间结果表,便于高效地对中间结果进行分析并得到最终的统计结果

    5、MERGE存储引擎是一组MyISAM表的组合,这些MyISAM表必须结构完全相同,MERGE表本身并没有数据,对MERGE类型的表进行查询、更新、删除操作实际上是对内部的MyISAM表进行的。MERGE 表在磁盘上保留两个文件,文件名以表的名字开始,一个.frm 文件存储表定义,另一个.MRG 文件包含组合表的信息,包括MERGE 表由哪些表组成、插入新的数据时的依据。可以通过修改.MRG 文件来修改MERGE 表,但是修改后要通过FLUSH TABLES 刷新。

    6、存储引擎的选择:如果应用是以读操作和插入操作为主,只有少量的更新和删除操作,并且对事务完整性、并发性要求不是很高,那么适合选择MyISAM存储引擎。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询以外,还包括很多的更新、删除操作,那么InnoDB存储引擎比较合适。MEMORY 表通常用于更新不太频繁的小表,用以快速得到访问结果。MERGE 表的优点在于可以突破对单个MyISAM 表大小的限制,并且通过将不同的表分布在多个磁盘上,可以有效地改善MERGE 表的访问效率。这对于诸如数据仓储等VLDB

    环境十分适合。

  • 相关阅读:
    Smart Client Architecture and Design Guide
    Duwamish密码分析篇, Part 3
    庆贺发文100篇
    .Net Distributed Application Design Guide
    New Introduction to ASP.NET 2.0 Web Parts Framework
    SPS toplevel Site Collection Administrators and Owners
    来自Ingo Rammer先生的Email关于《Advanced .Net Remoting》
    The newsletter published by Ingo Rammer
    深度探索.Net Remoting基础架构
    信道、接收器、接收链和信道接受提供程序
  • 原文地址:https://www.cnblogs.com/mingyao123/p/8462949.html
Copyright © 2011-2022 走看看