《MaxGauge 助力数据库智能运维管理 附(初学者)如何学好C语言.docx》由会员分享,可在线阅读,更多相关《MaxGauge 助力数据库智能运维管理 附(初学者)如何学好C语言.docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、如何应对金融市场的快速变化,建立符合市场需求的新一代信息系统 是证券一直在追求的目标。为了能够实现效率和敏捷,新一代信息系统应 用组件往往采取分布式部署的方式,使得应用程序的环境非常复杂。在这 种复杂的IT架构当中,核心的数据库管理成了重中之重。证券急需从手动为主的被动式数据库管理方式,转换为以专业可视化数据库 管理软件为基础的智能运维管理。证券在提高IT系统性能及数据库性能管理方 面一直先行先试,本篇重点介绍证券如何通过MaxGauge性能优化管理软件 实现在数据库智能运维与分析方面的一些经验。众多数据库性能管理软件中,我 们选择了 MaxGauge作为数据库性能管理解决方案。这是由于Max
2、Gauge 是已经在金融市场上经过验证的,轻量级、专业的秒级别性能管理解决方案。通 过MaxGauge我们实现了以下管理目标。1 .可视化管理。之前为了确认数据库的运行情况,需要手动连接数据 库运行SQL来获取各种信息。除了耗费时间以外,可视化程度不高,也无 法做到实时确认数据库状态。而通过MaxGauge的秒级别统一监控画面, 可以对所有实例的运行情况做到秒级别实时监控,减少了大量的日常检查 工作。2 .快速定位问题。在导入MaxGauge之前,由于管理的数据库很多, 只有当问题发生时才会连接数据库进行分析,由于手动获取各种数据库信 息,所以需要耗费大量时间来排除故障。而通过MaxGauge
3、可以设定核心 性能指标的临界值,当数据库产生影响之前,发现问题点,并且通过简单 双击,就能确定产生问题的各种信息,做到快速定位问题,解决问题。3 .障碍分析。之前数据库发生障碍,通过Failover等紧急处理方式, 恢复业务以后,由于没有问题时间点的数据库运行记录,很难分析具体的 问题原因。AWR等工具由于时效性差,无法提供问题当时的原因。 MaxGauge的历史记录分析功能,可以把每秒的数据库运行情况及性能统 计信息保存起来,可以快速回溯问题发生当时数据库正常处理的应用程序、 性能指标、等待事件、SQL等信息,协助DBA得出具体问题原因,以防 止相同问题再次发生。4 .容量管理。容量管理是数
4、据库管理中非常重要的工作,可以根据各 种资源的使用趋势,确认当前及未来的业务运营情况下,资源是否满足需 求的积极应对方案。之前这些工作也消耗大量工作时间。通过MaxGauge 自动收集保存所有性能数据,并且完成趋势报告书,这就大大减少了手动 统计工作。5 . MaxGauge与智能运维平台的无缝融合。证券使用智能运维平台 设置了数据库管理所需要的目标KPI及KPI分析方法,再通过 MaxGauge实现了对数据库数千种指标进行实时采集监控,关键的数据库 指标如 lock waiting, logic read, logfile syncs logfile parallel write, acti
5、ve session等将会直接通过数据总线到达智能运维平台。借助证券智能运维平台的单指标异常检测功能实现对这些核心指标的实时异常检测,从而解决了传统的只能通过定阈值来进行监控的弊端。同时,MaxGauge采集到的数据库指标与证券APM、NPM、基础监控、日志采集平台采集 到的业务数据、运行数据、网络数据、基础性能数据、日志共同实现了业 务的全链路监控。在故障发生的时候,首先通过单指标异常实时监控发现 问题,然后通过多指标异常的离群算法、聚类算法、排序算法给出最有可 能的故障模块或者KPI ,最后通过日志模版提取与检测算法对相关的日志 进行异常日志定位分析,最终帮助运维人员快速定位问题找到故障发
6、生原 因,进而快速恢复业务,提升RTO水平。数据库的性能容量分析也是日常重要的工作之一,证券目前正在探索 基于MaxGauge收集到的KPI进行智能趋势分析,对KPI指标进行的 安全区间判断,到达预测分析、智能告警,进一步提升数据库的容量精细 化管理。当前企业的竞争力中信息系统的重要性越创造显的情况下,信息系统 的性能问题不仅仅是系统管理人员的问题,而是影响一个企业兴衰的关键 问题。证券将会持续在IT性能智能管理的路上做到深耕细作。学习C语言不是一朝一夕的事情,但也不需要花费十年时间 才能精通。如何以最小的代价学习并精通C语言是本文的主题。 请注意,即使是“最小的代价”,也绝不是什么捷径,而是
7、以最短 的时间取得最多的收获,同时也意味着你需要经历艰苦的过程。一、要读就读好书,否那么不如不读所有初学者面临的第一个问题便是:如何选择教材。好的开 始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。 不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸 运的是,你还可以再次选择。大名鼎鼎的谭浩强教授出了一本C语言程序设计,据说 发行量有超过400万,据我所知,很多学校都会推荐这本书作为 C语言课本。虽然本人的名字(谭浩宇)跟教授仅仅一字之差, 但我是无比坚定地黑他这本书的。这本书不是写给计算机专业的 学生的,而是给那些需要考计算机等级考试的其它专业学生看的。 这本书的主要缺点是:例
8、子程序非常不专业,不能教给你程序设 计应该掌握的思考方式;程序风格相当地不好,会让你养成乱写 代码的恶习;错误太多,曾经有人指出过这本书的上百个错误, 其中不乏关键的概念性错误。好了,这本书我也不想说太多了, 有兴趣大家可以百度一下:)Kernighan 和 Ritchie 的The C Programming Language (中 译名C程序设计语言)堪称经典中的经典,不过旧版的很多 内容都已过时,和现在的标准C语言相去甚远,大家一定要看最 新的版本,否那么不如不看。另外,即使是最经典最权威的书,也 没有方法面面俱到,所以手边常备一本C语言参考手册是十 分必要的。C语言参考手册就是C Re
9、ference Manual,是 C语言标准的详细描述,包括绝大多数C标准库函数的细节,算 得上是最好的标准C语言的工具书。顺便提一句,最新的C程 序设计语言是根据C89标准修订的,而C语言参考手册描 述的是C99标准,二者可能会有些出入,建议按照C99标准学习。 还有一本C和指针,写得也是相当地不错,英文名是Pointers onC,特别地强调指针的重要性,算是本书的一个特点吧。不 过这本书并不十分适合初学者,如果你曾经学过C语言,有那么 一些C语言的基础但又不是很扎实,那么你可以尝试一下这本书。 我相信,只要你理解了指针,C语言便不再神秘。如果你已经啃完了一本C语言教材,想要更进一步,那么
10、有 两本书你一定要看。首先是C Traps and Pitfalls(中译名C 陷井与缺陷),很薄的一本小册子,内容非常非常地有趣。要 注意一点,这本书是二十多年前写成的,里面提到的很多C语言 的缺陷都已被改进,不过能够了解一些历史也不是什么坏事。然 后你可以挑战一下Expert C Programming(中译名C专家编 程),书如其名,这本书颇具难度,一旦你仔细读完并能透彻 理解,你便可以放心大胆地在简历上写“精通C语言”了。切记一个原那么,不要读自己目前还看不懂的书,那是浪费生 命。如果你看不懂,那你一定是缺失了某些必需基础知识。止匕时, 你要仔细分析自己需要补充哪些内容,然后再去书店寻
11、找讲述的 这些内容的书籍。把基础知识补充完毕再回头来学习,才会真正 的事半功倍。二、Unix/Linux还是Windows,这是个很大的问题不同的编程环境会造就出不同思维的程序员。Windows的程 序员大多依赖集成开发环境,比方Visual Studio,而Unix程序员 更加钟爱Makefile与控制台。显而易见,集成开发环境更容易上 手,在Windows上学习C语言,只需要会按几个基本的Visutal C+ 工具栏按钮就可以开始写Hello, World! 了,而在Unix下,你需要 一些控制台操作的基本知识。有人也许认为Unix的环境更简洁, 但习惯的力量是很大的,大家都很熟悉Wind
12、ows的基本操作,而 为了学习C语言去专门装一个Unix系统,似乎有点不划算。对于一个只懂得Windows基本操作、连DOS是什么都不知 道的新手而言,尽快做一些有趣而有意义的事情才是最重要的。 用C语言写一个小程序远比学习Is、cat等命令有趣,况且我们要 专注于C语言本身,就不得不暂时忽略一些东西,比方编译链接 的过程、Makefile的写法等等等等。所以我建议初学者应该以Visual C+ 6.0 (不是 VisualC+ .NET)或者Dev C+作为主要的学习环境,而且千万 不要在IDE的使用技巧上过多纠缠,因为今后你一定要转向Unix 环境的。Visual C+6.0使用很方便,调
13、试也很直观,但其默认的 编译器对C标准的支持并不好,而Dev C+使用gcc编译器,对 C99的标准都支持良好。使用顺带提一下,很多大学的C语言课 程还在使用Turbo C 2.0作为实验环境,这是相当不可取的,原因 其一是TC 2.0对C标准几乎没有支持,其二是TC 2.0编译得到 的程序是16位的,这对今后理解32位的程序会造成极大的困扰 (当然,用djgpp之类的东西可以使TC 2.0编译出32位程序,不 过那过于复杂了)。等你学完一本C语言的教材,你一定要转向Unix平台继续 学习,几乎所有的C语言高级教程都是基于Unix平台的(比方 C专家编程)。转变的过程是痛苦的,你需要面对的是各
14、种 纷繁复杂的命令,完全不同于Windows平台的思考方式,但是这 种痛苦是值得的。Unix与C是共生的,Unix的思考方式和习惯 更加符合C语言的思考方式和习惯。在Unix下,你可以找到无 数优秀的源代码供你尽情阅读,你可以方便地查看某个库函数的 联机手册,还可以看到最优秀的代码风格(说到代码风格,我会 专门写一篇文章详细表达)。归结起来就是一句话:初学C语言,建议使用Windows系统 和集成开发环境,在准备向“高手”方向努力时,请先转向Unix平 台。三、万事俱备,你就是东风书已选定,环境配置完成,正所谓万事俱备,只欠你自己的 努力了。请从书的前言开始,仔细地阅读手头的教材,很多人看 书
15、喜欢直接从第一章开始看,这是错误的做法。前言是作者对整 本书的大体介绍,作者一般会告诉你需要什么基础才能够顺利阅 读本书,这可以帮助你检验自己的基础知识是否已经具备。看完 前言,还要浏览一下目录,了解一下书的整体结构,顺便给自己 安排一下学习计划。学习C语言,必需注意每一个细节,书上的例子代码一定要 自己亲自敲一遍,编译执行输出都跟书上说的一致才能算是学完 了一个例子,如果不一致,就要仔细找原因。出了书本上有的例 子,自己还要“创造”一些例子,比方学习运算符优先级的时候, 可以写几个相同的表达式,在不同的位置加上括号,看看有哪些 不同的行为,比方*p+和(*p)+,又比方a二b二二c、(a二b
16、)二二c 和a = (b = c)等等。自己抄的书上的例子以及改造之后的例子, 还有自己“创造”的例子,都应该仔细地归类保存,并且要在源代 码中写上简短的注释,阐述这个例子的意图。例子之后就是习题了,我建议初学者把所有的习题都独立做 一遍,然后对照答案的代码,看看自己的代码有那些缺乏,再试 着修改自己的代码。很多人不重视习题,这是极大的错误,因为 作者通常会在习题中说明一些重要的道理,而不是单纯地检验前 面的知识。也许你认为这样学习太慢,其实不然。学得细致就不用走回 头路,等你学到后面才发现自己前面没搞清楚,那才是真的得不 偿失。一般说来,整本书读完,你应该完成数千行乃至上万行的 代码,无论是
17、原封不动照抄书上的,还是自己心血来潮写就的, 都是今后继续学习的一笔财富。以我自己举例,阅读Windows 核心编程时(我只阅读了 3/4的内容),除了抄书上的代码, 还自己写了很多例子,一共有5574行(用unix下的wc工具统计), 时隔多日,我早已记不清Windows的系统编程了,但只要花几分 钟翻出以前的代码看看,便会重新了然于胸。所谓好记性不如烂 笔头,就是这个道理。仔细读书、认真抄写源代码、独立完成习题外加更进一步的实验,最后将所有的代码留下,成为自己的经验和财富,绝对的 辛苦,也绝对的事半功倍。当然,这种方式只适合学习需要精通 的技术,如果不是学习C语言,你还要具体情况具体分析。写到最后,还有非常非常重要的一点没有提及一代码风格, 从最开始学习就必须强迫自己模仿最优秀的代码风格。