zoukankan      html  css  js  c++  java
  • 有关UPDATE操作的一些想法

    我们平常写代码的时候,无疑都会接触大量的数据CURD操作。第一反应是这太简单了,那么你在编写UPDATE操作的时候是怎样的逻辑呢?比较下面两段伪代码:

    code exp.1

    $SQL = "UPDATE `table_name` SET `a`='A', `b`='B', `c`='C' WHERE `id`=$id ";
    $res = $db->query ($SQL);
    if ($res) {
        return TRUE;
    } else {
        return FALSE;
    }
    

    code exp.2

    $SQL = "SELECT `a`,`b`,`c` FROM `table_name` WHERE `id`=$id ";
    $old = $db->query ($SQL)->fetch ();
    if ( $old['a'] == $a && $old['b'] == $b && $old['c'] == $c ) {
        return TRUE;
    }
    $SQL = "UPDATE `table_name` SET `a`='$a', `b`='$b', `c`='$c' WHERE `id`=$id ";
    $res = $db->execute ($SQL);
    if ($res) {
        return TRUE;
    } else {
        return FALSE;
    }
    

    ============
    如果单纯从查询次数来看,exp.1始终是一次,而exp.2是 1~2次。看起来exp.1 更好一些,我也觉得在一些简单应用场景确实是这样的。可是如果在一个大型应用,每次用户的UPDATE都执行一次写入操作真的好吗?
    这种情况下可以适当牺牲一些读操作以减少写入操作,首先在数据缓存上可以拦截大部分数据库读取请求,其次在数据库层面可以配置主从集群负载均衡等策略保证读取性能。所以我认为大型应用还是exp.2更合适。
    以上个人感想,欢迎批评指正

  • 相关阅读:
    学习进度——第五周
    构建之法阅读笔记02
    学习进度——第四周
    整型数组——首尾相连
    构建之法阅读笔记01
    二维数组
    学习进度——第三周
    新最大子数组——数量级和数量无限大
    最大子数组求和
    P3388 【模板】割点(割顶)题解 tarjan求割点
  • 原文地址:https://www.cnblogs.com/dapianzi/p/7065559.html
Copyright © 2011-2022 走看看