阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL存储引擎 MyISAM 介绍

115次阅读
没有评论

共计 1402 个字符,预计需要花费 4 分钟才能阅读完成。

MyISAM 是 MySQL 默认存储引擎,它不支持事务,外键。但访问速度快,对事务完整性没有要求或者以 select,insert 为主的应用基本上都可以使用这个引擎。

每个 MyISAM 在磁盘上存储成 3 个文件,文件名都和表名相同,扩展分别是:

  • frm(存储表定义)
  • MYD(MYdata 存储数据)
  • MYI(MYIndex 存储索引)

数据文件和索引文件可以放置在不同的目录,平均分布 IO, 获取更快速度。

1.  指定索引文件和数据文件的路径

在创建表的时候通过 data directory 和 index directory 语句指定,也就是不同 MyISAM 表的索引文件和数据文件可以放置到不同的路径下,文件路径需要是绝对路径,并且有访问权限

—  默认存储路径
SELECT @@datadir;

MySQL 存储引擎 MyISAM 介绍

—  首先要创建 /ibddir 目录, 有 5.6 才支持单表指定目录
CREATE TABLE test_dir_table(
  strative_id VARCHAR(16)  NOT NULL,
  date_id VARCHAR(8) NOT NULL
  PRIMARY KEY (strative_id)
) ENGINE=MYISAM DATA DIRECTORY = ‘/ibddir’ INDEX DIRECTORY= ‘/ibddir’;

2. 检查表的健康状态

表可能会损坏,原因多种多样,check table 对 MYISAM 和 InnoDB 表都有作用,如检查有异常使用 (repair table 表名;) 来修复。

语法:
CHECK TABLE tbl_name[,tbl_name] … [option] …
 option= {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}

CHECK TABLE ai;

MySQL 存储引擎 MyISAM 介绍

3. MYISAM 表 3 种不同的存储格式

3.1 静态 (固定长度) 表,动态表,压缩表。其中静态表是默认的存储格式,字段都是非变长字段,每个记录都是固定长度。这种存储方式的优点是存储非常迅速,容易缓存,出现故障容易恢复,缺点是空间占用多,存储时会按照宽度定义补足空格,但应用访问时并不会得到这些空格。
但有个注意是:如果保存的内容后面本来就带有空格,在应用访问时也会被自动去掉,从而丢失了尾部空格。

CREATE TABLE Myisam_char (NAME CHAR(10)) ENGINE=MYISAM;
INSERT INTO Myisam_char VALUES(‘abcde’),(‘abcde  ‘),(‘  abcde’),(‘  abcde  ‘);
SELECT NAME,LENGTH(NAME) FROM Myisam_char;

从下面的输出看出,前面空格保留了。

MySQL 存储引擎 MyISAM 介绍

3.2 动态表中包含变长字段,记录不是固定长度的,优势是占用的空间相对比较小,但频繁的更新删除记录会产生碎片,需要定期 optimize table 或 myisamchk - r 命令,出现故障时恢复相对比较困难。

3.3 压缩表由 myisampack 工具创建,占据非常小的磁盘空间,每个记录是被单独压缩的。

4. 最后在回顾下 myisam 支持的特性

存储限制:“有”,官方是 256TB
锁机制:“ 表锁 ”  适用于并发性低的场景
B 树索引:“ 支持 ”
全文索引:” 支持 ”
索引缓存:” 支持 ”
数据压缩:” 支持 ”
空间使用:” 低 ” 默认是静态存储空格
内存使用:” 低 ” 因为不支持数据缓存
批理插入的速度:“ 高 ” 因为不支持支持事务,不需要写入日志文件

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计1402字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中