面试题15: Mysql 数据存储原理

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 面试题15: Mysql 数据存储原理

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放入一个大仓库内,这使得速度增快,灵活性增强。


一:MySQL主要特性


MySQL的存储原理主要涉及到存储引擎、索引、事务处理、锁定机制等方面。


1. 存储引擎


MySQL的最大特色之一是其插件式的存储引擎架构,这种架构可以让用户选择最适合自己需求的存储引擎。常见的MySQL存储引擎有MyISAM、InnoDB、Memory等。


- MyISAM:MyISAM是MySQL的默认存储引擎(直到MySQL 5.5版本)。MyISAM非常适合于:1) 需要高速读取的系统 2) 只做插入操作,而不需要修改或删除操作的系统。


- InnoDB:InnoDB是一个可以提供有提交、回滚和崩溃恢复能力的事务安全(ACID兼容)的存储引擎。但是在InnoDB中读取操作(不是改变数据的查询)也会产生副本。因此,InnoDB适合处理大量的数据。


- Memory:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果数据库重启,所有的数据都会消失。


2.索引


为了提高查询效率,MySQL提供了索引机制。MySQL提供了主键索引、唯一索引、全文索引等多种索引,并且支持多列索引。索引是在存储引擎层实现的,所以不同的存储引擎可能会有不同的索引类型和实现。


3.事务处理


事务是一系列的数据操作语句,事务是一个不可分割的工作单位,只有所有的操作都成功,事务才算成功。如果一个操作失败,那么这个事务就会回滚到事务开始前的状态。


4.锁定机制


MySQL中的锁定机制可以确保在并发环境下数据的一致性。锁定机制包括共享锁(读锁)和排他锁(写锁),InnoDB存储引擎还支持行级锁和表级锁。


二:MySQL的存储原理


Mysql的数据库存储原理主要有以下几点:


1. 数据存储在磁盘上。Mysql数据库系统将数据存储在磁盘文件中,这些文件又分为以下几类:


- 数据库目录文件(.frm文件):存储表结构信息。


- 数据文件(.MYD文件):存储表中的实际数据。


- 索引文件(.MYI文件):存储表的索引。


2. 数据以页为单位存储。Mysql数据库以页(Page)为单位将数据存储在数据文件中,默认的页大小是16KB。


3. 数据在磁盘上以表空间的形式组织。表空间是由一个或多个数据文件组成的逻辑存储单元,每个表空间存储一系列的表。


4. 每个存储引擎有自己的存储机制。不同的存储引擎有不同的数据存储和索引实现机制,如InnoDB使用聚集索引、MyISAM使用非聚集索引。


5. 使用缓冲池缓存经常访问的数据。缓冲池缓存磁盘上的数据页,使之留在内存中,提高访问速度。


6. 使用渐进式写入技术。Mysql不会立即将缓存中的脏页刷新到磁盘,而是按需周期性地刷新。


7. 使用检查点技术保证数据的完整性。检查点机制会在主数据文件更新时,同时更新日志文件或重做日志,以便在系统故障时使用日志恢复数据。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
4月前
|
存储 SQL 关系型数据库
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
|
6月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
6月前
|
存储 关系型数据库 MySQL
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
|
4月前
|
关系型数据库 MySQL Java
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
|
8月前
|
自然语言处理 搜索推荐 关系型数据库
MySQL实现文档全文搜索,分词匹配多段落重排展示,知识库搜索原理分享
本文介绍了在文档管理系统中实现高效全文搜索的方案。为解决原有ES搜索引擎私有化部署复杂、运维成本高的问题,我们转而使用MySQL实现搜索功能。通过对用户输入预处理、数据库模糊匹配、结果分段与关键字标红等步骤,实现了精准且高效的搜索效果。目前方案适用于中小企业,未来将根据需求优化并可能重新引入专业搜索引擎以提升性能。
381 5
|
4月前
|
SQL 关系型数据库 MySQL
MySQL group by 底层原理详解。group by 执行 慢 原因深度分析。(图解+秒懂+史上最全)
MySQL group by 底层原理详解。group by 执行 慢 原因深度分析。(图解+秒懂+史上最全)
MySQL group by 底层原理详解。group by 执行 慢 原因深度分析。(图解+秒懂+史上最全)
|
6月前
|
存储 SQL 关系型数据库
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
|
6月前
|
SQL 存储 关系型数据库
滴滴面试:明明 mysql 加的是 行锁,怎么就变 表锁 了?
滴滴面试:明明 mysql 加的是 行锁,怎么就变 表锁 了?
|
8月前
|
消息中间件 NoSQL 关系型数据库
去哪面试:1Wtps高并发,MySQL 热点行 问题, 怎么解决?
去哪面试:1Wtps高并发,MySQL 热点行 问题, 怎么解决?
去哪面试:1Wtps高并发,MySQL 热点行 问题, 怎么解决?
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?

推荐镜像

更多