调需式优化的简单实践

    作为DBA总是会有现场的救火工作,而如果尽可能早一些介入需求,设计,开发阶段,可能就会杜绝很多潜在的性能问题。很多问题都是如此,都是逐步积累,最终在某一个阶段会集中爆发出来。今天看老盖的感慨,前十年跟全表扫描斗争,后十年跟隐式转换斗争,几代DBA大约都会面临这样的事情,想想真是蛮有意思。
    而且前些天和领导在聊天的时候,我说现在优化没啥动力,一方面业务的使用量是有富余的,一个SQL从10秒优化到5秒,好像也没什么特别的成就感,说句俏皮的话,可能是你比较喜欢折腾。另一方面绝大多数的业务使用数据库的都是很基础的功能,就是把数据库当做一个黑盒的存储,先不说这种观点对与不对,越是如此,越会引入更多的问题。到了后期,就好像问题到了晚期,大量的表连接,复杂的连接关系和臃肿的表数据甚至过度设计,分析起来都是可以改进的地方,但是落地的时候很可能是DBA得向业务和开发妥协,或者相反,哪种情况都会无形引入很多的时间和资源成本。最近这种感触尤其深刻。
    开发的同学前几天问我一个问题,是关于JOB的权限设置,其实JOB本身没有其它的权限,需要考虑引用的对象的权限,设置的触发时间,频率等,鉴于线上环境的复杂性,可能开发同学介入分配会有一些难度,在讨论之后我只好做了妥协,就是我来处理这些权限的问题。开发在最后提交的时候,也和我简单做了确认,这个时候我大体明白了他们的需求。而开发的同事也顺便问了下我,说有一个操作想让我也评估一下性能,大体的思路就是开发通过在线业务会得到一些回流的客户数据,这些是增量数据。平均每天就是几千条数据,目前他们的设想就是在每天的零点开始批量处理,把表里的一个字段统一修改,语句类似下面的形式:
update test_customer set enabled=‘Y’;
commit;
    如果按照数据量来看似乎也没什么,目前来看性能上是完全可以接受的,但是经过确认,这个表不是中继表,临时表。里面的数据是逐步积累的,也就意味着表里的数据量会越来越大,那么就会在某一个阶段成为瓶颈,如果表里的数据成百万,上千万,这样的操作是很有问题的。和这位同学的交流,他们也感觉这种方式可能有问题,其实他的本意是想找我确认下,数据量多大的情况下可能会导致问题,是几千条,几万条还是几百万条这样的。当然我马上矫正了他的观点,这个没有一个完全的基准,可能有的同学说,加上一个时间字段过滤,取得增量数据,每天增量几千条数据的DML还是完全可以接受的,但是和开发的交流发现,因为业务在初期设计的时候就没有考虑到这样的限制,所以现在添加起来会有一些难度,而且代码已经到了最后的审核和提交阶段。所以目前来看这个问题就有两种走向,开发同学无法改动,坚持上线,后期发现问题,继续救火。还有一种就是按照增量的方式来改进,只修改增量的数据,这样始终是保持在一个较小的数据范围,可选用的方式就多了,比如添加时间字段的索引,比如设计分区表,按照分区来更新等。开发的同学有一些犹豫,但是还得进一步确认一下。
    大概在下午的时候,他们给我反馈,经过讨论,决定取消那个JOB,其实可以完全通过其他的方式来达到这种效果,他们重新设计了逻辑,把定时的批量变更改为了实时的变更,做了这些改进之后和调整之后,还是可以按照原计划上线了,看到这种结果,着实让人欣慰。一方面我们没有因为这件事情扯皮,这种事情在任何情况下都可以有多种妥协的情况,于情于理怎么解释都似乎说得通,另外他们是认真去考虑这件事情的,了解了隐患而及时处理,没有带着敷衍的态度,这点确实值得我们学习。
    所以调需重于一切,把潜在的问题及时扼杀在摇篮之中,会极大的减少错误放大效应的影响。

时间: 2024-09-20 08:12:19

调需式优化的简单实践的相关文章

数据库的优化与调优:从理论到实践

数据库的优化与调优:从理论到实践 网易杭研  何登成 –理论篇   从串行到并行   从畅通无阻到排队   必须了解的硬件知识 –实践篇   MySQL各版本的优化   MySQL使用中的调优 数据库的优化与调优:从理论到实践

mysql 单机数据库优化的一些实践_Mysql

数据库优化有很多可以讲,按照支撑的数据量来分可以分为两个阶段:单机数据库和分库分表,前者一般可以支撑500W或者10G以内的数据,超过这个值则需要考虑分库分表.另外,一般大企业面试往往会从单机数据库问起,一步一步问到分库分表,中间会穿插很多数据库优化的问题.本文试图描述单机数据库优化的一些实践,数据库基于mysql,如有不合理的地方,欢迎指正. 1.表结构优化 在开始做一个应用的时候,数据库的表结构设计往往会影响应用后期的性能,特别是用户量上来了以后的性能.因此,表结构优化是一个很重要的步骤.

