Innodb与Myisam的区别解析
12页1、InnodbInnodb 与与 MyisamMyisam 的区别解析的区别解析1、MyISAM:默认表类型,它是基于传统的 ISAM 类型,ISAM 是 Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法。不是事务安全的,而且不支持外键,如果执行大量的 select,insert MyISAM 比较适合。2、InnoDB:支持事务安全的引擎,支持外键、行锁、事务是他的最大特点。如果有大量的 update 和 insert,建议使用 InnoDB,特别是针对多个并发和 QPS 较高的情况。一、表锁差异MyISAM:myisam 只支持表级锁,用户在操作 myisam 表时,select,update,delete,insert语句都会给表自动加锁,如果加锁以后的表满足 insert 并发的情况下,可以在表的尾部插入新的数据。也可以通过 lock table 命令来锁表,这样操作主要是可以模仿事务,但是消耗非常大,一般只在实验演示中使用。InnoDB :Innodb 支持事务和行级锁,是 innodb 的最大特色
2、。事务的 ACID 属性:atomicity,consistent,isolation,durable。并发事务带来的几个问题:更新丢失,脏读,不可重复读,幻读。事务隔离级别:未提交读(Read uncommitted),已提交读(Read committed),可重复读(Repeatable read),可序列化(Serializable)四种隔离级别的比较读数据一致性及并发副作用隔离级别读数据一致性脏读不可重复读幻读为提交读(read uncommitted)最低级别,不读物理上顺坏的数据是是是已提交读(read committed)语句级否是是可重复读(Repeatable red)事务级否否是可序列化(Serializable)最高级别,事务级否否否查看 mysql 的默认事务隔离级别“show global variables like tx_isolation; ”Innodb 的行锁模式有以下几种:共享锁,排他锁,意向共享锁(表锁),意向排他锁(表锁),间隙锁。天地棋牌 http:/注意:当语句没有使用索引,innodb 不能确定操作的行,这个时候就使用的意向锁,也就是表
3、锁关于死锁:什么是死锁?当两个事务都需要获得对方持有的排他锁才能完成事务,这样就导致了循环锁等待,也就是常见的死锁类型。解决死锁的方法:1、 数据库参数2、 应用中尽量约定程序读取表的顺序一样3、 应用中处理一个表时,尽量对处理的顺序排序4、 调整事务隔离级别(避免两个事务同时操作一行不存在的数据,容易发生死锁)二、数据库文件差异MyISAM :myisam 属于堆表myisam 在磁盘存储上有三个文件,每个文件名以表名开头,扩展名指出文件类型。.frm 用于存储表的定义.MYD 用于存放数据.MYI 用于存放表索引myisam 表还支持三种不同的存储格式:静态表(默认,但是注意数据末尾不能有空格,会被去掉)动态表压缩表InnoDB :innodb 属于索引组织表innodb 有两种存储方式,共享表空间存储和多表空间存储两种存储方式的表结构和 myisam 一样,以表名开头,扩展名是.frm。如果使用共享表空间,那么所有表的数据文件和索引文件都保存在一个表空间里,一个表空间可以有多个文件,通过 innodb_data_file_path 和 innodb_data_home_dir 参
4、数设置共享表空间的位置和名字,一般共享表空间的名字叫 ibdata1-n。如果使用多表空间,那么每个表都有一个表空间文件用于存储每个表的数据和索引,文件名以表名开头,以.ibd 为扩展名。三、索引差异1、关于自动增长myisam 引擎的自动增长列必须是索引,如果是组合索引,自动增长可以不是第一列,他可以根据前面几列进行排序后递增。innodb 引擎的自动增长咧必须是索引,如果是组合索引也必须是组合索引的第一列。2、关于主键myisam 允许没有任何索引和主键的表存在,myisam 的索引都是保存行的地址。innodb 引擎如果没有设定主键或者非空唯一索引,就会自动生成一个 6 字节的主键(用户不可见)innodb 的数据是主索引的一部分,附加索引保存的是主索引的值。3、关于 count()函数myisam 保存有表的总行数,如果 select count(*) from table;会直接取出出该值innodb 没有保存表的总行数,如果使用 select count(*) from table;就会遍历整个表,消耗相当大,但是在加了 wehre 条件后,myisam 和 innodb
《Innodb与Myisam的区别解析》由会员m****分享,可在线阅读,更多相关《Innodb与Myisam的区别解析》请在金锄头文库上搜索。
DB2发生死锁情况时应该怎么处理
Python 为何能成最强编程语言
面试前必须要知道的Redis面试
MySQL下自动删除指定时间以前的记录的操作方法
深入理解FastCGI协议以及在PHP中的实现
MySQL数据库性能优化之硬件瓶颈分析
NoSQL数据库大全收集整理
2018 – 2019 年前端 JavaScript 面试题
PHP文件包含漏洞的形式总结
5种使用Python代码轻松实现数据可视化的方法
改进JavaScript和Bust的互操作性:深入认识wasm-bindgen组件
C#图片缩放平移从功能分析到编码实现
详解网络蜘蛛的安全隐患及预防方法
利用NAP解除安全隐患自动隐藏你的IP地址
解决分布式数据库和离线网络中原子性问题的新方法
bbed恢复数据遇到延迟块清除的问题
Oracle Data Redaction数据加密
linux下du和df结果不一致的原因及处理
基于QMP实现对qemu虚拟机进行交互
解读Java并发队列BlockingQueue
2023-02-19 156页
2023-03-02 15页
2023-07-19 40页
2023-01-11 16页
2023-08-14 13页
2023-06-26 3页
2024-03-28 4页
2023-07-12 93页
2023-10-05 45页
2024-01-14 46页