学习MyISAM

myisam isam mysql 扩展 . 除非修改配置,一般来说 myisam 是默认的存储引擎 .


只能够进行表锁,不支持行锁。在进行读取操作时不会影响到其他用户其他的读取操作,因而有比较好的并发性。但是在执行写入操作时,会产生一个“排他锁”,其他用户的的读写操作都无法执行。因此如果一张表的查询很慢,经常发生等待,可能不是因为查询语句有问题执行比较慢,而是因为这张表同时执行了大量的写操作。总结起来,读操作和读操作之间是并行的,但是写操作和其他操作是串行的。

在以上基础上 myisam 还具有一个特性 : 并发插入( concurrentInsert )。该特性允许用户在读取一张表时,同时 insert 一条语句,不过 update 等其他写操作时不允许的。

myisam 的并发插入特性是可以控制的。可以通过修改 my.cnf 文件中的 concurrent_insert 参数设置并发插入的级别:

concurrent_insert = 0 并发插入特性关闭

concurrent_insert = 1 MyISAM 存储引擎表数据文件中不存在空洞(表中间没有被删除的行)时,可以在表的末尾插入数据

concurrent_insert = 2 无论有没有空洞,都可以在表的末尾插入数据


MySQL 支持对 my isam 的自动检查和修复

用户可以使用 check table xxx repair table xxx 命令实现对 my isam 表的检查和修复。

用户可以使用 myisamchk 工具来检查或修复 myisam 表,也可以使用 myisampack 来压缩 myisam 表,让它们占更少的空间。


myisam是不支持事务(TST)的。所以在牺牲了安全的同时,相较于事务安全的数据库引擎,myisam更快,占用更少的存储空间,执行命令所需要的内存更少。

my isam 的数据库表有三个文件构成,数据结构是frm后缀的文件 (frm 是通用的数据结构文件 ) ,数据文件是MYD (MY Data ) 后缀的文件,索引是MYI (MYIndex) 后缀的文件。这些文件的文件名是相同的。

myisam提供全文检索能力

myisam支持大文件,且text和blob列可以被索引.当然不是完全作为索引,只有前500字节可以作为索引.

myisam支持optimize table命令,这是因为myisam的索引文件和数据文件是分离的。


myisam有三种存储格式,分别是静态,动态和已压缩.

静态表是myisam的默认存储格式。当表中没有varchar,text,blob列时会自动使用这个格式。改存储格式的表会比较快,也比较容易恢复。

动态表是当表中有varchar,text,blob列时自动选择的。动态存储格式大部分时候比静态存储格式占用的空间更小,但是崩溃了也比较难恢复。

已压缩存储格式只能通过myisampack工具建立。它占得空间自然是最小的。


http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#myisam-storage-engine


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值