Oracle优化新常态

第一章 前言
1.1 作者简介
本人小凡仙,真姓为曾凡坤,一个很普通的人。
于2004年去了东莞工作,在一家台湾工厂干程序员活。主要是用C++BUILDER工具和微软SQL SERVER数据库,开发工厂的信息系统。其实就是简化各个车间文员的工作,以及比较好的让各部门领导查看数据而已。虽然叫ERP系统,实际就是个MIS信息管理系统!2005年来到了深圳,开始在一家软件公司为证券信息公司开发个信息发布系统,使用C++BUILDER 开发ORACLE数据库。后来再去了工厂里开发ERP系统,实际上是维护ERP系统,用的是DELPHI开发ORACLE。在这里主要是学到了PL/SQL,已经对ORACLE和LINUX系统有个基本了解,本来想学ERP整体思想,可时运不佳。ERP随着经济而萎缩,招聘职位越来越少。2007年转向了ORACLE管理,获得一份DBA工作,其实就是个运维DBA。2008年的金融危机使我失去了该DBA职位。然后3年内从事的数据库开发的工作,主要是ORACLE开发,开发什么经营分析系统和移动139邮箱的报表系统。因此对SQL写法,SQL执行,SQL优化是有深刻的体会的。
2013年再度回到了DBA岗位,虽然从事运维DBA,负责多个系统的集群和灾备数据库。
干了多年,或多或少遇到过性能问题,也尽力去优化了。感觉数据库最后端优化的空间是不大的!后来去了家物流公司,据说这家公司在淘宝物流的单量排在第10位,不过压力也挺大的,经常CPU飙高,负载指数达到500!

1.2数据库发展史

计算机的起源相信大部分大学计算机课本都有介绍,不管是科班和非科班以及职业中学都有介绍。
众所周知的第一台计算机是美国军方定制,专门为了计算弹道和射击特性表面而研制的,承担开发任务的“莫尔小组”由四位科学家和工程师埃克特、莫克利、戈尔斯坦、博克斯组成。1946年这台计算机主要元器件采用的是电子管。该机使用了1500
ENIAC
个继电器,18800个电子管,占地170m2,重量重达30多吨,耗电150KW,造价48万美元。开机时让周围居民暂时停电。这台计算机每秒能完成5000次加法运算,400次乘法运算,比当时最快的计算工具快300倍,是继电器计算机的1000倍、手工计算的20万倍。用今天的标准看,它是那样的“笨拙”和“低级”,其功能远不如一只掌上可编程计算器,但它使科学家们从复杂的计算中解脱出来,它的诞生标志着人类进入了一个崭新的信息革命时代。
然而,英国在二战期间研制的用于破解密电的电子计算机巨人(Colossus)却要比ENIAC早两年(1943年12 ),巨人计算机是第一部全然电子化的电脑器件,使用了数量庞大的真空管,以纸带作为输入器件,能够执行各种布林逻辑的运算,但仍未具备图灵完全的标准。巨人计算机建造到第9部“马克二号”4,但是其实体器件、设计图样和操作方法,直到1970年代都还是一个谜。后来温斯顿•丘吉尔亲自下达一项销毁命令,将巨人计算机全都拆解成巴掌大小的废铁,巨人计算机才因此在许多计算机历史里都未留下一纸纪录。英国布莱切利园目前展有巨人计算机的重建机种。

有专家说算盘也是计算机,如果从算数来说,这点不可否认! 当算盘依旧是算盘,不是计算机。计算机是用机器来计算, 算什么呢?自然是算古代应用数学。我国对数学的应用算盘就够了,没有继续发展下去。而在欧洲应用数学就有不断的提出高难度要求,促进了对计算数字的工具发展。计算机是从加密机和破密机发展而来的!
英国拍了部二战题材的电影叫《模拟游戏》

