MySQL常用存储引擎之MyISAM

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

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

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

    

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是如何存储的:

             

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

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

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

        d、对表进行检查修复:

            方式一:

                检查:check table myIsam;

                修复:repair table myIsam;

                

            方式二:

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

                

                

                

                

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

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

    (4) MyISAM表支持数据压缩

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

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

        

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

            

4、限制

    版本<MySQL5.0时默认表大小为4G,如修改大表则需要修改MAX_RowsAVG_ROW_LENGTH

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

5、适用场景:

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

    . 只读类应用

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

    

    

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值