MYSQL-事务

事务

事务:把所有操作视为一个整体,要么同时成功,要么同时失败

不设置@@autocommit时@@autocommit = 0,系统会认为默认自动提交,但中间遇到错误时,导致数据不一致
方式一:
set @@autocommit = 0为手动提交,在最后用"commit"来手动提交事务,想要回滚事务,用 "rollback"
方式二:
start transaction 显式开启事务

事务的四大特性

原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
隔离性(lsolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行
持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的,会持久化存到磁盘中。

脏读:一个事务读到另外一个事务还没有提交的数据.
不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读,
幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了

事物的隔离级别

隔离级别 脏读 不可重复读 幻读
Read uncommitted
Read committed ×
Repeatable Read (默认) × ×
Serializable × × ×
查看事务隔离级别:@@transaction_isolation

设置:set session transaction isolation level read [uncommitted|Read committed|Repeatable Read|Repeatable Read];

存储引擎

存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式

存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。(一个数据库下不同表,是可以使用不同的存储引擎的)

  1. 特点
    (1)DML操作遵循ACID模型,支持事务;
    (2)行级锁,提高并发访问性能;
    (3)支持外键FOREIGN KEY约束,保证数据的完整性和正确性;

  2. 存储文件:

    xxx.ibd: xxx代表的是表名,innoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm、sdi) 、数据索引

特点 InnoDB MyISAM Memory
存储限制 64TB
事务安全 支持 - -
锁机制 行锁 表锁 表锁
B+tree索引 支持 支持 支持
Hash索引 - - 支持
全文索引 支持(5.6版本之后) 支持 -
空间使用 N/A
内存使用 中等
批量插入速度
支持外键 支持 - -

主要看innodb和myisam的区别:innodb有事务、行锁、外键,MYISAM只有表锁

存储引擎选择

InnoDB 最大的特性是支持事务,安全性高

  • InnoDB :
    • 是Mysql的默认存储引擎,支持事务、外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,那么InnoDB存储引擎是比较合适的选择。
  • MyISAM:
    • 如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常合适的。
  • MEMORY:
    • 将所有数据保存在内存中,访问速度快,通常用于临时表及缓存。MEMORY的缺陷就是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性。
层级/引擎 内容
体系结构 连接层、服务层、引擎层、存储层
存储引擎简介 SHOW ENGINES;\nCREATE TABLE XXXX(....) ENGINE=INNODB ;
存储引擎特点 INNODB:事务、外键、行级锁
存储引擎应用 INNODB:存储业务系统中对于事务、数据完整性要求较高的核心数据,MYISAM:存储业务系统的非核心事务。

posted @   hongfeiliu  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示