mysql-数据库三大范式是什么、mysql有哪些索引类型,分别有什么作用 、 事务的特性和隔离级别

1. 数据库三大范式是什么?

python 复制代码
数据库三大范式是设计关系型数据库时的规范化原则,确保数据库结构的合理性和减少数据冗余。
这三大范式分别是:
- **第一范式(1NF):** 数据表中的所有列都是不可分割的原子数据项,即每一列都不可再分。
	这消除了重复的列。
- **第二范式(2NF):** 数据表中的非主键列完全依赖于主键。
	这意味着每一行数据都能通过唯一的主键来识别,并且非主键列不能部分依赖于主键。
- **第三范式(3NF):** 数据表中的非主键列之间不存在传递依赖关系。
	换句话说,非主键列不能依赖于其他非主键列。

2. MySQL有哪些索引类型,分别有什么作用?

python 复制代码
MySQL支持多种类型的索引,其中一些主要的索引类型包括:
	- **B-Tree 索引:** 这是最常见的索引类型,适用于等值查询、范围查询和排序操作。
	- **哈希索引:** 适用于等值查询,但不支持范围查询和排序操作。在内存表上效果更好。
	- **全文索引:** 用于全文搜索,适用于包含文本的列。支持全文搜索的操作。
	- **空间索引:** 用于空间数据类型,如地理坐标数据。
	- **前缀索引:** 只索引列值的一部分,可以用于减小索引大小。
	- **组合索引:** 将多个列组合成一个索引,用于满足多列的查询需求。

3. 事务的特性和隔离级别

python 复制代码
**事务的四个特性(ACID):**
	- **原子性(Atomicity):** 事务是一个不可分割的工作单位,要么全部执行,要么全部不执行。
	- **一致性(Consistency):** 事务执行后,数据库从一个一致的状态变到另一个一致的状态,
		保持数据库的完整性。
	- **隔离性(Isolation):** 多个事务并发执行时,每个事务都应该感觉不到其他事务的存在,
		它们之间是隔离的。
	- **持久性(Durability):** 事务一旦提交,对数据库的改变应该是永久性的。

**事务的隔离级别:**
	- **READ UNCOMMITTED(读取未提交):** 允许读取其他事务未提交的数据,
		可能导致脏读、不可重复读和幻读。
	- **READ COMMITTED(读取已提交):** 只能读取已经提交的数据,解决了脏读问题,
		但仍可能存在不可重复读和幻读。
	- **REPEATABLE READ(可重复读):** 保证了在同一事务中多次读取同一数据时,结果保持一致。
		解决了脏读和不可重复读问题,但仍可能存在幻读。
	- **SERIALIZABLE(可串行化):** 最高的隔离级别,通过强制事务串行执行来解决所有并发问题,
		包括脏读、不可重复读和幻读。

随着隔离级别的提高,事务的并发性能通常会降低,因为更高的隔离级别通常需要更多的锁和资源。选择隔离级别时需要权衡一致性和性能的需求。
相关推荐
杨云龙UP3 分钟前
Spotlight 接入 Oracle 数据库监控操作指南 2026-06-16
数据库·oracle·性能监控·预警·阈值·spotlight·瓶颈分析
叫我:松哥10 分钟前
基于Python flask的中学可控智能命题系统设计与实现,整合遗传算法、DeepSeek 大模型及数据库技术构建一体化应用
数据库·人工智能·python·算法·机器学习·flask·遗传算法
阿维的博客日记10 分钟前
Hippo4j 线程池监控接入方法
数据库·hippo4j
审判长烧鸡20 分钟前
数据库字段命名规范速查表
数据库·sql
承渊政道23 分钟前
【MySQL数据库学习】(MySQL表的内外连接)
数据库·学习·mysql·leetcode·bash·数据库开发·数据库系统
瀚高PG实验室23 分钟前
db_ha集群中某个节点启动失败,报错缺少sm4加密模块
数据库·瀚高数据库·highgo
IvorySQL24 分钟前
PostgreSQL 技术日报 (6月16日)|Neon 自动化再进一步,逻辑复制冲突日志迎来 v50 更新
数据库·postgresql·自动化
小小工匠24 分钟前
Redis - 主从集群脑裂:数据丢失的隐藏杀手
数据库·redis
JAMSAN093028 分钟前
机器人轴承:被低估的“物理关节”,正在打开300倍增长空间
数据库·人工智能·机器人·智能硬件
计算机安禾9 小时前
【数据库系统原理】第19篇:计算机存储层次结构与数据库文件的物理组织
数据库·oracle