飘灵儿 发表于 2015-1-16 22:36:41

MYSQL网站制作之Windows 2000下优化Oracle9i功能

如果你需要额外的功能的话,MySQL的普及性实际上可以让你发现总有一个厂商会提供准确的解决方案,而这个方案会满足你的需要和需求。oracle|window|功能|优化Windows2000下的Oracle功能优化必要思索磁盘I/O、CPU、收集子体系、内存几个子体系,这里侧重先容Oracle在Windows2000情况下的内存调剂。  优化磁盘设置
  Oracle是一个磁盘I/O激烈的使用,要确保你得当地设置磁盘和文件体系:
  在磁盘上创建数据文件前起首运转磁盘碎片收拾程序
  为了平安地收拾磁盘碎片,需封闭翻开数据文件的实例,而且中断服务。假如你有充足的一连磁盘空间创建数据文件,那末你就很简单制止数据文件发生碎片。
  不要利用磁盘紧缩
  Oracle数据文件不撑持磁盘紧缩。
  不要利用磁盘加密
  加密象磁盘紧缩一样增添了一个处置层下降磁盘读写速率。假如你忧虑本人的数据大概保密,就利用dbms_obfuscation包和labelsecurity选择性地加密数据的敏感部分。
  不要利用凌驾70%的磁盘空间
  残剩的磁盘空间寄存体系一时数据和作为磁盘碎片收拾程序寄存两头数据。
  
  利用RAID
  选择硬件RAID凌驾软件RAID;
  带有硬件RAID把持器;
  日记文件不要放在RAID5卷上,由于RAID5读功能高而写功能差。
  把日记文件和回档日记放在与把持文件和数据文件分别的磁盘把持体系。
  分别页面互换文件到多个磁盘物理卷
  超过最少两个磁盘创建两个页面文件。你能够创建四个页面文件并在功能上受害,确保一切页面文件的巨细之和最少是物理内存的两倍。
  优化CPU利用和设置
  作废屏幕回护
  屏幕回护吸收大批的CPU资本并且供应的是对数据库服务器毫偶然义的用途,出格要克制3GL屏幕回护,假如你必需利用屏幕回护就用“空屏幕”削减CPU利用。
  把体系设置为使用服务器
  运转把持面板的“体系”,在初级选项卡中设置“功能选项”到“背景程序”,这供应优先权给使用程序,象相似Oracle的服务,否决用户在图形用户界面启动一个愚笨的程序。
  监督体系中损耗中止的硬件
  损耗CPU中止和工夫的硬件应当制止利用。一般如许的硬件是廉价的由于它把事情载进CPU,而CPU要处置核心的初级功能的硬件,一般必要注重:
  1、撑持总线把持的网卡
  2、撑持DMA而不撑持PIO的磁盘把持器
  利用功能监督器跟踪处置器工具的%InterruptTime计数器数值,和这个计数器的基线和尺度,然后监督成绩。
  3、有益制止中止的体例是利用硬件RAID把持器取代Windows2000撑持的软件RAID。
  坚持最小的平安审计纪录
  在公用服务器上运转Oracle
  Oracle是内存损耗年夜户,不要在实行以下功效的体系上运转Oracle数据库:
  1、主域或备份域把持器(Windows2000下都称域把持器)
  2、文件服务器
  3、打印服务器
 
  4、远程会见服务器
  5、路由器、代办署理或防火墙
  不要利用花梢的壁纸(假如利用,要只管减小壁纸文件巨细
  克制非必需的服务
  最好克制体系里非必需的服务,假如时而必要某些服务功效,可将启动范例设置为“手动”,要做到这一点起首同收集办理员考证实践的服务需求:
  1、假如你的体系不必要打印机,一般中断这个服务并设置为手动;
  2、中断LicenseLoggingService服务除非你对它有特别请求;
  3、不该该利用DHCP服务,并克制它;
  4、不要主动启动你不必要的程序;
  反省菜单“入手下手/程序/启动”里的内容,删除不必要的程序。
  优化收集设置
  收集设置是功能调剂的一项很主要的内容,并且很简单埋没功能瓶颈。
  设置网卡利用最疾速度和无效形式
  这针对主动检测,年夜多半缺省安装是NIC,假如这是可选的就只管调剂为“全双工”和最年夜化线速率。
  删除不必要的收集协定
  只保存TCP/IP协定。
  优化收集协定绑定按次
  在每一个网卡上设置主协定,典范地是TCP/IP,到协定列表的顶端。
  为Oracle克制或优化文件共享
  幻想地应当克制文件共享功效来最小化平安保守和收集交通,但假如你必要利用文件和打印共享,那末就设置体系中每一个网卡的“毗连属性”,设置“最年夜化收集使用程序数据吞吐量”
  内存调优
  内存优化是Windows平台的关头设置,起首懂得一下Windows2000平台的Oracle布局:
 
  基于线程的布局
  Windows2000是基于线程的布局,相反,Unix操纵体系是基于历程的布局。这意味着Windows中更多的使用,包含Oracle在内,是以带有多个线程的单个历程的情势实行,这类基于线程的布局切实其实给Window2000带来上风――更简单共享内存。内存空间为每一个历程分派,历程间共享内存很愚笨,要利用附加编码,线程是历程的子集,利用比历程少很多的内存。特定历程的一切线程共享一样的历程内存空间,统一历程的线程间共享内存比分歧历程共享内存要快,这给基于线程的布局很年夜上风,更无效。
  在服务器上运转的每一个使用程序都有一个,并且只要一个历程。历程是使用程序的载体,是用来包容实行使用程序实践事情的线程的。从用户角度看,历程是不必任何专门工具就能够看到的组件。历程对其他使用程序组件的感化就像容器一样。它持有假造的存储空间、数据、体系资本和使用程序设置。固然线程能够分派、从头分派和开释内存,可是历程承受初始的内存分派,并将它分派到哀求内存的一切线程。线程是包括在历程内共享一切历程资本的单个实行路径。它还包括仓库(存储在内存中的变量和其他数据)、CPU存放器的形态信息(以是,线程能够恢复它的情况)、和在体系调剂程序的实行列表中的一个登录项。每一个线程划定了完成义务使用程序必要作的某种事情。
  利用TaskManager的次要成绩是看不就任何线程。TaskManager被计划成从历程层将使用程序作为全体对待。固然还可使用功能监督器来监督Windows下的Oracle内存利用。
  从“入手下手/程序/办理工具”选择“功能”启动“体系监督器”。注重,“功能”包含两个MMC插件:“体系监督器”和“功能日记和变动”。这时候,必要一些被监督的计数器(计数器是一些功能唆使器,用于对Windows2000的特别工具举行统计,比方统计特定线程所请求的处置器工夫)。单击“增加”按钮(在图中看起来象一个加号),将看到“增加计数器”对话框。起首必要选择想监督的“功能”工具。在包括“历程”工具和“线程”工具的“功能”下拉列表当选择。
  历程察看器(ProcessViewer)是对照简单反省线程和历程的办法之一。能够在Windows2000SupportTools或Windows2000ResourceKit内找到一些工具。Windows2000SupportTools是Windows2000的一部分,可是其实不主动安装。撑持安装的WindowsInstaller文件在%CDROM%SUPPORTTOOLS目次下。只需在2000RKST.MSJ上右击,并从context菜单上选择安装便可。
  内存
  基于线程的布局切实其实有一些内存限定,由于单个历程由线程构成,而历程的地点空间是受限的,因而很少有空间是灵活的。由于Windows2000仍旧是32为操纵体系,单个历程地点空间被限定在4GB内,个中一半被操纵体系保存,这2GB被OS保存的体系内存也被视为体系地点空间,他包含OS内核编码、硬件笼统层编码(HAL)和必要办理历程和OS交互的分歧的别的布局,这2GB的体系地点空间是克制使用程序历程会见的。因而,Windows2000尺度服务器单个使用程序历程可以使用内存空间共2GB。在Windows2000初级服务器启动文件boot.ini中有/3GB开关,改动这个比例到3GB,这项手艺被称作4GB调优(4-gigabytetuning,或4GT),我们将针对这个成绩睁开具体会商。
  保存的内存是分派给线程的内存而且留作未来利用,但没有实践利用的内存。由于没有实践利用,因而它对别的历程仍旧无效。可是,由于它已被分派,它仍旧由对具有线程的历程的总的内存限定发生,因而,保存内存的盘算针对2GB或3GB的限定,而且历程保存的和利用的内存的总和不克不及凌驾这个限定。
  除体系中安装的物理内存以外,Windows2000还利用假造内存。这实践上是驻留在硬盘上的内存。可是Windows2000使得它对使用程序来讲,就像是安装在呆板上内存一样。当某个使用程序块请求会见谁人内存时,Windows2000就把别的的内存块复制到磁盘上,而把所请求的内寄存到物理内存中,这些内存块的巨细是4KB。也就是说,每次使用程序提出对内存的请求时,内存就被分派在4KB的页面内。在磁盘上摹拟内存的文件叫做页面调剂文件。VirtualMemoryManager(VMM假造内存办理器)是操纵体系办理呆板上的假造内存组件。一切的内存会见都经由过程VMM。这意味着每当操纵体系必要举行内存调页时,就要提出VMM哀求。
  内存调优办法:
  (一)利用凌驾4GB的内存
  别的,有举措同意为单个历程或使用分派凌驾32位地点空间的内存,为完成这一点,Windows2000利用物理地点扩大(physicaladdressextensions,或PAE),PAE实质上把地点空间从32位增添到36位,可是必需有PentiumPro或更新的处置器才干享用这个上风。在WindowsNT4.0下,Intel供应PSE36驱动程序享用全体36位地点空间的上风,可是在Windows2000AdvancedServer中36位地点空间的撑持已创建在操纵体系中,但是,使用程序必需利用地点窗口扩大(AddressWindowingExtensions,或AWE)API写成,Oracle9i刊行号1(Release1)不撑持AWE,一切的Oracle8i刊行号(releases8.1.5C8.1.7)都撑持AWE。Oracle在9i刊行号2(Release2)中完成了对AWE的撑持。
  (二)AWE和Windows2000
  AWE同意你利用体系中任何附加的凌驾4GB的内存,为了表现这个上风,你必需有凌驾4GB的内存,必需有PentiumPro或更新的处置器,必需运转Windows2000初级服务器或Windows2000数据中央服务器,不必要特别的驱动程序,由于Windows2000已撑持AWE。
  为了使用这项上风,必需在启动Windows2000呆板时在boot.ini文件中利用/PAE开关,你必需确保运转Oracle服务的帐户有LockPagesinMemory权限。给运转Oracle服务的帐户增添LockPagesinMemory权限后,要从头启动OracleService服务。
  (三)AWE和Oracle
  能够断定,Oracle8i一切刊行号版本和Oracle9i刊行号2只同意你为数据库块缓冲区设置凌驾4GB限定的内存空间,因而,要为用户毗连开释尺度历程地点空间的内存(低于3GB界线的内存)、PGA内存和构成SGA的分歧内存缓冲池。
  在初始化参数文件init.ora中要设置参数USE_INDIRECT_DATA_BUFFERS=TRUE,没有这个参数,Oracle不克不及寻址到4GB以上的地点空间。接上去要设置决意内存利用总量的缓冲池巨细,设定DB_BLOCK_SIZE和DB_BLOCK_BUFFERS两个参数。
  在Oracle9i刊行号2中,参数DB_BLOCK_BUFFERS被参数DB_CACHE_SIZE所取代,如许就改动了本来指定缓冲区块数到指定缓冲区字节数,一样,也注释了在Oracle9i刊行号2的一个数据库中撑持多个数据库块巨细。不管用哪一种举措,假如你设定参数USE_INDIRECT_BUFFERS=TRUE,你将只能界说和利用单个数据库块巨细和块缓冲区(就象在9i之前的刊行号中),因而,假如缺省数据库块巨细是4k、8k或别的,而设置DB_2k_CACHE_SIZE是不同意的。
  接上去必要在注册表中为ORACLE_HOME设置符合的AWE_WINDOW_MEMORY参数值,也就是在HKEY_LOCAL_MACHINESoftwareOracleHOME0下,这个参数指定字节数,假如没有设置,缺省值是1GB。这个参数的巨细取决于你要设置几缓冲区巨细,并视为来自3GB历程地点空间的惯例内存。以缓冲区巨细为6GB为例,设置AWE_WINDOW_MEMORY为缺省值1GB,你但愿1GB视为惯例内存,而且残剩5GB缓冲区来自4GB限定以上的地点空间。你但愿更多的缓冲池尽量保存在惯例地点空间,由于会见凌驾4GB以上的缓冲池比会见假造地点空间缓冲池要慢(只管仍旧比磁盘I/O操纵快)。
  (四)办理与AWE相干的内存成绩
  必要注重的是每一个4GB界线以上的块缓冲区必要在惯例地点空间保存约莫200字节的缓冲区头,因而,在下面的例子中,我们约莫有312000个缓冲区头指向扩大地点空间的缓冲区,缓冲区头约莫占80MB惯例内存空间,假如数据库块很小,那末这个数目会相称高,因而,必需确保这些缓冲区头、AWE_WINDOW_MEMORY、和一切Oracle.exe历程的内存需求,包含编码、SGA别的组件、PGA内存和每一个用户毗连栈都合适Oracle.exe历程的惯例3GB假造地点空间。
  确认你有充足的物理内存处置凌驾AWE_WINDOW_MEMORY以外的DB_BLOCK_BUFFERS,在我们的例子中界说缓冲池巨细为6GB,1GB来自惯例地点空间,残剩5GB来自4GB之外的对全部历程无效的体系和历程地点空间,因而,这个例子只能事情在最少有9GB内存的呆板上,你还应当为别的历程保存一些空间,只要一个历程能够在某一时候会见附加的内存。
  象后面所说的那样,/PAE开关只用于体系有凌驾4GB物理内存的时分,但假如体系内存少于4GB时,也可仿照这项功效。在boot.ini文件中设置MAXMEM参数的值,以下面例子,设为2GB,意味着任何2GB以上的内存都将保存为AWE内存。
  multi(0)disk(0)rdisk(0)partition(1)WINNT="MicrosoftWindows2000AdvancedServer"/fastdetect/PAE/MAXMEM:2048
  为一个数据库利用附加的多个历程
  真实的使用集群(RealApplicationsClusters,RAC)供应有多个实例运转和会见统一数据的才能。一般,这用于有两个或多个节点的项目,一个实例运转在每一个节点。不管怎样,它撑持在Oracle9i有两个实例运转在一个节点会见统一个数据库。这能克制每一个历程的内存限定,又供应某些别的的好处,如使用程序失利检测。
WindowsAzureSQLDatabase并不支持数据压缩和表分区之类的功能,而且SQLDatabase支持的Transact-SQL语言只是完整版的一部分。另外,因为解决方案提供商不能控制物理资源,所以他们不能将数据文件和索引分配给特定的硬件。

简单生活 发表于 2015-1-19 18:26:56

只能告诉你,学好数据库语言和原理,多见识几种数据库软件,比一棵树上吊死要好。

金色的骷髅 发表于 2015-1-26 22:23:11

我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力

山那边是海 发表于 2015-2-4 21:04:23

备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。

老尸 发表于 2015-2-10 10:51:11

很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。

兰色精灵 发表于 2015-3-1 10:03:58

这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?

admin 发表于 2015-3-10 13:14:21

可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。

若天明 发表于 2015-3-17 08:09:29

数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。

谁可相欹 发表于 2015-3-24 03:44:00

对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。
页: [1]
查看完整版本: MYSQL网站制作之Windows 2000下优化Oracle9i功能