Mysql存储引擎选择

比特拓荒客
• 阅读 1538

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环境十分合适。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
4年前
mysql 知识2
mysql知识2存储引擎1.InnoDB和MYISAM存储引擎的区别?索引1.什么是索引?你知道Mysql有哪些索引?分别介绍一下2.索引的优缺点?那些情况适合建索引那些情况不适合建索引?事务1.什么是事务,它有哪些特性?说一说事务的隔离级别,分别解决了什么问题?
Wesley13 Wesley13
4年前
MySQL数据库表设计规范
一、数据库设计1、一般都使用INNODB存储引擎,除非读写比率<1%,才考虑使用MYISAM存储引擎;其他存储引擎请在DBA的建议下使用。2、Storedprocedure(包括存储过程,函数,触发器)对于MYSQL来说还不是很成熟,没有完善的出错记录处理,不建议使用。3、UUID(),USER()这样的
Wesley13 Wesley13
4年前
MySQL —— 存储引擎的 InnoDB 与 MyISAM 之争
作为MySQL数据库的两种主要的存储引擎,InnoDB与MyISAM各有长处。在MySQL5.1及之前的版本中,MyISAM是默认的存储引擎,而在MySQL5.5版本以后,默认使用InnoDB存储引擎。MyISAM不支持行级锁,换句话说,MyISAM会对整张表加锁,而不是针对行。同时,MyISAM不支持事务和外键。M
Wesley13 Wesley13
4年前
018:InnoDB 存储引擎、表空间
\TOC\一.InnoDB存储引擎1\.InnoDB的历史年份事件备注1995由HeikkiTuuri创建InnobaseOy公司,并开发InnoDB存储引擎Innobase开始做的是数据库,希望卖掉该公司1996MySQL1.0发布
Wesley13 Wesley13
4年前
MySQL数据库操作规范
MySQL数据库操作规范文档说明:该文档旨在对MySQL数据库的使用做一个统一的约定和规范;以便使大家更明确、更有效的用好数据库,最终使数据库发挥更好的作用,从而提升产品的质量。一、基础规范1.1、【强制】使用InnoDB存储引擎。解读:InnoDB存储引擎是MySQL默认存储引擎,
Wesley13 Wesley13
4年前
mysql存储引擎
什么是存储引擎?MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型)。MySql的存储引擎:MyISAM节省数据库空间,当数据读远大于修改时,可以使用该存储引擎InnoDB支持事务,
Wesley13 Wesley13
4年前
Mysql优化系列(1)
1.简单介绍InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读。这些特色增加了多用户部署和性能。没有在InnoDB中扩大锁定的需要,因为在InnoDB中行级锁定适合非常小的空间。InnoDB也支持FOREIGNKEY强制。在
Wesley13 Wesley13
4年前
Mysql技术总结总结
一:mysql数据库引擎MyISAM和InnoDB的区别:1、MyISAM具有检查和修复表格的大多数工具。表格可以被压缩,而且支持全文收索。不支持事物,而且不支持外键。2、innodb这种表是事务安全的。提供了commit(提交)rollback(实务回滚)支持外键,
Wesley13 Wesley13
4年前
MySQL 数据库设计总结
本文由云社区发表作者:漆洪凯规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎。注意:MyISAM存储引擎Btree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过1000字节。另外MyISAM数据和索引是分开,而InnoDB的数据存储是按聚簇(cluster)索引有序排
Wesley13 Wesley13
4年前
mysql 执行流程解析
MySQL可以分为Server层和存储引擎层两部分Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、Memory
MySQL之InnoDB存储结构 | 京东物流技术团队
InnoDB存储引擎最早由InnobaseOy公司开发(属第三方存储引擎)。从MySQL5.5版本开始作为表的默认存储引擎。该存储引擎是第一个完整支持ACID事务的MySQL存储引擎,特点是行锁设计、支持MVCC、支持外键、提供一致性非锁定读,非常适合OLTP场景的应用使用。目前也是应用最广泛的存储引擎。