当前位置: 首页 > news >正文

汝阳网站开发/saascrm国内免费pdf

汝阳网站开发,saascrm国内免费pdf,python可以做网站,体育类网站开发几天中午系统中断了几分钟,原因是数据库down了。当时发现系统中有大量的锁,几乎都是来自生产用户的,被锁的对象和语句都是平时每天都要千百次使用的。为什么会出现这么大面积的锁,原因到现在都还没弄明白。只是事后回忆起大量的锁…

      几天中午系统中断了几分钟,原因是数据库down了。当时发现系统中有大量的锁,几乎都是来自生产用户的,被锁的对象和语句都是平时每天都要千百次使用的。为什么会出现这么大面积的锁,原因到现在都还没弄明白。只是事后回忆起大量的锁中有条update的语句,是有个同事在批量更新数据,而是是关联了其他表的更新(数据量有160多万),而被更新的表正是被锁住的表,疑似这个更新导致了今天中午的down库。整个down库的过程是:数据库有锁-》2号机达到最大连接数-》停止2号机侦听无效-》重启2号机-》1号机失去响应达3分钟左右。

      这里不是要分析宕库的原因,而是要分析一下update语句。在网上找了个好帖:ORACLE UPDATE 语句语法与性能分析

      一般的update就不说了,真正难的是关联其他表得到被更新字段的值。也就是上文中的第3个,现摘录如下:

      两表(多表)关联update -- 被修改值由另一个表运算而来:

   update customers a   -- 使用别名
   set    city_name=(select b.city_name from tmp_cust_city b where b.customer_id=a.customer_id)
   where  exists (select 1
                  from   tmp_cust_city b
                  where  b.customer_id=a.customer_id
                 )
   -- update 超过2个值
   update customers a   -- 使用别名
   set    (city_name,customer_type)=(select b.city_name,b.customer_type
                                     from   tmp_cust_city b
                                     where  b.customer_id=a.customer_id)
   where  exists (select 1
                  from   tmp_cust_city b
                  where  b.customer_id=a.customer_id
                 ) 

       注意在这个语句中,
                                   =(select b.city_name,b.customer_type
                                     from   tmp_cust_city b
                                     where  b.customer_id=a.customer_id
                                    )
      与
                 (select 1
                  from   tmp_cust_city b
                  where  b.customer_id=a.customer_id
                 )
      是两个独立的子查询,查看执行计划可知,对b表/索引扫描了2篇;如果舍弃where条件,则默认对A表进行全表更新,但由于(select b.city_name from tmp_cust_city b where where  b.customer_id=a.customer_id)有可能不能提供"足够多"值,因为tmp_cust_city只是一部分客户的信息,所以报错(如果指定的列--city_name可以为NULL则另当别论):

      01407, 00000, "cannot update (%s) to NULL"
      // *Cause:
      // *Action:

      一个替代的方法可以采用:
      update customers a   -- 使用别名
      set    city_name=nvl((select b.city_name from tmp_cust_city b where b.customer_id=a.customer_id),a.city_name)
      或者
      set    city_name=nvl((select b.city_name from tmp_cust_city b where b.customer_id=a.customer_id),'未知')
      -- 当然这不符合业务逻辑了

http://www.lbrq.cn/news/941581.html

相关文章:

  • 网络运维工程师需要掌握的技能/深圳网站优化推广
  • wordpress登录开发文档/关键词优化的价格查询
  • 重庆自助建站软件/单页网站模板
  • 普陀区网站建设公司哪家好/舆情分析报告模板
  • 套b网站/域名注册服务网站哪个好
  • asp.net 网站计数器/网络营销的概念和特点
  • 做网站要素/搜索引擎广告图片
  • 京网站建设公司/全网营销培训
  • 网站建设税费/网站怎样优化seo
  • 国外优秀的html5网站/soso搜搜
  • 网站建筑设计/免费建立个人网站凡科
  • 用dw可以做动态网站吗/找推网
  • 苏州企业网站制作电话/seo网站关键词优化费用
  • 北京做网站建设多少钱/seo优化推广
  • 建站快车凡科/东莞网站seo公司哪家大
  • 上海专业做网站的公司/友情链接推广
  • 东营网站seo/宣传软文案例
  • 网站建设 电子商务网站开发/怎么免费做网站
  • wordpress多网站建设/好的产品怎么推广语言
  • 网站建设好如何开通/搜索引擎推广和优化方案
  • 做网站备完备案需要干什么/网络营销的六大特征
  • 中国商标交易官网/郑州seo优化
  • 济南天桥区做网站的/最好的营销策划公司
  • 深圳网站建设培训/微信客户管理
  • 北京国税局网站官网入口/seo就业指导
  • arttemplate做电商网站/b2b网站有哪些
  • 展览网站制作/百度指数查询工具app
  • 免费发布信息平台网/网站seo快速优化
  • 制作网站需要怎么做/微博推广技巧
  • wordpress如何做导航网站/济南市最新消息
  • JVM-GC 相关知识
  • Nacos-服务注册,服务发现(二)
  • 使用Spring Boot创建Web项目
  • java网络请求工具类HttpUtils
  • python 检测蜂窝网络,实现掉网自动拨号
  • xLua和C#交互