讲的是图灵用机器去破译密码的故事。 图灵何许人?
艾伦•麦席森•图灵(Alan Mathison Turing,1912年6月23日-1954年6月7日),英国数学家、逻辑学家,被称为计算机科学之父,人工智能之父。[1]
1931年图灵进入剑桥大学国王学院,毕业后到美国普林斯顿大学攻读博士学位,二战爆发后回到剑桥,后曾协助军方破解德国的著名密码系统Enigma,帮助盟军取得了二战的胜利。
另外个人是冯•诺依曼[1] (John von Neumann,1903~1957),20世纪最重要的数学家之一,在现代计算机、博弈论、核武器和生化武器等诸多领域内有杰出建树的最伟大的科学全才之一,被后人称为“计算机之父”和“博弈论之父(涯杰)”。第二次世界大战期间为第一颗原子弹的研制作出了贡献。为研制电子数字计算机提供了基础性的方案。

这两个人奠定了现代计算机的基础,尤其是可存储的程序!

开始的第一代的计算机采用的是纸带串孔来表示01,表示程序和数据。要求计算机提供计算的结果。这样为第一代原子弹的诞生提高了速度。后来的发展就是把纸带编程了磁盘,里面不在存的是01,而是ASM编码,俗称汇编语言。因为大家认为每次人工在纸带上打孔,自定和修改都很不方便,而且学习0101也很费力和费时。自然也很少人用得起!后期计算机发展迅猛,计算速度越快,而人类编制计算任务相对来说很耗时间,计算机的计算能力被闲置了很多。这样一来一边硬件的发展,一边是编程的发展。硬件从大型机,到小型机,再到台式机,以及目前的手机!而且编程发展从汇编语言到C语言 后面就是DELPHI, JAVA,PYTHON语言。
而数据库是怎么来的呀?除了语言的发明外,还发明了操作系统这个东西,它是中介而已。
说白了就是社会分工,由操作系统负责硬件的交道和协调工作。既然有可以存储的程序,自然会有可以存储的数据。程序是二进制编码 10101这样的内容,后缀名字一般都是.EXE,linux一般都是bin 。而数据以文本文编码而保存,一般是TXT命名,自然还有其他结构的。
计算机除了科学计算外,还有一个用途是数据处理。程序操作数据文件,程序代码很少,而数据文件确很多,或者很大。程序操作这样的数据文件,就是我们的数据库初型!
这就是数据库的雏形,程序和文件!你也可以编写这样的数据库。我用C++BUILDER 使用结构数据类型把股票信息,在套个一维数组使用流化类保存在文件当中。可以新增,保存,查找,删除等操作。
这样的雏形数据库就大部分开始应用在企业领域当中,也就是企业请人来编程,听说是用的COBOL。
COBOL(CommonBusinessOrientedLanguage)是数据处理领域最为广泛的程序设计语言,是第一个广泛使用的高级编程语言。在企业管理中,数值计算并不复杂,但数据处理信息量却很大。为专门解决经企管理问题,美国的一些计算机用户于1959年组织设计了专用于商务处理的计算机语言COBOL,并于1961年美国数据系统语言协会公布。经不断修改、丰富完善和标准化,目前COBOL已发展为多种版本。

后来出现了商业软件,比如我们学校教过的基于DOS操作系统的FOXBASE,FOXPRO和基于WINDOWS系统的VISUAL FOXPRO 。这就是第一代数据库 是商业化的软件!大家是用的ACCESS也是这一类

第一代桌面数据库 在这本讲性能优化的书中,我重点看到的是它是个桌面型数据库,只供一个人操作,用户并发数是一! 当然商业化第一代数据库提供了统计功能和数据文件的管理功能。

第二代是服务型数据库 主要代表是微软公司的SQL SERVER 和甲骨文公司的ORACLE 以及IBM 公司的DB2。 这代数据库完成了SQL统一接口,虽然在各家数据库当中有特色的SQL,比如微软的T-SQL,甲骨文公司的PL-SQL。同时也定义了关系理论,并在这代数据库得到了实现! 这代主要是C/S架构,可以同时接500个客户同时操作! 使用不同的锁解决用户并发问题。基于地第二代数据库有大量的ERP系统,包括SAP和EBS!

