事务概念及存储引擎

本文介绍了MySQL中的事务概念及其重要性,通过银行转账的例子说明了事务的必要性,并详细阐述了事务的四大特性:原子性、隔离性、持久性和一致性。此外,还对比了两种主要的存储引擎MyISAM和InnoDB的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事务概念及存储引擎

  1.0 为何要事务?

  先来看一个场景,银行转账汇款:

  李彦宏和周鸿祎天天打架,现在让李彦宏给周鸿祎转款1000 元

  设计如下表

  account表

  编号(id)用户名(user)金额(cash)

  1李彦宏3000

  2周鸿祎2000

  传统的做法:

  mysql> update account set cash = cash -1000 where id =2;

  update account set cash =cash +1000 where id=1;

  缺陷:

  不安全。比如减少李彦宏钱的指令执行了,但是增加周鸿祎钱的指令却没有执行成功。

  这个时候,我们就要使用mysql的事物机制。

  1.1事务

  

 

  1.2事务的使用

  事务相关语句 DTL

  

 

  1.3事务的四种特性:

  1.原子性,是一个不可分割的逻辑单元,一组sql语句,要么都执行,要么都不执行。

  2.隔离性,事务中的执行过程是不可见的。

  3.持久性,事务一旦提交,就不可撤销。

  4.一致性,事务在发生之前和发生之后,数据是一致。(能量守恒)

  1.4事务的原理:

  传统方式:

  

 

  事务机制:

  

 

  上面的例子:李彦宏给周鸿祎转钱用事物的代码:

  #开启事物

  Start transaction;

  #执行的代码

  Update account set cash=cash-1000 where id=1;

  Update account set cash+1000 where id=2;

  #提交

  commit

  # 语句出错 可以回滚

  #rollback

  1.5事务在哪些场合下应用:

  一般来说,对于安全性要求比较的业务,建议使用事务。

  2.0 mysql存储引擎

  何为存储引擎?

  我们说数据库是组织、存储和管理数据的仓库。那么,数据库存储数据的方式,就是存储引擎。

  在mysql中,存储引擎是以插件的形式加载的。Mysql的存储引擎种类繁多,对于我们来说,要熟悉两种存储引擎去,MyISAM和inonoDB。

  Myisam不支持事务。

  Innodb支持事务。

  全文索引在mysql5.5以前版本中,innodb是不支持的,但是5.5以后的版本支持。

  常见存储引擎

  

 

  mysql默认的存储引擎,

  在mysql5.5以前的版本:MyISAM

  在mysql5.5以后的版本:innodb

  如果我们要自己声明存储引擎:

  Create table()engine=myisam default charset utf8

转自:http://www.cnblogs.com/caicaizi/p/5923414.html

### MySQL 存储引擎的基本概念 MySQL 存储引擎是数据库系统中用于管理数据存储和检索的核心组件。它决定了数据如何在文件系统中存储、如何处理事务、索引机制以及锁定策略等关键功能。不同的存储引擎在性能、功能和适用场景上存在显著差异,这使得 MySQL 能够适应多种应用场景的需求[^3]。 每种存储引擎使用不同的技术来存储和处理数据,包括数据格式、索引方式、并发控制机制等。这些差异直接影响数据库的读写性能、事务支持、数据完整性和恢复能力等特性。 例如,InnoDB 是 MySQL 5.5 及以后版本的默认存储引擎,支持事务处理、行级锁和外键约束,适合高并发、高可靠性的应用场景,如金融系统和电商平台。而 MyISAM 在早期版本中是默认引擎,它不支持事务,但具有较高的查询和插入速度,适用于读取频繁的场景,如博客系统和静态内容存储[^3]。 此外,MEMORY 存储引擎将所有数据存储在内存中,提供极高的访问速度,但数据在数据库重启后会丢失,因此适用于缓存系统等临时数据存储场景。Archive 存储引擎则专为高效压缩存储大量归档数据设计,适用于日志系统等只读或极少更新的场景。 ### MySQL 存储引擎的作用 MySQL 存储引擎的主要作用包括: - **数据存储格式**:决定数据如何在磁盘或内存中存储,影响存储空间和 I/O 性能。 - **索引机制**:不同引擎支持不同的索引类型和实现方式,如 B+ 树索引、哈希索引等。 - **事务支持**:决定是否支持 ACID 事务,影响数据一致性和并发控制能力。 - **锁定机制**:影响并发访问时的性能,如行级锁、表级锁等。 - **数据恢复**:不同引擎在崩溃恢复能力上有所差异,影响系统的可靠性和可用性。 通过选择合适的存储引擎,可以优化数据库的整体性能和功能表现,以满足特定业务需求。 ### 示例:创建表时指定存储引擎 ```sql USE test_db; CREATE TABLE example_table ( id INT PRIMARY KEY, name VARCHAR(100) ) ENGINE=InnoDB; ``` 上述 SQL 语句创建了一张使用 InnoDB 存储引擎的表。如果希望使用 MyISAM,则只需将 `ENGINE=InnoDB` 替换为 `ENGINE=MyISAM`。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值