共计 2076 个字符,预计需要花费 6 分钟才能阅读完成。
InnoDB 和 MyISAM 的区别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
InnoDB 和 MyISAM 是许多人在使用 MySQL 时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。以前 MySQL 默认的存储引擎是 MYISAM,从 5.5.5 之后就改用 InnoDB 了。它们的基本的差别为:MyISAM 类型不支持事务处理等高级处理,而 InnoDB 类型支持。MyISAM 类型的表强调的是性能,其执行数度比 InnoDB 类型更快,但是不提供事务支持,而 InnoDB 提供事务支持已经外部键等高级数据库功能。
MyIASM 是 IASM 表的新版本,有如下扩展:
middot; 二进制层次的可移植性。
middot;NULL 列索引。
middot; 对变长行比 ISAM 表有更少的碎片。
middot; 支持大文件。
middot; 更好的索引压缩。
middot; 更好的键吗统计分布。
middot; 更好和更快的 auto_increment 处理。
以下是一些细节和具体实现的差别:
◆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 特性(例如外键)的表不适用。
在高性能 MYSQL 上还说默认 MYISAM,其实要看那个版本,我现在的默认就是 InnoDB,手册上是这么说的:
InnoDB is a high-reliability and high-performance storage engine for MySQL. Starting with MySQL 5.5, it is the default MySQL storage engine. Key advantages of InnoDB include:
Its design follows the ACID model, with transactions featuring commit, rollback, and crash-recovery capabilities to protect user data.
Row-level locking and Oracle-style consistent reads increase multi-user concurrency and performance.
InnoDB tables arrange your data on disk to optimize common queries based on primary keys. Each InnoDB table has a primary key index called the clustered index that organizes the data to minimize I/O for primary key lookups.
To maintain data integrity, InnoDB also supports FOREIGN KEY referential-integrity constraints.
You can freely mix InnoDB tables with tables from other MySQL storage engines, even within the same statement. For example, you can use a join operation to combine data from InnoDB and MEMORY tables in a single query.
To determine whether your server supports InnoDB use the SHOW ENGINES statement.
Before MySQL 5.5.5, MyISAM is the default storage engine. (The default was changed to InnoDB in MySQL 5.5.5.) MyISAM is based on the older (and no longer available) ISAM storage engine but has many useful extensions.
Table 13.10. MyISAM Storage Engine Features
看完上述内容,你们掌握 InnoDB 和 MyISAM 的区别是什么的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!