`
风雪涟漪
  • 浏览: 508771 次
  • 性别: Icon_minigender_1
  • 来自: 大连->北京
博客专栏
952ab666-b589-3ca9-8be6-3772bb8d36d4
搜索引擎基础(Search...
浏览量:9069
Ae468720-c1b2-3218-bad0-65e2f3d5477e
SEO策略
浏览量:18487
社区版块
存档分类
最新评论

MySQL 架构 - MySQL 存储引擎 -MyISAM

阅读更多

MyISAM

MyISAM是MySQL默认的存储引擎。MyISAM在性能和特性上提供了一个很好的折中的解决办法。特性有,全文索引,压缩,GIS函数。MyISAM并不支持事物和行锁。

 

存储

MyISAM把表存储在两个文件中。一个数据文件,一个索引文件。扩展名为.MYD和.MYI。MyISAM的格式是平台独立的。意思就是你可以把这两个文件拷贝在任意的平台上。

 

MyISAM可以包含动态或静态列。MySQL根据表的定义来决定使用哪种格式。MyISAM表的行数限制在于,硬盘空间和操作系统所允许存在的最大文件。

 

MyISAM表在MySQL5.0中,默认的是动态长度的行,以及可操作256TB数据,使用6字节的指针指向数据记录。早期的MySQL默认指针为4字节,支持4GB的数据。所有的MySQL版本支持的指针大小上限为8字节。为了改变MyISAM表的指针大小,你必须指定MAX_ROWS,AVG_ROW_LENGTH的值。这两个数据指出了你所需要空间的总数。

 

 

CREATE TABLE mytable (

   a    INTEGER  NOT NULL PRIMARY KEY,

   b    CHAR(18) NOT NULL

) MAX_ROWS = 1000000000 AVG_ROW_LENGTH = 32;

 

这个例子中,我们告诉MySQL对这个表分配空间至少是32G。看看MySQL到底分配了多少。我们来看看。

mysql> SHOW TABLE STATUS LIKE 'mytable' \G
*************************** 1. row ***************************
Name: mytable
Engine: MyISAM
Row_format: Fixed
Rows: 0
Avg_row_length: 0
Data_length: 0
Max_data_length: 98784247807
Index_length: 1024
Data_free: 0
Auto_increment: NULL
Create_time: 2002-02-24 17:36:57
Update_time: 2002-02-24 17:36:57
Check_time: NULL
Create_options: max_rows=1000000000 avg_row_length=32
Comment:
1 row in set (0.05 sec)

 

我们看到了Create_options的值,是我们所设置的。也看到了Max_data_length的值接近了91GB。你可以通过ALTER TABLE 语句来修改指针的大小。但是这样的操作会使整个表和它的索引重写。会花费大量的时间。

 

MyISAM 特性

做为老牌的MySQL引擎。MyISAM有很多好的特性。这些特性已经被开发了很多年。已经能满足工作需要。

 

锁和并发

MyISAM锁定了整张表,而不是行。读取程序能获得将要读取的表的读锁。写入程序获得写锁。然而,当查询语句执行的时候,仍然可以插入新的数据。(并发插入)。这个是非常有用的特性。

 

自动修复

MySQL支持自动检测和修复MyISAM类型的表。

 

手动修复

你可以使用CHECK TABLE和REPAIR TABLE命令来检测表的错误和修复错误。当服务器停止的时候,你可以使用myisamchk命令行工具去检查和修复表。

 

索引特性

在MyISAM表中,你可以给第一个500字符的BLOB和TEXT列加上索引,MyISAM支持全文索引。为了复杂的查询,索引了单独的词。在以后会详细介绍索引。

 

健写入延迟

MyISAM表标有DELAY_KEY_WRITE的创建选项。意思是在一个语句结束后,不会把更改的索引写入到硬盘上。而是MyISAM在内存中缓存了更该。当它精简缓冲区或者关闭表的时候,就会把缓存的索引块写入到硬盘。对于一个频繁更新的表,会有很大的性能提升。然而,在服务器或系统挂掉的时候,索引也会被破坏,并且需要去修复它。你可以在服务器启动之前,用myisamchk去检测并修复。或者使用自动修复的选项。(即使你不使用DELAY_KEY_WRITE这个特性,这个个也是个很好的安全方案)。你可以全局的配置DELAY_KEY_WRITE。也可以给单独的表进行配置。

 

压缩的MyISAM表

举个例子吧,在基于CD-ROM或者DVD-ROM的应用程序以及其他的嵌入式环境。一旦这些表被建立就不会修改以及填满了数据。这些表就非常适合被压缩。

 

你可以使用myisampack工具去压缩表。你不能更改压缩表(虽然你可以解压缩,修改,重新压缩),但是这种表能节省大量的硬盘空间。也可以提高性能,因为这种表小,需要的硬盘空间也很少,也就能快速的查找记录了。压缩表可以有索引,但是它们仅仅是只读的。

 

对解压缩的数据进行读取,对于大多数现代的硬件来说都是可以忽略不计的。压缩的真正的好处是在于降低了硬盘的I/O.行可以单独的压缩,因此MySQL没有必要解压缩整个表,仅仅提取一行就可以了。

 

MyISAM Merge Engine

Merge引擎是MyISAM的变种。一个Merge表是许多相同的MyISAM表整合到一个虚表中。这点比较适合把MySQL应用在日志和数据仓库的应用中。

 

 

 相关推荐

 

 MySQL逻辑架构

 

并发控制

 

事务处理

 

 

多版本并发控制

 

 

MySQL 架构 - MySQL 存储引擎

 

MySQL 架构 - MySQL 存储引擎 -InnoDB

 

9
1
分享到:
评论

相关推荐

    mysql架构与存储引擎(MySQL逻辑架构、InnoDB引擎、MyISAM引擎、存储引擎选择).docx

    ### MySQL架构与存储引擎 #### 一、MySQL逻辑架构 MySQL作为一款广泛使用的开源关系型数据库管理系统,其内部架构设计非常精妙,旨在提供高效、可靠的数据存储与管理能力。 ##### 1、逻辑架构图 MySQL采用了典型...

    MySQL逻辑架构-存储引擎-用户权限密码详解

    服务层是MySQL架构的最上层,主要负责客户端的连接处理、授权认证以及安全检查,为客户端提供访问MySQL服务的接口。 核心层主要包含查询解析、分析优化SQL语句,以及缓存查询结果等功能,是MySQL处理数据的核心部分...

    MySQL-5.5.28-winx64安装包以及说明文档

    - **存储引擎**:MySQL支持多种存储引擎,如InnoDB(支持事务处理和外键)、MyISAM(快速读取,不支持事务)和Memory(数据存储在内存中)。选择合适的存储引擎对性能有很大影响。 - **索引**:创建索引可以加速...

    03-MySQL-高可用数据库存储引擎

    MySQL数据库的架构设计允许存储引擎以插件式的方式存在,这意味着我们可以根据不同的应用需求选择不同的存储引擎。存储引擎负责数据的存储和提取,不同的存储引擎提供了不同的功能和特性,以适应不同的应用场景。 ...

    mysql-5.7.32-linux-glibc-2.28-aarch64.tar.gz

    在使用MySQL的过程中,开发者和管理员需要了解SQL语法、存储引擎(如InnoDB和MyISAM)、事务处理、索引、视图、触发器、存储过程等核心概念。同时,了解如何使用工具如mysqldump进行数据导入导出,以及如何使用MySQL...

    mysql-cluster-gpl-7.2.4-win32

    5. SQL接口:MySQL Cluster不仅支持NDB存储引擎,还保留了传统的InnoDB和MyISAM等存储引擎,用户可以通过标准SQL接口访问和操作数据,降低了学习和使用成本。 6. 资源效率:由于数据分布在整个集群中,MySQL ...

    mysql源码(mysql-8.2.0.zip)

    2. **存储引擎**:MySQL支持多种存储引擎,如InnoDB(默认)、MyISAM、Memory等。InnoDB提供事务处理和行级锁定,适合高并发环境;MyISAM则以快速读取和小空间占用为特点,但不支持事务。在源码中,我们可以看到不同...

    mysql-community-release-el6-5.noarch.rpm

    在使用MySQL时,了解数据库的基本概念,如表、索引、查询语句(如SELECT、INSERT、UPDATE、DELETE)以及存储引擎(如InnoDB和MyISAM)是十分重要的。同时,掌握SQL语言的基础语法,包括DML(数据操作语言)、DDL...

    mysql-5.0.41-linux-i686-glibc23

    此外,MySQL 5.0版本还支持多种其他存储引擎,比如MyISAM,适用于读取密集型的应用,因为它有较快的读取速度;还有Memory引擎,用于临时存储数据,速度极快但数据不会持久化。每个引擎都有其特点和适用场景,可以...

    mysql深度学习者 MySQL架构与SQL执行流程

    5. 存储引擎(Storage Engine):负责数据的存储和管理,包括 InnoDB、MyISAM 等。 SQL 执行流程 ------------- SQL 执行流程是指 MySQL 数据库对 SQL 语句的处理和执行过程。下面是 SQL 执行流程的详细步骤: ...

    MySQL-client-5.5.48-1.linux2.6.i386.rpm、MySQL-server-5.5.48-1.linux2.6.i386.rpm

    5. **存储引擎更新**:除了InnoDB的优化,MyISAM也得到了改进,如支持全文搜索,提高了非事务处理场景下的效率。 6. **SQL语言扩展**:支持更多的SQL标准,如窗口函数和用户定义变量,使得查询更灵活,更接近标准...

    Mysql-5.0.45-linux-rpm

    另外,根据业务需求,选择合适的存储引擎(如InnoDB用于事务处理,MyISAM用于读取密集型应用)也至关重要。 总之,MySQL-5.0.45-linux-rpm提供了在i386架构Linux系统上部署和管理MySQL数据库的基本组件。虽然现在有...

    MySQL5.7-optmization

    ### MySQL 5.7 优化指南 ...以上是对MySQL 5.7官方文档中优化章节的主要内容的总结,涵盖了从SQL语句到存储引擎优化等多个方面的知识。通过这些内容的学习和实践,可以大大提高数据库的整体性能。

    linux-aarch-mysql-5.7.33_glibc2.12-x86_64.tar

    在数据库设计中,了解正常化原则、事务处理、索引优化、存储引擎(如InnoDB和MyISAM)的差异,以及触发器和视图的使用等概念也是必不可少的。这些知识可以帮助你构建高效、可靠的数据库架构。 总的来说,这个压缩包...

    mysql-boost-8.0.27.tar.gz

    3. **存储引擎**:MySQL采用插件式存储引擎架构,常见的有InnoDB(用于事务处理,支持行级锁定),MyISAM(非事务处理,快速读取)等。 4. **多线程**:MySQL支持多线程,可以在同一时间处理多个请求,提高并发性能...

    mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz

    9. **存储引擎**:虽然InnoDB是默认的存储引擎,但MySQL 5.6也支持MyISAM、Memory、CSV等其他引擎,每个引擎都有其特定的应用场景。 10. **优化器改进**:查询优化器得到了重大升级,能够更准确地估计查询成本,...

    mysql-standard-4.1.20-pc-linux-gnu-i686.tar.gz

    9. **MyISAM优化**:MyISAM作为默认存储引擎,也在这一版本中得到了性能优化,特别是在全表扫描和索引处理方面。 10. **安装与配置**:对于"mysql-standard-4.1.20-pc-linux-gnu-i686"这样的包,用户需要了解如何在...

    mysql-test-5.7.33-linux-glibc2.12-x86_64.tar.gz

    MySQL支持多种存储引擎,如InnoDB(默认,支持事务处理),MyISAM(非事务,快速读取),Memory(数据存储在内存中)等,选择依赖于具体的应用场景。 综上所述,"mysql-test-5.7.33-linux-glibc2.12-x86_64.tar.gz...

    MySQL-5.5.21-1.sles11.x86_64.rar

    9. **扩展性**: MySQL支持多种插件和存储引擎,如MyISAM、InnoDB、Memory等,可以根据应用需求选择合适的引擎。 10. **监控与维护**: 监控MySQL的性能和状态,例如通过`SHOW STATUS`和`SHOW VARIABLES`命令,可以...

    mysql-installer-community-8.0.24.0.rar

    可插拔的存储引擎架构 多种存储引擎: InnoDB MyISAM NDB (MySQL Cluster) Memory Merge Archive CSV 等等 MySQL 复制可提高应用性能和可扩展性 MySQL 分区有助于增强大型数据库应用的性能和管理 存储过程可提高开发...

Global site tag (gtag.js) - Google Analytics