zoukankan      html  css  js  c++  java
  • Mysql引擎MyISAM和InnoDB的区别

    InnoDB的数据存储在表空间中,表空间是由InnoDB管理的一个黑盒子,由一系列的数据文件组成。InnoDB可以将每个表的数据和索引存放在单独的文件中。
    InnoDB采用MVCC来支持高并发,并且实现了四个标准的隔离级别。默认级别是REPEATABLE READ(可重复读),并且通过间隙锁策略防止幻读的出现。间隙锁使得InnoDB不仅仅锁定查询涉及的行,还会对索引中的间隙进行锁定,以防止幻影行的插入
    InnoDB表示基于聚簇索引建立的,聚簇索引对主键查询有很高的性能。不过它的二级索引(非主键索引)中必须包含主键列,
     
     
    MyISAM
    在MySQL5.1及以前的版本,MyISAM是默认的存储引擎。MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM不支持事务和夯机所,而且有一个缺陷就是崩溃后无法安全恢复。
     
    存储:
            MyISAM会将表存储在两个文件中:数据文件和索引文件,分别以.MYD和.MYI为扩展名。MyISAM表可以包含动态或静态行(长度固定)。MyISAM表可以存储的行记录数,一般受限于可用的磁盘空间
     
    特性:
            加锁与并发:
                    MyISAM对整张表加锁,而不是针对行。读取时会对需要读到的所有表加共享锁,写入时则对表加排它锁。但是在表有读取查询时,也可以往表中插入新的记录(这被称为并发插入)
            修复:
                    通过CHECK TABLE mytable检查表的错误,如果有错误可以通过执行REPAIR TABLE mybatle进行修复。如果MySQL服务器已经关闭,也可以通过myisamchk命令行工具进行检查和修复操作
            索引特性:
                    对于MyISAM表,即使是BLOB和TEXT等长字段,也可以基于其前500个字符创建索引。也支持全文索引,是一种基于分词创建的索引,也可以支持复杂的查询
     
    压缩表:
            如果表在创建并导入数据以后,不会再进行修改操作,那么这样的表适合使用MyISAM亚索表
            可以使用myisampack对表进行压缩,压缩表是不能进行修改的(除非先解除压缩,修改数据,然后再次压缩)。压缩表可以极大地减少磁盘空间占用,因此也可以减少磁盘I/O,从而提升查询性能。压缩表也支持索引
  • 相关阅读:
    dp学习笔记1
    hdu 4474
    hdu 1158(很好的一道dp题)
    dp学习笔记3
    dp学习笔记2
    hdu 4520+hdu 4522+hdu 4524(3月24号Tencent)
    hdu 1025(最长非递减子序列的n*log(n)求法)
    hdu 2063+hdu 1083(最大匹配数)
    hdu 1023
    《 Elementary Methods in Number Theory 》Exercise 1.3.12
  • 原文地址:https://www.cnblogs.com/gqymy/p/11089796.html
Copyright © 2011-2022 走看看