V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
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 · 2015-04-07 23:21:25 +08:00 · 3658 次点击
    这是一个创建于 3518 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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