第三代是WEB集群据库,因为WEB的发展刺激了数据库的发展,代表是MYSQL。在工厂里SAP系统使用小型机做为数据库平台,因为它稳定,可靠,性能卓越。没有必要搞集群,没那个动力,支持百儿千的用户量没问题。然后在WEB世界里,万,百万,千万的用户量是一件很常见的量,并且是老板很开心的事情,是技术大牛值得追求的事情。为此IT技术再次出现了分层,出来了个应用服务器,比如说TOMCAT等。从C/S架构两层变成了三层,既是浏览器+应用服务器+数据库服务器。除了分层还有就是集群,应用服务器TOMCAT也集群,数据库MYSQL也集群,自然ORACLE也集群了!

第四代是集团化数据库。 因为互联网+和移动互联网出现! 用户量从万的级别变成了亿的级别。淘宝平日PV量(页面浏览量)16亿到25亿之间,而且12306.cn也有10亿的量,而真实的UV量(用户量)也过亿。象如此大的用户,靠集群已经无法支撑了,需要各种不同特性的数据库组团打怪,形成集团化作战。列如使用 上千台MYSQL服务器承担查询任务,使用上百台ORACLE集群服务器来承担,库存,支付,结算的工作。 再用NOSQL数据库如今火爆的REDIS和MONGODB集群来完成非结构的查询.使用内存数据库完成缓存查询,列入memcache,用列式数据库完成消费账单的统计功能。

数据库的发展解决数据的共享和用户并发的控制!

1.3性能为什么会慢?
性能为什么会慢? 原因有1,2,3,4,5等。主要是慢是个趋势,无可逆转,如同人总要衰老的!
也就是说当你的系统哪怕是上线后不曾修改,随着时间和业务的发展必然达到硬件上限能力!而现实有很多原因导致系统未必达到那个境界就开始慢起来了,如同我们希望人没有病没有痛的老化而死去!

慢的第一个原因是 用户量多了!
这个原因是个开心的事,说明用的人多啊,只有增加硬件的投入

慢的第二个原因是 数据量变多了!
这个或许也是开心的原因,除了追加硬件投入外,还可以减少数据来提高性能

慢的第三个原因是 功能越来越多!
很显然这也是个开心的原因,除了硬件追加外,没别的法子

慢的第四个原因是 设计师设计得不好!
这是个很重要的原因,因为设计的不好或导致很多很多问题出来,而且设计不好的原因会被深度掩藏起来。 解决办法是重新设计新版本。

慢的第五个原因是 开发人员SQL写的不好!
这个是目前市场上性能优化的重点,可开发人员都是充忙地加班加点赶紧度呢!解决之道是制定个规范,而且这个规范易用,然后再SQL审计把关下。后期只好请DBA参加优化。

慢的第六个原因是 数据库和系统的参数配置不好!
这个也是目前市场优化的重点。招个有经验的DBA来配置。不要让开发人员去管理数据库!

慢的第七个原因是 硬件问题
可能硬件某个环节坏掉了。

1.4性能优化新常态
新常态 就是说优化的重点不是在SQL的化和参数的配置。虽然这两项比较能立杆见影,性能突进。好像是个倚天剑和屠龙刀!采用SQL和参数两项优化外,时间过了还是会出现性能问题,只不过是其它方面的性能问题。
常态是 我们该从设计领域着手,从数据库发展史和计算机发展史获得灵感,就是分工和分层!依据JAVA编程的思想 高内聚 低耦合!根据业务特性来配置硬件,设计系统,是系统各个子系统高内聚,低耦合。相互独立自主,又不互相影响!
本书主要谈的是ORACLE性能优化,主要是讲ORACLE在服务型数据库和WEB集群数据库领域的优化,比如工厂里的SAP,EBS和基于WEB的金融,云ERP,进销存等系统。在互联网+,移动互联网领域ORACLE基本上属于集团化中的子数据库系统,跟2,3代数据库差不多,不再是优化的重点,而且优化的方法依旧如此,没有特殊之处。

扫描二维码可以关注公众号
后面章节在发布在公众号中
Oracle优化新常态_第1张图片

你可能感兴趣的:(Oracle,开发)