MySQL常用存储引擎之MyISAM

1、MySQL5.5之前版本默认存储引擎

MySQL常用存储引擎之MyISAM_第1张图片

    临时表:在排序、分组等操作中,当数量超过一定的大小之后,由查询优化器建立的临时表。

2、MyISAM存储引擎由MYD和MYI组成

    MySQL常用存储引擎之MyISAM_第2张图片

3、特性

    (1) 并发性与锁级别

        MyISAM使用的是表级锁,也就意味着在对表中的数据进行修改时,需要对整个表进行加锁。而在对表中的数据进行读取时,也需要对所有的表加共享锁。读取和写入这两种操作是互斥的,当然在一些情况下我们对表的数据进行读取时,也可以在表的末尾插入数据。由此可以看出,MyISAM对读写混合的并发性并不是太好,如果只是只读的话,就并发性而言,还是可以接受的,因为共享锁不会阻塞共享锁。

    (2) 表损坏修复

        MyISAM支持由于任意意外关闭而损坏的MyISAM表进行检查和修复操作。这里所说的修复并不是事务恢复,因为MyISAM并不是一种事物型的存储引擎,所以它也不可能进行事务恢复所需要的相关日志。

       a、 创建数据库:

            CREATE DATABASE IF NOT EXISTS my_db default charset utf8 COLLATE utf8_general_ci;

            

        b、创建表:

            use test;

            create table myIsam(id int, c1 varchar(10))engine=myisam;

            

        c、查看文件系统中myIsam是如何存储的:

            MySQL常用存储引擎之MyISAM_第3张图片 

            myIsam.frm:存储表的结构信息

            myIsam.MYD:存储表的数据信息

            myIsam.MYI:存储表的索引信息

        d、对表进行检查修复:

            方式一:

                检查:check table myIsam;

                修复:repair table myIsam;

                MySQL常用存储引擎之MyISAM_第4张图片

            方式二:

                myisamchk --help(需要停掉MySQL服务,否则可能会对表造成更大的损坏)

                MySQL常用存储引擎之MyISAM_第5张图片

                MySQL常用存储引擎之MyISAM_第6张图片

                MySQL常用存储引擎之MyISAM_第7张图片

                MySQL常用存储引擎之MyISAM_第8张图片

    (3) MyISAM表支持的索引类型

        MyISAM表支持全文索引,支持对BLOB,TEXT,或者很长的VARCHAR类型的字段建立前500个字符的前缀索引。

    (4) MyISAM表支持数据压缩

        如果MyISAM表是一张很大的只读表,也就是在表创建完并导入数据后,就不会对表进行任何修改操作,那么我就可以对表进行压缩操作。这样可以减少磁盘IO。

        命令行:myisampack(由于表中数据的压缩是独立进行压缩的,所以在读取单行数据的时候,不用对整个表进行解压)

        MySQL常用存储引擎之MyISAM_第9张图片

        对于压缩的表只能进行读操作:

            

4、限制

    版本MAX_Rows和AVG_ROW_LENGTH

    版本>MySQL5.0时默认支持为256TB

5、适用场景:

    . 非事物型应用( MyISAM不支持事务)

    . 只读类应用

    . 空间类应用(如存储GPS数据,支持空间函数,可应用空间函数对数据进行计算)

    

    

你可能感兴趣的:(mysql)