MySQL事务如何遵循ACID原则,实现不同隔离级别的事务机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计12416个文字,预计阅读时间需要50分钟。
引言+众所周知,MySQL数据库的核心功能是存储数据,通常在整个业务系统中是最重要的一层,可以说是整个系统的基本盘。正因为如此,MySQL的稳定性和可靠性至关重要,对整个系统的影响深远。
引言
众所周知,MySQL数据库的核心功能就是存储数据,通常是整个业务系统中最重要的一层,可谓是整个系统的“大本营”,因此只要MySQL存在些许隐患问题,对于整个系统而言都是致命的。那此刻不妨思考一个问题:
MySQL在接受外部数据写入时,有没有可能会发生问题呢?
有人也许会笑着回答:“那怎么可能啊,MySQL在写入数据时怎么会存在问题呢”。
的确,MySQL本身在写入数据时并不会有问题,就算部署MySQL的机器断电/宕机,其内部也有一套健全的机制确保数据不丢失。但往往风险并不来自于表象,虽然MySQL写入数据没问题,但结合业务来看就会有一个很大的隐患,此话怎讲呐?先看案例:
-- 从库存表中扣减商品数量UPDATE `zz_inventory` SET ......;
-- 向订单表、订单详情表中插入订单记录
INSERT INTO `zz_order` VALUES(....);
INSERT INTO `zz_order_info` VALUES(....);
-- 向物流表中插入相应的物流信息
INSERT INTO `zz_logistics` VALUES(....);
上述的伪SQL中,描述的是一个经典下单业务,先扣库存数量、再增加订单记录、再插入物流信息,按照正常的逻辑来看,上面的SQL也没有问题。
本文共计12416个文字,预计阅读时间需要50分钟。
引言+众所周知,MySQL数据库的核心功能是存储数据,通常在整个业务系统中是最重要的一层,可以说是整个系统的基本盘。正因为如此,MySQL的稳定性和可靠性至关重要,对整个系统的影响深远。
引言
众所周知,MySQL数据库的核心功能就是存储数据,通常是整个业务系统中最重要的一层,可谓是整个系统的“大本营”,因此只要MySQL存在些许隐患问题,对于整个系统而言都是致命的。那此刻不妨思考一个问题:
MySQL在接受外部数据写入时,有没有可能会发生问题呢?
有人也许会笑着回答:“那怎么可能啊,MySQL在写入数据时怎么会存在问题呢”。
的确,MySQL本身在写入数据时并不会有问题,就算部署MySQL的机器断电/宕机,其内部也有一套健全的机制确保数据不丢失。但往往风险并不来自于表象,虽然MySQL写入数据没问题,但结合业务来看就会有一个很大的隐患,此话怎讲呐?先看案例:
-- 从库存表中扣减商品数量UPDATE `zz_inventory` SET ......;
-- 向订单表、订单详情表中插入订单记录
INSERT INTO `zz_order` VALUES(....);
INSERT INTO `zz_order_info` VALUES(....);
-- 向物流表中插入相应的物流信息
INSERT INTO `zz_logistics` VALUES(....);
上述的伪SQL中,描述的是一个经典下单业务,先扣库存数量、再增加订单记录、再插入物流信息,按照正常的逻辑来看,上面的SQL也没有问题。

