MySQL相关问题-1

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: MySQL支持多种数据引擎,如InnoDB(支持事务、行级锁、外键及聚簇索引)、MyISAM(查询快、仅支持表级锁及非聚簇索引)、Memory(数据存储于内存,适合临时数据)和Archive(高效压缩,适合归档数据)。不同引擎在事务、锁机制、索引类型及适用场景上存在差异。

Q:MySQL支持的数据引擎有哪些?有什么区别

  1. InnoDB(默认引擎)(一诺DB)
  1. 支持 事务(ACID 特性),通过 COMMIT/ROLLBACK 保证数据一致性。
  2. 支持 行级锁(仅锁定修改的行,减少锁冲突)和 表级锁。
  3. 支持 外键约束,维护表之间的关联关系。
  4. 采用 聚簇索引(数据和索引存储在一起),查询效率高。
  5. 具备 崩溃恢复能力(通过 redo log 和 undo log 实现)。
  1. MyISAM(麦爱山姆)
  1. 不支持事务和外键。
  2. 只支持 表级锁(写入时锁定整张表,并发写入性能差)。
  3. 采用 非聚簇索引(数据和索引分开存储),查询速度快(尤其全表扫描)。
  4. 支持 全文索引(MySQL 5.6 前仅 MyISAM 支持)。
  5. 存储格式简单,占用空间小,备份恢复方便。
  1. Memory(HEAP)(灭摸瑞)
  1. 数据 全部存储在内存中,读写速度极快(适用于临时数据)。
  2. 支持 哈希索引(查询速度快,但不支持范围查询)和 B 树索引。
  3. 不支持事务、外键,表级锁。
  4. 数据在 MySQL 服务重启或崩溃后丢失(内存易失性)。
  1. Archive(哦凯服)
  1. 专为 数据归档 设计,压缩比极高(节省存储空间)。
  2. 只支持 INSERT 和 SELECT 操作,不支持 UPDATE、DELETE、索引(除自增主键)。
  3. 行级锁,适合批量插入。

