`
ncs123
  • 浏览: 100111 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

InnoDB 和 MyISAM的区别

阅读更多
mysql数据库文件
InnoDB 和 MyISAM的区别
Innodb隔离级别原理实现
InnoDB主备复制

一、InnoDB 和 MyISAM的区别

1. MyISAM使用前缀压缩技术使得索引更小,InnoDB则按照原数据格式进行存储。
2. MyISAM索引通过数据的物理位置引用被索引的行,而InnoDB则根据主键引用被索引的行。InnoDB在移动时无须更新二级索引中的这个“指针”,但是使用主键值作为指针会让二级索引占用更多空间。
3. MyISAM主键索引是B+Tree + 唯一非空索引。InnoDB主键索引是B+Tree + 聚簇索引。聚簇索引:主键为索引,叶子节点包含索引和行数据。
4. MyISAM对整张表加锁(表锁),InnoDB有行级锁
5. MyISAM自身只缓存索引(依赖操作系统缓存数据,设置适当的健缓存,留足够的内存给操作系统)。InnoDB缓存索引和数据(缓存池应最大化)。


二、索引



    索引是在存储引擎层而不是服务器层实现的。
    聚簇索引:并不是一种单独的索引类型,而是一种数据存储方式。叶子页包含索引和行数据。InnoDB通过主键聚集数据,如果没有主键,InnoDB会选择一个唯一的非空索引替代。

   自增主键ID顺序插入性能高,UUID主键ID随机I/O,频繁页分裂操作,数据碎片化。UUID适用于分布式数据库,防止自增主键主键冲突。

三、Innodb索引结构
    1. Innodb索引是B-tree数据结构。
    2. Innodb索引至少包括两个segment,一个用来存储非叶子节点数据,另一个存储叶子节点数据。
    3. segment由page组成,每个page的page size默认为16K,通过innodb_page_size配置参数可以设置其他值:8k,32k。默认会预留1/16的page_size为将来的索引行变更和修改,可以通过参数innodb_fill_factor变更默认配置。
    4. mysql最大行长度限制为65535可变列不包括在65535之中,并且charset有关,比如utf8,最大长度为65535/3。最大行数据大小包括可变列(VARCHAR,VARBINARY,BLOB,TEXT)为4G
    5. mysql最大行长度最好不要超过1/2的page size,如果一行数据没有超过1/2 page size,那么这行数据全部存储在同一页。如果超过1/2 page size,那么可变列(VARCHAR,VARBINARY,BLOB,TEXT)存储在其他外部页。
  • 大小: 139.4 KB
  • 大小: 101 KB
分享到:
评论

相关推荐

    MyISAM引擎与InnoDB引擎性能的对比

    MyISAM引擎与InnoDB引擎性能的对比

    MyISAM和InnoDB的异同

    MyISAM和InnoDB的异同 MyISAM和InnoDB的异同

    MySQL存储引擎之争-InnoDB与MyISAM全面对决

    本文深入对比分析了MySQL的两大存储引擎InnoDB和MyISAM之间的区别,包括事务支持、数据恢复能力、并发控制、存储空间占用和读取性能等多个维度。通过详细的技术和场景分析, objectively评估两者的优缺点,并给出选择...

    mysql数据据存储引擎InnoDB和MyISAM的优势及区别分享.pdf

    mysql数据据存储引擎InnoDB和MyISAM的优势及区别分享.pdf

    mysql 中InnoDB和MyISAM的区别分析小结

    以下是一些细节和具体实现的差别: 1.InnoDB不支持FULLTEXT类型的索引。 2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要...

    MyISAM InnoDB 区别

    MyISAM InnoDB 区别 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的...

    Innodb与Myisam引擎的区别与应用场景

    Innodb与Myisam引擎的区别与应用场景 . 区别: (1)事务处理: MyISAM是非事务安全型的,而InnoDB是事务安全型的(支持事务处理等高级处理); (2)锁机制不同: MyISAM是表级锁,而InnoDB是行级锁;

    《MYSQL备份与恢复》之 Innodb与 MyISAM引擎

    (2)innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的,innobackupex是一个perl脚本封装,封装了xtrabackup,所以能同时备份处理innodb和myisam,但在处理myisam时需要加一个读锁。并且加入了一些...

    mysql更改引擎(InnoDB,MyISAM)的方法

    mysql默认的数据库引擎是MyISAM,不支持事务和外键,也可使用支持事务和外键的InnoDB。 查看当前数据库的所支持的数据库引擎以及默认数据库引擎 数据库支持的引擎和默认数据库引擎代码: 代码如下:show engines; ...

    myisam与innodb 区别 值得下载

    自己总结的 关于mysql存储引擎myisam innodb 的比较 两者区别 对面试会很有帮助

    Mysql InnoDB和MyISAM区别原理解析

    mysql支持很多表类型的表(即存储引擎),如myisam、innodb、memory、archive、example等。每种存储引擎都有自己的优点和缺点,充分的理解每种存储引擎,有助于合理的使用它们。有人认为在同一个数据库中使用多种...

    MyISAM与InnoDB的索引差异

    MyISAM和InnoDB都使用B+树来实现索引: • MyISAM的索引与数据分开存储 • MyISAM的索引叶子存储指针,主键索引与普通索引无太大区别 • InnoDB的聚集索引和数据行统一存储 • InnoDB的聚集索引存储数据行本身,普通...

    MySQL存储引擎,Innodb与MyISAM谁更叼?

    固定套路,问mysql数据库知识的时候,一定会带着问存储引擎,innodb,MyISAM,他们最主要的区别是索引的实现方式,然后是加锁粒度等等的区别,最后还会来到送命题你觉得选择Innodb好,还是MyISAM好,为什么?...

    MySQL存储引擎中MyISAM和InnoDB区别详解

    InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度...

    MySQL存储引擎中的MyISAM和InnoDB区别详解

    在使用MySQL的过程中对MyISAM和InnoDB这两个概念存在了些疑问,到底两者引擎有何分别一直是存在我心中的疑问。为了解开这个谜题,搜寻了网络,找到了如下信息: MyISAM是MySQL的默认数据库引擎(5.5版之前),由...

    探讨:innodb与myisam在存储上有何特点和区别

    本篇文章是对innodb与myisam在存储上有何特点和区别进行了详细的分析介绍,需要的朋友参考下

    Mysql存储引擎InnoDB和Myisam的六大区别

    主要介绍了Mysql存储引擎InnoDB和Myisam的六大区别,本文从构成上、事务处理、SQL操作、自动ID、表行数等方面讲解了它的区别,需要的朋友可以参考下

    002.InnoDB索引与MyISAM索引实现的区别是什么?.mp4

    InnoDB索引与MyISAM索引实现的区别是什么?.mp4 InnoDB索引与MyISAM索引实现的区别是什么?.mp4 InnoDB索引与MyISAM索引实现的区别是什么?.mp4 InnoDB索引与MyISAM索引实现的区别是什么?.mp4 InnoDB索引与MyISAM...

    MySQL InnoDB和MyISAM数据引擎的差别分析

    InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持

Global site tag (gtag.js) - Google Analytics