mysql存储引擎

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

  Mysql架构 --存储引擎

 Mysql存储引擎

1)存储引擎引入了一个新的概念,插件式存储引擎体系结构,MYSQL AB架构改造时候,让存储引擎层和sqllayer各自更为独立,耦合更小,甚至可以做到在线加载存储引擎,就是完全可以将一个新的存储引擎加载到一个正在运行的MySQL 中,而不影响MySQL 的正常运行。

2插件式存储引擎的

架构,为存储引擎的加载和移出更为灵活方便,也使自行开发存储引擎更为方便简单。

(3)MySQL的插件式存储引擎主要包括MyISAMInnodbNDB ClusterMariaFalconMemory其中最著名而且使用最为广泛的MyISAMInnodb两种存储引擎

 Mysql存储引擎介绍

1mysql5.1之前默认存储引擎。

2MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件。

3.结构定义信息的.frm文件,另外还有.MYD.MYI 文件,分别存放了表的数据(.MYD)和索引数据(.MYI)。

4. 每个表都有且仅有这样三个文件做为MyISAM存储类型的表的存储,就是说不管这个表有多少个索引,都是存放在同一个.MYI 文件中。

 MyISAM支持以下三种类型的索引:

1: B-Tree 索引

B-Tree 索引,就是所有的索引节点都按照balance tree 的数据结构来存储,所有的索引数据节点都在叶节点。

2: R-Tree 索引

要设计用于为存储空间和多维数据的字段做索引,所以目前的MySQL 版本来说,也仅支持geometry 类型的字段作索引。

3: Full-text 索引

Full-text 索引就是全文索引,他的存储结构也是b-tree。主要是为了解决在我们需要用like 查询的低效问题。

4: 索引有一个较大的限制,那就是参与一个索引的所有字段的长度之和不能超过1000 字节。

四:磁盘硬件故障

1每一个MyISAM的表都是存放在一个相同后缀名的.MYD 文件中,但实际存放格式可能并不是完全一样的

