• mysql引擎 innodb memory myisam 区别


    不同:
    1、innodb表的数据总是有序存放的,而内存表的数据就是按照写入顺序存放的;
    2、当数据文件有空洞的时候,innodb表在插入新数据的时候,为了保证数据有序性,只能在固定的位置写入新值,而内存表是找到空位就可以插入新值;
    3、数据位置发生变化的时候,innodb表只需要修改主键索引,而内存表需要修改所有索引
    4、innodb表用主键索引查询时需要走一次索引查找,用哪个普通索引查询的时候,需要走两次索引查找,而内存表没有这个区别,所有的索引的地位都是相同的
    5、innodb支持变长数据类型,不同记录的长度可能不同,内存表不支持blob和text字段,并且即使定义了varchar(n),实际也当作char(n),也就是固定长度字符串来存储,因此内存表的每行数据长度相同
    由于内存表的这些特性,每个数据行被删除以后,空出的额这个位置都可以被接下来要插入的数据复用
     
    内存表的锁:
    内存表不支持行锁,只支持表锁,因此,一张表只要有更新,就会堵住其他所有在这个表上的读写操作
     
    跟行锁比起来,表锁对并发访问的支持不够好,所以,内存表的锁粒度问题,决定了它在处理并发事务的时候,性能都会太好
     
    MyISAM是MySQL中常见的存储引擎,曾经是MySQL的默认存储引擎。MyISAM是基于ISAM引擎发展起来的,增加了许多有用的扩展。
     
    MyISAM的表存储成3个文件。文件的名字与表名相同。拓展名为frm、MYD、MYI。其实,frm文件存储表的结构;MYD文件存储数据,是MYData的缩写;MYI文件存储索引,是MYIndex的缩写。
     
    基于MyISAM存储引擎的表支持3种不同的存储格式。包括静态型、动态型和压缩型。其中,静态型是MyISAM的默认存储格式,它的字段是固定长度的;动态型包含变长字段,记录的长度不是固定的;压缩型需要用到myisampack工具,占用的磁盘空间较小。
     
    MyISAM的优势在于占用空间小,处理速度快。缺点是不支持事务的完整性和并发性。
     
     
     
    简单总结:
    innodb:支持事务处理,支持外健,支持崩溃修复能力和并发控制,如果需要对事务的完整性要求比较高,要求实现并发控制,那么选择innodb有很大的优势,如果需要频繁的更新、删除操作的数据库,也可以选择innodb,因为支持事务的提交和回滚
     
    myisam:插入数据快、空间和内存使用比较低,如果表主要是用于插入新记录和读出记录,那么选择myisam能实现处理高效率,如果应用的完整性、并发性要求比较低,也可以使用
     
    memory:所有的数据都在内存中,数据的处理速度快,但是安全性不高,如果需要很快的读写速度,对数据的安全性要求较低,都可以选择memeoey。它对表的大小有要求,不能建立太大的表,所以,这类数据库只使用在相对较小的数据库表。
     
    同一个数据库也可以使用多种存储引擎的表,如果一个表要求比较高的事务处理,可以选择innodb,这个数据库中可以讲查询要求比较高的表选择myisam存储,如果该数据库需要一个用于查询的临时表,可以选择memory存储引擎

  • 相关阅读:
    三级菜单的实现方式
    简单登录接口实践
    C++中的set和java的hashset有何区别?
    css 利用文档结构给列表添加样式
    谈谈我对JS中this的理解
    谈谈我对JS原型的理解
    使用node.js,实现简单的JS文件合并小工具
    谈谈我对JS闭包的理解
    谈谈我对JS作用域的理解
    模拟实现 百度翻译 右下方的可折叠的分享按钮列表
  • 原文地址:https://www.cnblogs.com/weiluoyan/p/10681655.html
Copyright © 2020-2023  润新知