文章目录
一、事务
1.事务引出
事务广泛用于订单系统、银行系统等多种场景。
例如:
A用户和B用户是银行的储户,现在A要给B转账500元,那么需要做以下几件事:
检查A的账户余额>500元;
A账户中扣除500元;
B账户中增加500元。
正常的流程走下来,A账户扣了500,B账户加了500;
那如果A账户扣了钱之后,系统出故障了,A会白白损失了500,而B也没有收到本该属于他的500。
以上的案例中,隐藏着一个前提条件:A扣钱和B加钱,要么同时成功,要么同时失败。事务的需求就在于此。
2.事务定义
事务是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。
例如,银行转帐工作:从一个帐号扣款并使另一个帐号增款,这两个操作要么都执行,要么都不执行。所以,应该把他们看成一个事务。
事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。
那么至少需要三个步骤:
(1)检查账户1的余额高于或者等于100美元;
(2)从账户1余额中减去100美元;
(3)在帐户2余额中增加100美元。
begin;
update bank1 set money = money - 100 where id = 1;
此时没有commit,查询时数据不会发生变化,即体现了事物的隔离性。
本文详细介绍了MySQL的事务、索引、账户管理和存储引擎。事务涉及四大特性(ACID),确保数据库操作的一致性和完整性。索引用于优化查询效率,包括单值和复合索引,以及何时适合创建索引。账户管理中,讲解了如何创建和管理用户权限。最后,讨论了MySQL的存储引擎,包括其体系结构和常见存储引擎的特点。
订阅专栏 解锁全文
4564

被折叠的 条评论
为什么被折叠?