2因为MyISAM的数据存放格式是分为静态(FIXED固定长度、动态(DYNAMIC可变长度以及压缩(COMPRESSED)这三种格式。可以在创建表的时候通过ROW_FORMAT 来指定

 

  先算一个表中一行有多少个字节。

根据数据库中的表每天增加多少行记录,就能够算出每天要增加多少硬盘空间,这样就可根据数据量估算规划多大的空间。

例在数据库test中创建一张test1

wKiom1lg6bnxsfU3AAAKC9Cb2_s416.png-wh_50

wKioL1lg6crAEM8UAAAjh6xtgdA069.png-wh_50

执行mysql>desc  test1.tb1查看tb1的表结构

wKioL1lg6eCwRUTBAAAofriwtho027.png-wh_50

10个字节+20个字节+2个字节+20字节+8字节+8字节+100个字节=168字节

Tb1表的一个行有118个字节

如果每天增加10000条记录,大约需要10000x168/1024/1024=1.6MB

这样就可以根据每天增加的记录数,合理规划好磁盘空间了

1如果我们的数据库正在运行过程中发现某个MyISAM表出现问题了,则可以在线通过check table 命令来尝试校验他,并可以通过repair table 命令来尝试修复

2: 我们也可以通过myisamchk工具来对数据库中某个(或某些)表进行检测或者修复。

五:lnnodb 存储引擎介绍

1、支持事务

Innodb在功能方面最重要的一点就是对事务的支持

2、锁定机制的改进

Innodb改变了MyISAM的锁机制,实现了行锁。

3、实现外键

Innodb实现了外键引用这一数据库的重要特性。

4、Innodb存储引擎也和MyISAM不太一样,.frm文件来存放表结构定义相关的元数据,但是表数据和索引数据是存放在一起的。

六:Lnnodb物理结构分为俩大部分

首先,Innodb的表空间分为两种形式。一种是共享表空间,也就是所有表和索引数据被存放在同一个表空间(一个或多个数据文件)中,通过innodb_data_file_path来指定,增加数据文件需要停机重启。另外一种是独享表空间,也就是每个表的数据和索引被存放在一个单独的.ibd文件中。

 2: 日志文件

Innodb完全可以通过redo 日志将数据库Crash 时刻已经完成但还没有来得及将数据写入磁盘的事务恢复,也能够将所有部分完成并已经写入磁盘的未完成事务回滚并将数据还原。

3: MyISAMInnoDB的区别

MyISAM不支持事务,而InnoDB支持。InnoDBAUTOCOMMIT默认是打开的

wKiom1lg6fWDPf8KAAARqsBplx4349.png-wh_50










     本文转自柴鑫旺 51CTO博客,原文链接:http://blog.51cto.com/chaixinwang/1945553,如需转载请自行联系原作者


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
347
分享
相关文章
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
MySQL的存储引擎是其核心组件之一,负责数据的存储、索引和检索。不同的存储引擎具有不同的功能和特性,可以根据业务需求 选择合适的引擎。本文详细介绍了MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案。
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
MySQL存储引擎详述:InnoDB为何胜出?
MySQL 是最流行的开源关系型数据库之一,其存储引擎设计是其高效灵活的关键。InnoDB 作为默认存储引擎,支持事务、行级锁和外键约束,适用于高并发读写和数据完整性要求高的场景;而 MyISAM 不支持事务,适合读密集且对事务要求不高的应用。根据不同需求选择合适的存储引擎至关重要,官方推荐大多数场景使用 InnoDB。
100 7
MySQL存储引擎
本文介绍了数据库优化的多个方面,包括选择合适的存储引擎、字段定义原则、避免使用外键和触发器、大文件存储策略、表拆分及字段冗余处理等。强调了从业务层面进行优化的重要性,如通过活动设计减少外部接口调用,以及在高并发场景下的流量控制与预处理措施。文章还提供了具体的SQL优化技巧和表结构优化建议,旨在提高数据库性能和可维护性。
184 1
MySQL存储引擎
【赵渝强老师】MySQL的MyISAM存储引擎
在MySQL5.1版本之前,默认存储引擎为MyISAM。MyISAM管理非事务表,提供高速存储和检索,支持全文搜索。其特点包括不支持事务、表级锁定、读写互阻、仅缓存索引等。适用于读多、写少且对一致性要求不高的场景。示例代码展示了MyISAM存储引擎的基本操作。
【赵渝强老师】MySQL的InnoDB存储引擎
InnoDB是MySQL的默认存储引擎,广泛应用于互联网公司。它支持事务、行级锁、外键和高效处理大量数据。InnoDB的主要特性包括解决不可重复读和幻读问题、高并发度、B+树索引等。其存储结构分为逻辑和物理两部分,内存结构类似Oracle的SGA和PGA,线程结构包括主线程、I/O线程和其他辅助线程。
132 0
【赵渝强老师】MySQL的InnoDB存储引擎
【赵渝强老师】MySQL的Memory存储引擎
MySQL 的存储引擎层负责数据的存储和提取,支持多种存储引擎,如 InnoDB、MyISAM 和 Memory。InnoDB 是最常用的存储引擎,从 MySQL 5.5.5 版本起成为默认引擎。Memory 存储引擎的数据仅存在于内存中,重启后数据会丢失。示例中创建了使用 Memory 引擎的 test3 表,并展示了数据在重启后消失的过程。
124 0
MySQL高级篇——存储引擎和索引
MyISAM:不支持外键和事务,表锁不适合高并发,只缓存索引,内存要求低,查询快MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM不支持事务、行级锁、外键,有一个毫无疑问的缺陷就是崩溃后无法安全恢复。5.5之前默认的存储引擎优势是访问的速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用针对数据统计有额外的常数存储。故而 count(*) 的查询效率很高表名.frm 存储表结构;表名.MYD 存储数据 (MYData);
MySQL高级篇——存储引擎和索引
MySQL存储引擎如何完成一条更新语句的执行!
MySQL存储引擎如何完成一条更新语句的执行!
MySQL存储引擎如何完成一条更新语句的执行!
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等