白话讲MyIsam和InnoDB的区别

MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持 这是网上对MyISAM和InnoDB的解释,很抽象吧,我们用白话的方式解释一下 其实也比较简单 所谓事务处理,就是原子性操作。 打个比方,支持事务处理的Innodb表,建设一个中,发帖是给积分的。你发了一个帖子

"MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持"
 
这是网上对MyISAM和InnoDB的解释,很抽象吧,我们用白话的方式解释一下
 
其实也比较简单
 
所谓事务处理,就是原子性操作。
打个比方,支持事务处理的Innodb表,建设一个中,发帖是给积分的。你发了一个帖子执行一个insert语句,来插入帖子内容,插入后就要执行一个update语句来增加你的积分。假设一种特殊情况突然发生,insert成功了,update操作却没有被执行。也就是说你发了帖子却没有增加相应的积分。这就会造成用户不满。如果使用了事务处理,insert和update都放入到事务中去执行,这个时候,只有当insert和update两条语句都执行生成的时候才会将数据更新、写入到中,如果其中任何一条语句失败,那么就会回滚为初始状态,不执行写入。这样就保证了insert和update肯定是一同执行的。
 
 
mysiam表不支持事务处理,同时mysiam表不支持外键。外键不用说了吧?不知道的话,去网上查吧。
同时,在执行数据库写入的操作(insert,update,delete)的时候,mysiam表会锁表,而innodb表会锁行。通俗点说,就是你执行了一个update语句,那么mysiam表会将整个表都锁住,其他的insert和delete、update都会被拒之门外,等到这个update语句执行完成后才会被依次执行。
 
 
而锁行,就是说,你执行update语句是,只会将这一条记录进行锁定,只有针对这条记录的其他写入、更新操作会被阻塞并等待这条update语句执行完毕后再执行,针对其他记录的写入操作不会有影响。
 
 
因此,当你的数据库有大量的写入、更新操作而查询比较少或者数据完整性要求比较高的时候就选择innodb表。当你的数据库主要以查询为主,相比较而言更新和写入比较少,并且业务方面数据完整性要求不那么严格,就选择mysiam表。因为mysiam表的查询操作效率和速度都比innodb要快

时间: 2024-10-04 20:30:03

白话讲MyIsam和InnoDB的区别的相关文章

随讲MyIsam和InnoDB的区别

mysiam表不支持事务处理,同时mysiam表不支持外键.外键不用说了吧?不知道的话,找度娘. 同时,在执行数据库写入的操作(insert,update,delete)的时候,mysiam表会锁表, 而innodb支持支持行锁,支持事务,支持外键,支持触发器.通俗点说,就是你执 行了一个update语句,那么mysiam表会将整个表都锁住,其他的insert和delete.update都会被拒之门外,等到这个update 语句执行完成后才会被依次执行. mysiam支持全文检索,而且查询速度很

MyISAM和innoDB的区别

MySQL支持数个存储引擎作为对不同表的类型的处理器. MyISAM,MEMORY,InnoDB,NDB Cluster,ARCHIVE,CSV,BLACKHOLE,FEDERATED. MyISAM是默认存储引擎.它基于更老的ISAM代码,但有很多有用的扩展.MyISAM管理非事务表.它提供高速存储和检索,以及全文搜索能力(注意MySQL 5.1不支持ISAM).每个MyISAM在磁盘上存储成三个文件: .frm文件存储表定义,数据文件的扩展名为.MYD (MYData),索引文件的扩展名是.

MySQL中MyISAM和InnoDB的区别

MyISAM和InnoDB的区别 MySQL默认采用的是MyISAM. MyISAM不支持事务,而InnoDB支持.InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速度,所以最好是把多条SQL语句显示放在begin和commit之间,组成一个事务去提交. InnoDB支持数据行锁定,MyISAM不支持行锁定,只支持锁定整个表.即 MyISAM同一个表上的读锁和写锁是互斥的,MyISAM并发读写时如果等待队列中既有读请求又有写请求,默认写

mysql的MyISAM 和 InnoDB 的区别?优化MYSQL数据库的方法?

MyISAM 和 InnoDB 的基本区别 1.InnoDB不支持FULLTEXT类型的索引. 2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可.注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的. 3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他

【mysql中myisam和innodb的区别】

单击进入源网页 要点摘要: 1.查看mysql存储引擎的状态mysql> show engines; 2.查看mysql默认的存储引擎mysql> show variables like '%storage_engine%'; 3.修改mysql默认存储引擎ALTER TABLE engineTest ENGINE = INNODB 4.创建表时设置存储引擎CREATE TABLE mytable (id int, titlechar(20)) ENGINE = INNODB 5.修改my.i

MySQL教程-MyISAM和InnoDB的区别

MySQL的表类型MyISAM和InnoDB之间的最大区别是,InnoDB的支持事务.兄弟连教育(www.lampbrother.net )来给大家做个对比: InnoDB支持一些新的功能:交易,行级锁,外键 InnoDB是高容量,高性能的 大多数人使用MyISAM表,如果他们需要速度和InnoDB数据的完整性.您可以使用超过一个或任意组合这些在你的数据库中的表类型.请记住,驴在建设之前,您的应用程序的需求.即使MyISAM是速度比在MySQL的InnoDB的世界,InnoDB是比较快的任何的数

面试常问之——Mysql引擎中MyISAM和InnoDB的区别有哪些?

简单的概括一下 InnoDB:支持事务处理等不加锁读取支持外键支持行锁不支持FULLTEXT类型的索引不保存表的具体行数,扫描表来计算有多少行DELETE 表时,是一行一行的删除InnoDB 把数据和索引存放在表空间里面跨平台可直接拷贝使用InnoDB中必须包含AUTO_INCREMENT类型字段的索引表格很难被压缩 MyISAM:不支持事务,回滚将造成不完全回滚,不具有原子性不支持外键支持全文搜索保存表的具体行数,不带where时,直接返回保存的行数DELETE 表时,先drop表,然后重建表

mysql存储方式MyISAM 和 InnoDB的区别

MyISAM 和 InnoDB 讲解: InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能. 以下是一些细节和具体实现的差别: ◆1.InnoDB不支持FULLTEXT类型的索引. ◆2.InnoDB 中不保存表的具体行

MySQL数据库引擎MyISAM与InnoDB的区别

1. 存储结构 MyISAM:每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义.数据文件的扩展名为.MYD (MYData).索引文件的扩展名是.MYI (MYIndex).InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB. 2. 存储空间 MyISAM:可被压缩,存储空间较小.支持三种不同的存储格式:静态表(默认,但是注意数据