• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > Mysql 的存储引擎,myisam和innodb的区别

Mysql 的存储引擎,myisam和innodb的区别

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了mysql innodb myisam,innodb myisam区别,myisam innodb,mysql innodb引擎,mysql没有innodb引擎等相关知识,希望本文的分享对您有所帮助

简单的表达。 
MyISAM 是非事务的存储引擎。 
innodb是支持事务的存储引擎。 
 
innodb的引擎比较适合于插入和更新操作比较多的应用 
而MyISAM 则适合用于频繁查询的应用 
 
MyISAM --表锁。 

innodb--设计合理的话是行锁。 
MyISAM 不会出现死锁。 
 
最大的区别就是MYISAM适合小数据,小并发;INNODB 适合大数据,大并发。最大的区别就是在锁的级别上。 
 
MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。 MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。综述,就可以根据数据表不同的用处是用不同的存储类型。而且MyISAM是文件存储的,可以进行直接在不同操作系统间拷贝使用。  

InnoDB: 

InnoDB 给 MySQL 提供了具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。InnoDB 提供了行锁(locking on row level),提供与 Oracle 类型一致的不加锁读取(non-locking read in SELECTs)。这些特性均提高了多用户并发操作的性能表现。在InnoDB表中不需要扩大锁定(lock escalation),因为 InnoDB 的列锁定(row level locks)适宜非常小的空间。InnoDB 是 MySQL 上第一个提供外键约束(FOREIGN KEY constraints)的表引擎。InnoDB 的设计目标是处理大容量数据库系统,它的 CPU 利用率是其它基于磁盘的关系数据库引擎所不能比的。在技术上,InnoDB 是一套放在 MySQL 后台的完整数据库系统,InnoDB 在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。 InnoDB 把数据和索引存放在表空间里,可能包含多个文件,这与其它的不一样,举例来说,在 MyISAM 中,表被存放在单独的文件中。InnoDB 表的大小只受限于操作系统的文件大小,一般为 2 GB。InnoDB所有的表都保存在同一个数据文件 ibdata1 中(也可能是多个文件,或者是独立的表空间文件),相对来说比较不好备份,可以拷贝文件或用navicat for mysql。  

MyISAM 

每张MyISAM 表被存放在三个文件 :frm 文件存放表格定义。 数据文件是MYD (MYData) 。 索引文件是MYI (MYIndex) 引伸。 
因为MyISAM相对简单所以在效率上要优于InnoDB,小型应用使用MyISAM是不错的选择。 
MyISAM表是保存成文件的形式,在跨平台的数据转移中使用MyISAM存储会省去不少的麻烦

以下是一些细节和具体实现的差别:

1.InnoDB不支持FULLTEXT类型的索引。
2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。
3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 探讨:innodb与myisam在存储上有何特点和区别
  • 浅谈MySQL存储引擎选择 InnoDB与MyISAM的优缺点分析
  • 深入探讨:MySQL数据库MyISAM与InnoDB存储引擎的比较
  • MySQL Innodb表导致死锁日志情况分析与归纳
  • 关于mysql innodb count(*)速度慢的解决办法
  • MyISAM和InnoDB引擎优化分析
  • MYSQL 浅谈MyISAM 存储引擎
  • MySQL InnoDB之事务与锁详解
  • Mysql(MyISAM)的读写互斥锁问题的解决方法
  • 将MySQL从MyISAM转换成InnoDB错误和解决办法

相关文章

  • 2018-12-05总结MySQL的高级查询(二)
  • 2018-12-05MySQL基础教程3 — 数据类型之字符串类型
  • 2018-12-05SQL学习笔记三 select语句的各种形式小结
  • 2017-05-11mysql 导入导出数据库以及函数、存储过程的介绍
  • 2018-12-05一个分页存储过程代码
  • 2017-05-11mysql部分替换sql语句分享
  • 2018-12-05sqlserver关于分页存储过程的优化【让数据库按我们的意思执行查
  • 2018-12-05如何使用MySQL Workbench?
  • 2018-12-05oracle 日期函数
  • 2018-12-05详解Oracle中的translate函数和replace函数

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • mysql远程登录出错的解决方法
    • OraclePL/SQL单行函数和组函数详解
    • mysql SKIP-NAME-RESOLVE 错误的使用时机造成用户权限
    • mysqlslap执行基准测试的代码详情介绍
    • mysql免安装制作使用说明
    • Mysql启动中 InnoDB: Error: log file ./ib_logfile0 is of diff
    • SQL2005 性能监视器计数器错误解决方法
    • JDBC--数据库管理系统
    • MySQL数据库在Linux下卸载的详细介绍
    • 分布式锁的多种实现方式

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有