乐趣区

关于mysql:Mysql存储引擎选择

InnoDB 存储引擎是 Mysql 的默认存储引擎。InnoDB 存储引擎提供了具备提交、回滚、解体恢复能力的事务平安。
然而比照 MyISAM 的存储引擎,InnoDB 写的解决效率差一些,并且会占用更多的磁盘空间以保留数据和索引。
InnoDB 存储引擎不同于其余存储引擎的特点:
反对事务和外键束缚
MySQL 反对外键的存储引擎只有 InnoDB,在创立外键的时候,要求父表必须有对应的索引,子表在创立外键的时候,也会主动的创立对应的索引。
InnoDB 存储表和索引有以下两种形式:
①. 应用共享表空间存储,这种形式创立的表的表构造保留在.frm 文件中,数据和索引保留在 innodb_data_home_dir 和 innodb_data_file_path 定义的表空间中,能够是多个文件。
②. 应用多表空间存储,这种形式创立的表的表构造依然存在 .frm 文件中,然而每个表的数据和索引独自保留在.ibd 中。
MyISAM 不反对事务、也不反对外键,其劣势是拜访的速度快,对事务的完整性没有要求或者以 SELECT、INSERT 为主的利用基本上都能够应用这个引擎来创立表。
每个 MyISAM 在磁盘上存储成 3 个文件,其文件名都和表名雷同,但拓展名别离是:
.frm (存储表定义);
.MYD(MYData , 存储数据);
.MYI(MYIndex , 存储索引);

存储引擎的抉择
InnoDB : 是 Mysql 的默认存储引擎,用于事务处理应用程序,反对外键。如果利用对事务的完整性有比拟高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查问意外,还蕴含很多的更新、删除操作,
那么 InnoDB 存储引擎是比拟适合的抉择。InnoDB 存储引擎除了无效的升高因为删除和更新导致的锁定,还能够确保事务的残缺提交和回滚,对于相似于计费零碎或者财务零碎等对数据准确性要求比拟高的零碎,InnoDB 是最合适的抉择。
MyISAM:如果利用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么抉择这个存储引擎是十分适合的。
MEMORY:将所有数据保留在 RAM 中,在须要疾速定位记录和其余相似数据环境下,能够提供几块的拜访。MEMORY 的缺点就是对表的大小有限度,太大的表无奈缓存在内存中,其次是要确保表的数据能够复原,数据库异样终止后表中的数据是能够复原的。MEMORY 表通常用于更新不太频繁的小表,用以疾速失去拜访后果。
MERGE:用于将一系列等同的 MyISAM 表以逻辑形式组合在一起,并作为一个对象援用他们。MERGE 表的长处在于能够冲破对单个 MyISAM 表的大小限度,并且通过将不同的表散布在多个磁盘上,能够无效的改善 MERGE 表的拜访效率。这对于存储诸如数据仓储等 VLDB 环境非常适合。

退出移动版