GVKun编程网logo

mysql myisam innodb 区别(mysql myisam和innodb区别)

4

此处将为大家介绍关于mysqlmyisaminnodb区别的详细内容,并且为您解答有关mysqlmyisam和innodb区别的相关问题,此外,我们还将为您介绍关于MyISAM索引结构了解–MyISA

此处将为大家介绍关于mysql myisam innodb 区别的详细内容,并且为您解答有关mysql myisam和innodb区别的相关问题,此外,我们还将为您介绍关于MyISAM 索引结构了解 – MyISAM Index Structure、MySQL DBA 里面 myisam 和 innodb 有什么区别?、Mysql Engine【innodb,myisam】、mysql innodb 与 myisam 存储文件的区别的有用信息。

本文目录一览:

mysql myisam innodb 区别(mysql myisam和innodb区别)

mysql myisam innodb 区别(mysql myisam和innodb区别)

最近连续接到了两次 tencent 的电话面试,当然不是同一个部门。都涉及到了一个 mysql 的基础知识问题。为了防止第三次打电话来,备注下。^^。 题目 1:讲讲你对 mysql myisam,innodb 的认识。然后你认为他们的区别在那里?为什么?答:这两个是 mysql 主要存储引擎。 简要介绍来自官网。 简要介绍:MyIsam MyISAM 是 默认存储引擎。它基于更老的 ISAM 代码,但有很多有用的扩展。(注意 MySQL 5.1 不支持 ISAM)。 每个 MyISAM 在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm 文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。 简要介绍:InnoDB InnoDB 给 MySQL 提供 了具有提交,回滚和崩溃恢复能力的事务安全(ACID 兼容)存储引擎。InnoDB 锁定在行级并且也在 SELECT 语句提供一个 Oracle 风格一致的非锁定读。这些特色增加 了多用户部署和性能。没有在 InnoDB 中扩大锁定的需要,因为在 InnoDB 中行级锁定适合非常小的空间。InnoDB 也支持 FOREIGN KEY 强制。在 SQL 查询中,你可以自由地将 InnoDB 类型的表与其它 MySQL 的表的类型混合起来,甚至在同一个查询中也可以混合。 InnoDB 是为处理巨大数据量时的最大性能设计。它的 CPU 效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。 InnoDB 存储引擎被完全与 MySQL 服务器整合,InnoDB 存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB 存储它的表&索引在一个表空间中,表空间可以包含数个文件(或原始磁盘分区)。这与 MyISAM 表不同,比如在 MyISAM 表中每个表被存在分离的文件中。InnoDB 表可以是任何尺寸,即使在文件尺寸被限制为 2GB 的操作系统上。 InnoDB 默认地被包含在 MySQL 二进制分发中。Windows Essentials installer 使 InnoDB 成为 Windows 上 MySQL 的 默认表。 InnoDB 被用来在众多需要高性能的大型数据库站点上产生。著名的 Internet 新闻站点 Slashdot.org 运行在 InnoDB 上。Mytrix, Inc. 在 InnoDB 上存储超过 1TB 的数据,还有一些其它站点在 InnoDB 上处理平均每秒 800 次插入 / 更新的负荷。 简单概括几点如下:通过不上不难看出,MyIsam InnoDB 的用途,Myisam 主要适用于中小型数据量。InnoDB 引擎适用于大数据量。上面已经讲得很清楚拉。著名的开源电子商务系统 [magento] 就是采用 InnoDB 创建。 MyIsam 写入速度比 InnoDB 快。 在使用 InnoDB 时候需要对 my.cnf 进行配置以保证 mysql 达到最大效率。详细可以查看官网 [inndo 性能调节]:http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#innodb-tuning。 其中有很多人在网上发表了关于 mysql MyIsam 和 InnoDB 在存贮和读取方面的差异。暂时还没有做过度研究。 基本测试都是基于使用[事务]和不使用[事务],进行对比。mysql 对于[非事务表]速度会比较块。 原因:待查证。 猜测:设定了 innodb_flush_log_at_trx_commit 如果设置为 1 的话,那么每次插入数据的时候都会自动提交,导致性能急剧下降,应该是跟刷新日志有关系,设置为 0 效率能够看到明显提升,当然,同样你可以 SQL 中提交 [SET AUTOCOMMIT = 0] 来设置达到好的性能。另外,还听说通过设置 innodb_buffer_pool_size 能够提升 InnoDB 的性能。 通过上面的分析,在我们采用 mysql 存储引擎的时候要按需分配。针对不同的存储引擎要采用不同的数据设计。 题目 2:开发过程中,遇到糟糕的 sql 语句你是怎么解决的。 答:使用 mysql 的[EXPLAIN]对 sql 进行解释。因该还有更多好方法。 mysql 常见问题可以查看:http://www.blags.org/mysql-error-daquan-and-solutions/mysql 存储引擎的介绍 :http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html 以上如有不足之处,请大家帮忙补充,thk。

MyISAM 索引结构了解 – MyISAM Index Structure

