网站首页 > 基础教程 正文
mysql有多种存储引擎:
可以看到,有InnoDB、Memory、MyISAM、CSV、Archive等9种,
其中,Myisam与INNODB是mysql的两种比较重要的存储引擎,两种引擎的存储方式不同,导致性能不同,比如锁的级别、索引的使用等。那本文就介绍下两种存储引擎的不同点。
一、MYISAM
先说下ISAM。索引顺序存取方法(ISAM, Indexed Sequential Access Method)最初是IBM公司发展起来的一个文件系统,可以连续地(按照他们进入的顺序)或者任意地(根据索引)记录任何访问。
它的数据结构类似于B+树,树比较矮,查找起来IO少,比较快。
在Mysql-3.23版本使用了ISAM算法。
数据结构如下:
而MYISAM是mysql后期版本基于ISAM的优化,也是B+树为索引结构,MyISAM索引文件和数据文件是分离的。相比于ISAM,MYisam有可移植性更好、能处理更大的文件、更好的处理自增操作的优点。
其特点如下表:
FeatureSupport B-tree indexesYes Backup/point-in-time recovery (Implemented in the server, rather than in the storage engine.) Yes Cluster database supportNo Clustered indexesNo Compressed dataYes (Compressed MyISAM tables are supported only when using the compressed row format. Tables using the compressed row format with MyISAM are read only.) Data cachesNo Encrypted dataYes (Implemented in the server via encryption functions.) Foreign key supportNo Full-text search indexesYes Geospatial data type supportYes Geospatial indexing supportYes Hash indexesNo Index cachesYes Locking granularityTable MVCCNo Replication support (Implemented in the server, rather than in the storage engine.) Yes Storage limits256TB T-tree indexesNo TransactionsNo Update statistics for data dictionaryYes
可以看到锁的级别是表、不支持事务等特性。
二、Innodb
innodb也是以B+树作为索引结构的。但是有很大不同。
第一个不同:Innodb的索引文件和数据文件是一体的,数据文件本身就是索引结构的一部分。
可以看到叶节点包含了完整的数据记录。这种索引叫做聚集索引。因为InnoDB的数据文件本身要按主键聚集,所以Innodb要求表必须有主键(Mysiam可以没有)。
第二个与MyISAM索引的不同是InnoDB的辅助索引data域存储相应记录主键的值而不是地址。
聚集索引这种实现方式使得按主键的搜索十分高效,但是辅助索引搜索需要检索两遍索引:首先检索辅助索引获得主键,然后用主键到主索引中检索获得记录.
Innodb特点:
锁事行级别、支持事务等。
猜你喜欢
- 2024-10-12 数据库笔试面试25——有关InnoDB和MyISAM的说法中
- 2024-10-12 Mysql中的InnoDB和MyISAM|每天一面试题
- 2024-10-12 数据库常见面试题:InnoDB和MySIAM的区别-开课吧
- 2024-10-12 记一次生产数据库MyISAM存储引擎转为Innodb过程
- 2024-10-12 InnoDB 和 MyISAM的数据分布是什么样的?
- 2024-10-12 程序员冷知识,Mysql的数据库引擎为什么多选InnoDB?
- 2024-10-12 MySQL之MyISAM索引和InnoDB索引的实现细节
- 2024-10-12 MyISAM 和 InnoDB 实现 B 树索引方式的区别是什么?
- 2024-10-12 MyISAM 与 InnoDB 索引的区别有哪些?
- 2024-10-12 mysql-innodb和myisam存储引擎 mysql的两种存储引擎区别,各自的使用场景
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)