博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql Engine【innodb,myisam】
阅读量:5950 次
发布时间:2019-06-19

本文共 1251 字,大约阅读时间需要 4 分钟。

hot3.png

Innodb,Myisam都是Mysql数据库存储的引擎,Innodb支持事务等数据库高级特性,Myisam不支持,但比较快速。

  1. ISAM 是一个定义明确且历经时间考验的数据表格管理方法,它在设计时就考虑到数据库被查询的次数要远远高于更新的次数。因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源。ISAM的两个主要不足之处在于,它不支持事务处理,也不能够容错;如果你的硬盘崩溃了,那么数据文件就无法恢复了。如果你正在把ISAM用在关键任务应用程序里,那就必须经常备份你所有的实时数据,通过其复制特性,MySQL能够支持这样的复制备份应用程序

  2. InnoDB 它提供了事务控制能力功能,它确保一组命令全部执行成功。或者当任何一条命令出现错误时所有命令的结果都被回退,可以想象在电子银行中事务控制能力是非常重要的。支持COMMIT,ROLLBACK和其他事务特性。最新版本的MySQL已经计划移除对DBD的支持,权利发展InnoDB

  3. MyISAM是ISAM表的新版本,进行了如下扩展:

    二进制层次的可移植性,NULL列索引,对变长行比ISAM表有更少的碎片。支持大文件,更好的索引压缩,更好的键吗统计分布,更好和更快的Auto_increment处理

  4. 区别如下:

    1. InnoDB不支持FULLTEXT类型的索引。

    2. InnoDB不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是Myisam只要简单的读出保存好的行数即可。需要注意的是,如果select语句后面包含了where条件,则两种表的操作是一样的。

    3. 对于auto_increment类型的字段,InnoDB中必须包含只有该字段的索引,但是在Myisam中,可以和其他字段一起建立联合索引。

    4. DELETE from table时,InnoDB不会重新建立表。

    5. LOAD TABLE FROM MASTER 操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成Myisam表,到入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性的表来说不适用,另外InnoDB的行锁也不是绝对的,如果在执行了一个SQL语句时MySQL不能确定要扫描的范围,InnoDB同样会锁全表

    6. MySQL aminstractor建数据库的时候,表缺省是InnoDB类型

    7. InnoDB,Myisam两种类型:Myisam不支持事务处理高级特性,而InnoDB支持;Myisam类型的表强调的是性能,其执行速度比InnoDB类型的更快

    8. Myisam类型的二进制数据文件可以在不同的操作系统中迁移,也就是可以直接从windows系统拷贝到linux系统中使用

    9. 修改表的引擎类型:ALTER TABLE tablename ENGINE = MYISAM;

转载于:https://my.oschina.net/u/2611678/blog/640119

你可能感兴趣的文章
计算机基础与java
查看>>
ajax的刷与不刷
查看>>
linux的日志服务器关于屏蔽一些关键字的方法
查看>>
linux系统管理---账号与权限管理
查看>>
我的友情链接
查看>>
Android Target unknown and state offline
查看>>
润乾报表使用EXCEL数据源的方法及改进
查看>>
java并发编程基础
查看>>
我的DOS命令路径定义错了
查看>>
应用SELinux中的目标策略限制进程运行
查看>>
html5页面点击和左右滑动页面滚动
查看>>
事情的两面性
查看>>
只要会营销,shi都能卖出去?
查看>>
TCP/IP三次握手详细过程
查看>>
sed单行处理命令奇偶行输出
查看>>
走向DBA[MSSQL篇] 从SQL语句的角度 提高数据库的访问性能
查看>>
VC++深入详解学习笔记1
查看>>
安装配置discuz
查看>>
CentOS7 64位小型操作系统的安装
查看>>
线程互互斥锁
查看>>