名词解释ACID

本文详细介绍了数据库事务正确执行的四大核心要素:原子性、一致性、隔离性和持久性(简称ACID),并阐述了这些特性如何确保数据在事务处理过程中的完整性和准确性。

ACID指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务的数据库系统,必需要具有这四种特性,否则在事务过程当中无法保证数据的正确性,交易过程极可能不到交易方的要求。

 

事务的四大特性

1、一致性:将事务中所做的操作捆绑成一个原子单元,即对于事务所进行的数据修改等操作,要么全部执行,要么全部不执行。

2、原子性:事务在完成时,必须使所有的数据都保持一致状态,而且在相关数据中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构都应该是正确的。

3、隔离性:由并发事务所做的修改必须与任何其他事务所做的修改相隔离。事务查看数据时数据所处的状态,要么是被另一并发事务修改之前的状态,要么是被另一并发事务修改之后的状态,即事务不会查看由另一个并发事务正在修改的数据。这种隔离方式也叫可串行性。

4、持久性:事务完成之后,它对系统的影响是永久的,即使出现系统故障也是如此。

 

<think>嗯,用户想要了解MySQL相关的术语解释和数据库名词定义。从用户的提问方式来看,ta应该是数据库初学者,正在系统学习MySQL的基础概念。用户没有指定具体术语,说明需要比较全面的基础名词解释。 我注意到用户引用了三份资料,但内容比较零散且存在格式问题。需要帮ta梳理出核心概念:第一份资料提到概念模式和外模式,第二份强调主键特性,第三份涉及范式理论和关系模型。这些正好覆盖数据库设计的三个层级:概念设计、逻辑设计和物理设计。 为了让用户建立知识框架,我决定按数据库体系结构分层解释术语: 1. 最底层存储相关:数据文件、页、行 2. 中间层结构相关:表、列、索引 3. 上层逻辑相关:视图、存储过程 4. 操作相关:事务、DML 特别要注意主键的解释,因为引用[2]强调这是“强烈建议不要使用有业务含义的字段充当主键”,这个设计原则对初学者很重要。事务的ACID特性也是MySQL的核心知识点,需要展开说明。 用户引用的范式理论部分比较混乱,需要简化处理:只说明第一范式要求原子性,第三范式解决数据冗余即可。BCNF这类高级概念暂时不提,避免信息过载。 最后生成的三个问题要引导用户深入:性能优化(索引)、设计实践(范式应用)、高级特性(存储过程)。这样从理解术语自然过渡到实际应用。</think>以下是MySQL及数据库核心术语的详细解释,按概念层级分类整理: --- ### **一、基础结构术语** 1. **数据库 (Database)** 存储结构化数据的逻辑容器,包含多张关联表。MySQL中可通过`CREATE DATABASE`创建。 2. **表 (Table)** 数据的二维矩阵结构,由行和列组成。例如用户表`users`: ```sql CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50) ); ``` 3. **行/记录 (Row/Record)** 表中一条独立数据单元。如用户表的一行:`(1, '张三')`。 4. **列/字段/属性 (Column/Field/Attribute)** 数据的垂直分类,定义数据类型和约束。如`users`表中的`id`(整型)和`name`(字符串型)。 --- ### **二、键与约束** 5. **主键 (Primary Key)** - **定义**:唯一标识表中每行数据的列或列组合(如`id`)[^2]。 - **特性**: - 值不可重复且非空(`UNIQUE + NOT NULL`) - 建议使用无业务意义的代理键(如自增ID)[^2] - 物理实现通常为聚簇索引 6. **外键 (Foreign Key)** 建立表间关联的列,引用另一表的主键。如订单表中的`user_id`关联`users.id`: ```sql CREATE TABLE orders ( order_id INT PRIMARY KEY, user_id INT, FOREIGN KEY (user_id) REFERENCES users(id) ); ``` --- ### **三、数据操作语言** 7. **DML (Data Manipulation Language)** 操作数据的SQL命令: - `SELECT`:查询数据 - `INSERT`:插入新记录 - `UPDATE`:修改现有数据 - `DELETE`:删除记录 8. **事务 (Transaction)** 原子性操作的集合,满足ACID特性: - **原子性 (Atomicity)**:全部成功或全部回滚 - **一致性 (Consistency)**:保持数据逻辑正确 - **隔离性 (Isolation)**:并发操作互不干扰 - **持久性 (Durability)**:提交后数据永久保存 ```sql START TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2; COMMIT; -- 或 ROLLBACK 回滚 ``` --- ### **四、数据库设计概念** 9. **范式 (Normalization)** 减少数据冗余的设计规范: - **第一范式 (1NF)**:字段值原子性(不可再分) - **第三范式 (3NF)**:消除传递依赖(如`用户表`不应含`订单金额`)[^3] 10. **索引 (Index)** 加速查询的数据结构(如B+树),代价是降低写速度。常见类型: - 主键索引(聚簇索引) - 唯一索引(`UNIQUE`约束) - 普通索引(`INDEX`) --- ### **五、体系结构层级** 11. **概念模式 (Conceptual Schema)** 数据库全局逻辑结构,描述所有实体、属性及关系[^1]。 12. **外模式 (External Schema)** 用户视角的数据子集(如为财务部门提供`订单金额`视图,隐藏其他字段)[^1]。 13. **存储引擎 (Storage Engine)** MySQL底层管理数据的组件: - **InnoDB**:支持事务、行级锁(默认引擎) - **MyISAM**:不支持事务,表级锁(适用于读多写少) --- ### **六、高级对象** 14. **视图 (View)** 虚拟表,基于SQL查询结果生成。简化复杂查询: ```sql CREATE VIEW user_orders AS SELECT users.name, orders.amount FROM users JOIN orders ON users.id = orders.user_id; ``` 15. **存储过程 (Stored Procedure)** 预编译的SQL代码集,提高执行效率: ```sql DELIMITER // CREATE PROCEDURE GetUser(IN uid INT) BEGIN SELECT * FROM users WHERE id = uid; END // DELIMITER ; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ice_baili

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值