HTTP2总结及简单实践总结

本文讲的是HTTP2总结及简单实践总结,在总结http2之前先来回顾下http的发展历史.以下三张图片来自 Jerry Qu HTTP/0.9 (1991) HTTP/1.0 (1996) HTTP/1.1 (1999) HTTP通信过程 众所周知,http是基于tcp之上的应用层协议,即在tcp连接建立之后,在tcp的链路上传送数据. 首先进行TCP连接,三次握手, C --(SYN{k})--> S , S --(ACK{k+1}&SYN{j})--> C , C --ACK{j+

【转载】Docker 镜像优化与最佳实践

阿里云高级研发工程师御坂在云栖TechDay41期的线下沙龙活动中分享了Docker镜像优化与最佳实践.本文为沙龙内容回顾. 从Docker镜像存储的原理开始,针对镜像的存储.网络传输,介绍如何在构建中对这些关键点进行优化.并介绍Docker最新的多阶段构建的功能,以解决构建依赖的中间产物问题. 镜像概念 镜像是什么? 从一个比较具体的角度去看,镜像就是一个多层存储的文件,相较于普通的ISO系统镜像来说,分层存储会带来两个优点: 一个是分层存储的镜像比较容易扩展,比如我们可以基于一个Ubuntu

谈网站优化,让SEO优化变简单(一)

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 从事网站优化快一年多了,期间也接手了很多seo的单子,可惜没能有时间停下来总结一番自己的seo优化心得,不过在这个过程中,自己还是收获颇多的,不仅在每次优化网站时积累了一定的经验,也在优化网站中不断的试错,不断的纠错,不断的切换思路去优化,每次通过自己的实践将排名优化上去,自己还是挺开心的. 目前,很多seoer都在谈网站优化越来越难,每天的

Docker 镜像优化与最佳实践

云栖TechDay41期,阿里云高级研发工程师御坂带来Docker镜像优化与最佳实践.从Docker镜像存储的原理开始,针对镜像的存储.网络传输,介绍如何在构建中对这些关键点进行优化.并介绍Docker最新的多阶段构建的功能,以解决构建依赖的中间产物问题.   以下是精彩内容整理: 镜像概念 镜像是什么?从一个比较具体的角度去看,镜像就是一个多层存储的文件,相较于普通的ISO系统镜像来说,分层存储会带来两个优点,一个是分层存储的镜像比较容易扩展,比如我们可以基于一个Ubuntu镜像去构建我们的N

收藏的SQL知识以及SQL语句简单实践通俗易懂_数据库其它

小引 首先说明,这个笔者2年前学习SQL的遗漏下来的笔记,由于参加完腾讯的笔试,内容比较偏向数据机构和编译以及数据库,刚好要换台本本,心里不想把它弄死在硬盘里,觉得蛮好的,所以把它都分享了,主要第一部分简单介绍SQL语言,第二部分简单实践,纯属于简单类似的记录,通俗易懂,希望对学习数据库原理的同学有一定的帮助! 主要内容: 综述 简单实践 综述 大家都知道SQL是结构化查询语言,是关系数据库的标准语言,是一个综合的,功能极强的同时又简洁易学的,它集级数据查询(Data Quest),数据操纵(D

WordPress做搜索引擎而优化十分简单

摘要: 如果说内容为王,那seo便是这王后.1WD介绍很多很多seo方便的文章,帮助大家优化博客,以期达到增加流量和销量.今天我们拿WordPress说事,因为它是全球使用最多,也是最受欢迎的独 如果说内容为王,那seo便是这王后.1WD介绍很多很多seo方便的文章,帮助大家优化博客,以期达到增加流量和销量.今天我们拿WordPress说事,因为它是全球使用最多,也是最受欢迎的独立博客程序.人们都说WordPress是经过了SEO优化的,所以大家才用上它,然而WordPress的SEO优化也是不

帮助企业做好MaxCompute大数据平台成本优化的最佳实践

阿里云大数据计算服务MaxCompute通过灵活性.简单性和创新为您企业的业务环境带来了变革,但是您企业是否通过其实现了原本预期的节省成本的目标呢?本文中,我们将为广大读者诸君介绍优化您企业MaxCompute开销的一些关键性的策略. 自从MaxCompute于2010年进入市场以来,计算服务MaxCompute就已然永远地改变了整个IT世界了.尽管其价格优势已经领先业界了,但仍然有许多企业客户了解到,迁移到公共云服务并不总是能够帮助他们实现预期的成本节约的目标. 这并不意味着迁移到公共云服务是