<!--br {mso-data-placement:same-cell;}--> td {white-space:nowrap;border:0.5pt solid #dee0e3;font-size:10pt;font-style:normal;font-weight:normal;vertical-align:middle;word-break:normal;word-wrap:normal;}

特性 InnoDB MyISAM Memory Archive
事务支持
外键支持
锁粒度 行级锁 表级锁 表级锁 行级锁
索引类型 B-Tree(聚簇) B-Tree(非聚簇) 哈希 / B-Tree B-Tree
数据存储 磁盘 磁盘 内存 磁盘(压缩)
崩溃恢复
适用场景 事务、高并发 只读、全文搜索 临时数据、高速查询 历史归档


Q:数据库的三范式

  1. 第一范式(1NF):属性不可拆分(列)
  2. 第二范式(2NF):在满足第一范式的情况下,不能存在部分依赖,既非主键属性必须完全依赖于主键,不能依赖部分主键
  3. 第三范式(3NF):在满足第二范式的情况下,不能出现依赖传递,例如:C(非主属性)-->B(非主属性)-->A(主属性)

1NF的情况:

在需求分析后,contact(属性)可拆分成电话号码和地址俩列,不满足1NF条件

<!--br {mso-data-placement:same-cell;}--> td {white-space:nowrap;border:0.5pt solid #dee0e3;font-size:10pt;font-style:normal;font-weight:normal;vertical-align:middle;word-break:normal;word-wrap:normal;}

id name sex_code sex_desc contact
1 张三 0 17835201234_山西省运城市xx村
2 李四 0 17735204567_山西省吕梁市yy村
3 王五 1 18835207890_山西省太原市zz村

2NF的情况:

kc_name依赖于kc_id而不依赖于stu_id,此时的kc_id和stu_id属于联合主键,所以不满足2NF的情况

<!--br {mso-data-placement:same-cell;}--> td {white-space:nowrap;border:0.5pt solid #dee0e3;font-size:10pt;font-style:normal;font-weight:normal;vertical-align:middle;word-break:normal;word-wrap:normal;}

stu_id kc_id score kc_name
1 1011 85 高数3-1
1 1022 79 计算机组成原理
2 1011 59.9 高数3-1

3NF的情况:

sex_desc依赖于sex_code,而sex_code依赖于id,这出现了依赖传递,不符合3NF

<!--br {mso-data-placement:same-cell;}--> td {white-space:nowrap;border:0.5pt solid #dee0e3;font-size:10pt;font-style:normal;font-weight:normal;vertical-align:middle;word-break:normal;word-wrap:normal;}

id name sex_code sex_desc phone address
1 张三 0 17835201234 山西省运城市xx村
2 李四 0 17735204567 山西省吕梁市yy村
3 王五 1 18835207890 山西省太原市zz村


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
8天前
|
运维
欢迎报名|2026 Agentic AICon—智能体基础设施与AgentOps专场,邀您参会
欢迎报名|2026 Agentic AICon—智能体基础设施与AgentOps专场,邀您参会
1421 0
|
11月前
|
SQL 缓存 Java
MyBatis场景面试题
MyBatis与MyBatisPlus均属ORM框架,前者擅长复杂SQL及动态查询,后者封装API简化单表操作。常用XML标签如if、foreach提升SQL灵活性。MyBatis支持一级(SqlSession级)与二级(NameSpace级)缓存,提升查询效率。#{}防SQL注入,${}用于动态表名等场景。
477 62
|
7月前
|
人工智能 运维 供应链
2025年度十大工业智能大模型平台深度评测,树根科技位列榜首
在工业4.0与数字化转型加速背景下,2025年工业智能大模型进入实效竞争阶段。本文基于技术架构、场景落地、生态协同等维度,对国内主流平台开展系统评测,发布Top10榜单。树根科技凭借多模态融合与行业知识深度整合能力获评AAA级,位居榜首。华为云、阿里云、百度智能云等紧随其后,在制造优化、视觉检测、能源管理等领域各具优势。评测强调“用好大模型”重于“拥有”,为制造企业选型提供权威参考,助力高质量发展。
1756 0
|
Java 存储
线程池的核心参数有哪些?
线程池七大核心参数:核心/最大线程数、线程保持时间及单位、阻塞队列、线程工厂与拒绝策略。
1641 79
|
11月前
|
存储 SQL 关系型数据库
MySQL 核心知识与索引优化全解析
本文系统梳理了 MySQL 的核心知识与索引优化策略。在基础概念部分,阐述了 char 与 varchar 在存储方式和性能上的差异,以及事务的 ACID 特性、并发事务问题及对应的隔离级别(MySQL 默认 REPEATABLE READ)。 索引基础部分,详解了 InnoDB 默认的 B+tree 索引结构(多路平衡树、叶子节点存数据、双向链表支持区间查询),区分了聚簇索引(数据与索引共存,唯一)和二级索引(数据与索引分离,多个),解释了回表查询的概念及优化方法,并分析了 B+tree 作为索引结构的优势(树高低、效率稳、支持区间查询)。 索引优化部分,列出了索引创建的六大原则
278 2
|
11月前
什么是AOP
AOP(面向切面编程)是一种编程范式,旨在将横切关注点(如日志、事务管理)从业务逻辑中分离,提升代码模块化与可维护性。核心概念包括:切面(封装横切逻辑)、通知(定义执行时机)、切入点(指定应用位置)、织入(整合切面与业务逻辑)。常见通知类型有前置、后置、返回、异常和环绕通知。
668 1
|
10月前
|
前端开发 Java 编译器
SSM相关问题-3-什么是AOP?--AOP的实现原理是什么---SpringMvc的执行流程
AOP(面向切面编程)是一种编程范式,旨在将横切关注点(如日志、事务管理)从业务逻辑中分离,提升代码模块化与可维护性。其核心包括切面、通知、切入点等概念,通过动态代理(如JDK、CGLIB)实现,增强代码灵活性与复用性。
459 0
|
11月前
|
前端开发 Java Spring
SpringMvC的执行流程
客户端发送HTTP请求,Spring MVC的前端控制器DispatcherServlet接收请求并调用HandlerMapper进行映射,返回包含Controller和拦截器的执行链。控制器执行逻辑后返回ModelAndView,前端控制器再调用ViewResolver解析视图并渲染HTML页面,最终返回给客户端。
343 0
|
11月前
|
存储 算法 索引
HashMap的实现原理
HashMap基于哈希算法实现,采用链表散列结构(数组+链表/红黑树)。JDK1.8前使用拉链法解决冲突,将冲突元素存入链表。JDK1.8后,当链表长度超过8时,转化为红黑树以提升查找效率;当元素数小于6时,退化为链表。通过key的hashCode计算索引,put时若key相同则覆盖,不同则添加到链表或树中。get时通过hash值定位并判断key获取对应值。
427 0
|
11月前
|
Java Spring 容器
DI依赖注入的几种手段
本内容介绍了依赖注入的四种方式:构造器注入、接口注入、Setter注入和注解注入,并重点比较了Spring中的@Autowired与Java标准注解@Resource的区别,包括来源和依赖查找策略。
492 0