MyISAM 索引结构了解 – MyISAM Index Structure

在此之前曾经写过一篇介绍 “Innodb 索引结构了解 Innodb Index Structure” 的文章,这次再接着分析一下 MyISAM 存储引擎索引的基本存储结构。 从索引基本的存放数据结构来说,MyISAM 的索引不论是 Primary Key 还是普通 Index,存储结构都基本一样,基本结

在此之前曾经写过一篇介绍 “innodb 索引结构了解 – innodb index structure” 的文章,这次再接着分析一下 myisam 存储引擎索引的基本存储结构。

从索引基本的存放数据结构来说,MyISAM 的索引不论是 Primary Key 还是普通 Index,存储结构都基本一样,基本结构都是 Balance Tree (简称为 B-Tree),所有的键值详细信息和行“指针”信息都存放于 B-Tree 的 Leaf Nodes 上面。这个基本的数据结构和 MySQL 的其他存储引擎如 Innodb 也基本相同。但是,MyISAM 的索引并不像 Innodb 存储引擎那样 Primary Key 和 Secondary Index 中存放的数据存在较大区别。在 MyISAM 存储引擎中,Primary Key 和其他的普通 Index 的主要区别仅仅在于 Primary Key 的索引键需要满足是非空的唯一值而已,另外一个区别其实也是每一个普通索引之间都存在的区别,就是整个索引树的键值排列顺序不太一样。

由于 MyISAM 存储引擎中数据行的存储分为固定长度和动态长度两种,所以在 MyISAM 存储引擎的数据文件中定位一行数据所需要信息也存在两种方式。一种是直接通过行号(row number)来定位固定长度表数据的行,另外一种是通过其他一些相对的文件位置标识信息来定位动态长度表数据的行,这里我们姑且将两种方式统称为RID(Row ID)吧。

下面这张图片展示了 MyISAM 索引的基本存储方式:

myisam index structure

myisam index structure

原文地址:MyISAM 索引结构了解 – MyISAM Index Structure, 感谢原作者分享。

MySQL DBA 里面 myisam 和 innodb 有什么区别?

MySQL DBA 里面 myisam 和 innodb 有什么区别?

OSC 请你来轰趴啦!1028 苏州源创会,一起寻宝 AI 时代

  在 MySQL 中,存储引擎有很多种,每种存储引擎各具有不同的优缺点,其中比较常见的是:MyISAM 和 InnoDB。那么 MySQL 中 myisam 和 innodb 有什么区别?具体内容请看下文:

  myisam 和 innodb 有什么区别?

  MySQL 默认采用的是 MyISAM,MyISAM 不支持事务,而 InnoDB 支持。InnoDB 的 AUT COMMIT 默认是打开的,即每条 SQL 语句会默认被封装成一个事务,自动提交,这样会影响速度,所以最好是把多条 SQL 语句显示放在 begin 和 commit 之间,组成一个事务之后再去提交。

  InnoDB 支持数据行锁定,而 MyISAM 不支持,只支持锁定整个表。即 MyISAM 同一个表上的读锁和写锁是互斥的,MyISAM 并发读写时如果等待队列中既有读请求又有写请求,默认写请求的优先级高,即使读请求先到,所以 MyISAM 不适用于有大量查询和修改并存的情况下,这样会导致查询进程长时间堵塞;因为 MyISAM 是锁表,所以某项读操作比较耗时会使其他写进程饿死。

  InnoDB 支持外键,MyISAM 不支持;而且 InnoDB 的主键范围更大,是 MyISAM 的 2 倍。

  InnoDB 不支持全文索引,而 MyISAM 支持。全文索引是指对 char、varchar 和 text 中的每个词建立倒排序索引;MyISAM 的全文索引其实没有什么太大用,因为它不支持中文分词,必须由使用者分词后加入空格再写到数据表里,而且少于 4 个汉字的词会和停用词一样被忽略掉。

  MyISAM 支持 GIS 数据,InnoDB 不支持,即 MyISAM 支持以下空间数据对象:Point、line、Surface 等。

Mysql Engine【innodb,myisam】

Mysql Engine【innodb,myisam】

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;






mysql innodb 与 myisam 存储文件的区别

mysql innodb 与 myisam 存储文件的区别

myisam:

.frm: 存储表定义

.myd (MYData): 存储数据

.MYI (MYindex): 存储引擎

innodb:

.frm: 存储表定义

.idb: 存储数据和索引,在同一个文件中

本文同步分享在 博客 “lxw1844912514”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与 “OSC 源创计划”,欢迎正在阅读的你也加入,一起分享。

今天的关于mysql myisam innodb 区别mysql myisam和innodb区别的分享已经结束,谢谢您的关注,如果想了解更多关于MyISAM 索引结构了解 – MyISAM Index Structure、MySQL DBA 里面 myisam 和 innodb 有什么区别?、Mysql Engine【innodb,myisam】、mysql innodb 与 myisam 存储文件的区别的相关知识,请在本站进行查询。

本文标签: