创新路
我们一直在努力

MySQL中InnoDB和MyIsam的区别

  MySQL中给表提供了七种常用存储引擎类型,分别是DBD、HEAP、ISAM、MERGE、MyIsam、InnoDB以及Gemeni,这么多看着都有点懵逼…但是最常用的也就两种类型,InnoDB和MyIsam

  事务:什么是事务,事务就是一次sql操作从开始到结束的过程

  事务回滚:在执行一次事务的过程中任意一步的失败,则恢复这次事务的所有操作

  事务的特性:1.持久性:一旦提交,不可改变,永久改变

                     2.隔离性:事务操作隔离不受影响

                     3.一致性:事务回滚之后与操作事务之前无任何变化

                     4.原子性:事务整个操作为一个整体,要么全部成功,要么全部失败

  MySQL锁机制锁是计算机协调多个进程或线程并发访问某一资源的机制,多进程多线程访问同一资源时,先访问的添加锁, 访问操作完成后释放锁,这样能保持数据的一致性,但操作select的时候,添加读锁(共享锁),锁什么取决于存储引擎,当操作update的时候,添加写所(互斥锁、排它锁),在锁的期间不能进行读表和写表

  锁粒度:行级锁(给一行数据加锁)—>表级锁(给一个表的数据加锁)—>页级锁

  MVCCMulti-Version Concurrency Control 多版本并发控制,MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,你可将MVCC看成行级别锁的一种妥协,它在许多情况下避免了使用锁,同时可以提供更小的开销。根据实现的不同,它可以允许非阻塞式读,在写操作进行时只锁定必要的记录

  MySQL中InnoDB和MyIsam的区别

       

项目 InnoDB MyIsam
存储形式 两个文件存储(*.frm-表结构、*.ibd-表数据加索引) 三个文件存储(*.frm-表结构、*.MYD-表数据、*.MYI-表索引)
加锁形式 行级锁 表级锁
外键 支持 不支持
事务 支持 不支持
MVCC 支持 不支持
全文索引 不支持 支持

                   

 MyIsam:内置了一个计数器来储存表的行数,支持全文索引,所以在进行大量查询的时候优势比较明显,速度很快,但是由于不支持行级锁的原因,导致并发修改功能不强,还有一个缺点就是如果一旦崩溃了,无法安全有效的恢复,但是在由于单纯的使用了文件进行存储,使得在复制转移文件时较快

  InnoDB:支持行级锁,所以能支持大量并发写操作,但是有时候还是会出现死锁,支持事务和外键比较高级的操作,在表崩溃的时候可以已安全的方式进行恢复,还有就是比较消耗内存和存储空间,大量读操作时会进行全文扫描,使用全文索引插件后与myisam速度无异

  总结:如果业务逻辑涉及到大量的读操作,写操作很少不频繁,那么推荐使用MyIsam引擎,除此外则使用InnoDB

未经允许不得转载:天府数据港官方信息博客 » MySQL中InnoDB和MyIsam的区别

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机