MySQL存储引擎特性介绍之MyISAM

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:
MyISAM在MySQL 5.1中是默认的存储引擎。MyISAM不支持事务,不支持外键,它的优势是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本上都可以使用这个引擎来创建表。一般的互联网网站大部分都是以查询为主,可以使用该引擎。
   每个MyISAM类型的表在磁盘上存储成3个文件,其文件和表名相同,但是扩展名分别是:
1).frm(存储表定义);
   2) .MYD(my data,存储表数据)
   3) .MYI(my index,存储索引信息,myisam表使用B型树索引)
创建MyISAM类型的表时,数据库文件和索引文件可以放置在不同的目录,以平均分布I/O,获得更快的速度,
CREATE TABLE MYISAM_TEST(
                                            id  int auto_increment not null ,  primary key(id)
                                    ) engine=myisam 
                                     data directory = ‘/opt/data’ index   directory = ‘/opt/index’
注意:选择的data和index的目录需要是绝对路径,且一定要保证当前启动mysql服务的用户对其有写权限,否则会提示错误。
MyISAM类型的表可能会损坏,原因有多种,损坏后的表可能不能被访问,会提示需要修复或者访问后返回错误的结果。
MyISAM类型的表提供修复的工具,用CHECK TABLE语句检查MyISAM表的健康,并用REPAIR TABLE语句修改一个损坏的MyISAM表。表损坏可能导致数据库异常重新启动等。
MyISAM表支持3钟不同的存储格式:静态表(固定长度),动态表,压缩表。
其中,静态表是默认的存储格式,在静态表中各种字段都是非变长字段(不包括变量长度列,如VARCHAR,BLOB,TEXT类型的列),这样每条记录都是固定长度的。该存储方式的优点是存储非常迅速,容易缓存,出现故障容易恢复,缺点是占用的空间比动态表多。静态表的数据在存储的时候会按照列的宽度定义补足空格,但是在应用访问的时候并不会得到这些空格,这些空格在应用之前已经去掉了。(要注意的是,如果保存的内容后面本来就带有空格,那么返回结果的时候也会被去掉)
动态表是表中含有不固定长度(如varchar,blob,text等)列的表,优点是占用的存储空间比较少,但是频繁的更新删除记录会产生碎片,要定期optimize tbale 语句或myisamchk -r来检查优化表,另外动态表在出现故障的时候恢复比较困难。
压缩表是有Myisampack工具创建,占据非常小的存储空间。已压缩表是只读格式的,已压缩表可以用myisamchk来解压缩。



本文转自 yubowei 51CTO博客,原文链接:http://blog.51cto.com/samyubw/223768
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
344
分享
相关文章
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
MySQL的存储引擎是其核心组件之一,负责数据的存储、索引和检索。不同的存储引擎具有不同的功能和特性,可以根据业务需求 选择合适的引擎。本文详细介绍了MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案。
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
事务是MySQL中一组不可分割的操作集合,确保所有操作要么全部成功,要么全部失败。本文利用SQL演示并总结了事务操作、事务四大特性、并发事务问题、事务隔离级别。
1058 2
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
MySQL存储引擎详述:InnoDB为何胜出?
MySQL 是最流行的开源关系型数据库之一,其存储引擎设计是其高效灵活的关键。InnoDB 作为默认存储引擎,支持事务、行级锁和外键约束,适用于高并发读写和数据完整性要求高的场景;而 MyISAM 不支持事务,适合读密集且对事务要求不高的应用。根据不同需求选择合适的存储引擎至关重要,官方推荐大多数场景使用 InnoDB。
100 7
Mysql索引:深入理解InnoDb聚集索引与MyisAm非聚集索引
通过本文的介绍,希望您能深入理解InnoDB聚集索引与MyISAM非聚集索引的概念、结构和应用场景,从而在实际工作中灵活运用这些知识,优化数据库性能。
319 7
MySQL引擎InnoDB和MyISAM的区别?
InnoDB是MySQL默认的事务型存储引擎,支持事务、行级锁、MVCC、在线热备份等特性,主索引为聚簇索引,适用于高并发、高可靠性的场景。MyISAM设计简单,支持压缩表、空间索引,但不支持事务和行级锁,适合读多写少、不要求事务的场景。
90 9
mysql事务特性
原子性:一个事务内的操作统一成功或失败 一致性:事务前后的数据总量不变 隔离性:事务与事务之间相互不影响 持久性:事务一旦提交发生的改变不可逆
MySQL存储引擎
本文介绍了数据库优化的多个方面,包括选择合适的存储引擎、字段定义原则、避免使用外键和触发器、大文件存储策略、表拆分及字段冗余处理等。强调了从业务层面进行优化的重要性,如通过活动设计减少外部接口调用,以及在高并发场景下的流量控制与预处理措施。文章还提供了具体的SQL优化技巧和表结构优化建议,旨在提高数据库性能和可维护性。
186 1
MySQL存储引擎
MySQL 8.0特性-自增变量的持久化
【11月更文挑战第8天】在 MySQL 8.0 之前,自增变量(`AUTO_INCREMENT`)的行为在服务器重启后可能会发生变化,导致意外结果。MySQL 8.0 引入了自增变量的持久化特性,将其信息存储在数据字典中,确保重启后的一致性。这提高了开发和管理的稳定性,减少了主键冲突和数据不一致的风险。默认情况下,MySQL 8.0 启用了这一特性,但在升级时需注意行为变化。
120 1
【赵渝强老师】MySQL的MyISAM存储引擎
在MySQL5.1版本之前,默认存储引擎为MyISAM。MyISAM管理非事务表,提供高速存储和检索,支持全文搜索。其特点包括不支持事务、表级锁定、读写互阻、仅缓存索引等。适用于读多、写少且对一致性要求不高的场景。示例代码展示了MyISAM存储引擎的基本操作。
【赵渝强老师】MySQL的InnoDB存储引擎
InnoDB是MySQL的默认存储引擎,广泛应用于互联网公司。它支持事务、行级锁、外键和高效处理大量数据。InnoDB的主要特性包括解决不可重复读和幻读问题、高并发度、B+树索引等。其存储结构分为逻辑和物理两部分,内存结构类似Oracle的SGA和PGA,线程结构包括主线程、I/O线程和其他辅助线程。
132 0
【赵渝强老师】MySQL的InnoDB存储引擎