› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
tanteng
V2EX  ›  MySQL

关于使用 mysql 事务的场景是什么

  •  
  •   tanteng ·
    tanteng · Apr 7, 2015 · 4327 views
    This topic created in 4213 days ago, the information mentioned may be changed or developed.

    突然想到一个问题,mysql中我们经常用到事务,比如一次向几张表插入内容,如果中间出错了可以回滚,但是实际开发中,像这种一次可能向多个数据表写入数据的情况,有时并没有采用事务来防止出错。

    比如一件商品表单,有商品基本信息,商品sku(颜色尺寸价格库存),商家信息,店铺信息,提交的时候是向不同的表插入或更新数据,并且都是等第一张表插入(或更新)完了,然后第二张表,第三张表。。。

    如果中间某个过程突然中断了,只向前一张表成功插入了数据,而后面的程序没有执行,不怕出现这种情况吗?

    再比如,文章表一般设计两张表,一张文章基本信息表,一张文章详情表,大内容放详情表,插入和读取数据也是分两步,也一般不用事务。

    我用到事务的一个地方是在一个广告联盟系统,根据接口数据计算广告费用并记录到广告报表,同时更新记录到用户收益表,年统计表等,用了事务,中间某个过程出错就回滚。

    为什么有的地方用事务,有的地方不用事务,使用事务的场景是什么?

    4 replies  •  2015-04-08 00:06:06 +08:00
    lianyue
        1
    lianyue  
       Apr 7, 2015
    设计金额 方便 或对数据准确性要求特稿 并且是多表才需要事务 需要的地方很少很少
    1 商品 插入优先 基本信息 然后 扩展信息 插入基本信息后才插入扩展信息 比如 颜色尺寸 插入失败大不了 没库存 重新编辑下就好了 失败率很低很低的

    2 文章也是 大不了文章没内容

    3 广告联盟 广告报表 可以直接用计划任务 定时统计下就好了 每次有浏览都更新2个表么
    比如每天凌晨后统计昨天的数据 看今天的数据直接 count 查询统计就好了 不需要事务
    lianyue
        2
    lianyue  
       Apr 7, 2015
    插入多表 不需要事务都是先插入重要信息 然后插入附加信息 比如允许丢失的信息什么的
    kchum
        3
    kchum  
       Apr 7, 2015   ❤️ 1
    OLTP(On_line Transaction Processing 联机事务处理) 和 OLAP(OLAP:On_line Analytical Processing 联机分析处理) 的区别。
    关于银行金融,特别是涉及金钱的,当然要用事务。
    按照范式来说,确定应该保持数据的一致性,原子性。
    但我们在项目中为了性能,或者其他因素(lan)还不是严格对待。
    以上是我的见解
    incompatible
        4
    incompatible  
       Apr 8, 2015
    多数据源出于性能考虑不使用分布式事务还情有可原(互联网行业基本也都是best effort 1pc)。
    如果单数据源还选择不用事务那就完全是业余选手打法。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3411 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 10:47 · PVG 18:47 · LAX 03:47 · JFK 06:47
    ♥ Do have faith in what you're doing.