Mysql的数据引擎Innodb与Myisam的区别

事务支持、行锁与表锁、聚集索引引与非聚集索引、全文索

  1. 组成部分:Myisam的索引和数据是分开的,并且索引是有压缩的,而Innodb是索引和数据放在一起,且没有使用压缩,因而Innodb比MyISAM体积更大。MyISAM每张表都包括三种文件:表定义文件(.frm)、数据文件(.myd)和索引文件(.myi),而Innodb通常许多表保存在同一个文件中。
  2. Myisam没事务而Innodb支持事务,支持事务的回滚。
  3. MySQL表级锁有两种模式:表共享读锁(Table Read Lock)和表独占写锁(Table Write Lock)。对MyISAM表进行读操作时,它不会阻塞其他用户对同一表的读请求,但会阻塞对同一表的写操作;而对MyISAM表的写操作,则会阻塞其他用户对同一表的读和写操作。
  4. InnoDB行锁是通过给索引项加锁来实现的,即只有通过索引条件检索数据,InnoDB才使用行级锁,否则将使用表锁!行级锁在每次获取锁和释放锁的操作需要消耗比表锁更多的资源。表级锁,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写操作。如果你是写锁,则其它进程则读也不允许,行级锁, 仅对指定的记录进行加锁,这样其它进程还是可以对同一个表中的其它记录进行操作。
  5. Myisam是非聚集索引,有专用的索引表而Innodb是聚集索引,根据物理存储而建立的索引。
  6. Myisam支持全文索引而Innodb不支持全文索引。倒排文档技术:建立一个词出现的频率和位置的库。

猜你喜欢

转载自blog.csdn.net/qq_24909089/article/details/89249348