欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle性能究极优化 下

程序员文章站 2022-06-05 22:27:59
正在看的oracle教程是:oracle性能究极优化 下。  我们有理由相信采用新的内核版本(2.2.16-3 smp)也应该有性能的提升:   os2: newer mi...
正在看的oracle教程是:oracle性能究极优化 下。  我们有理由相信采用新的内核版本(2.2.16-3 smp)也应该有性能的提升:

  os2: newer minor version kernel tpc results
  load time (seconds) 9.40
  transactions / second 11.522

  目前已经有 2.4 版本的内核,和 2.2 相比,性能上有了很大的提升,我们采用 2.4.1 smp:

  os3: newer major version kernel tpc results
  load time (seconds) 8.32
  transactions / second 12.815

  linux 缺省读操作时更新最后一次读的时间,但是这个对我们来说并不重要,因此我们关闭这个选项,通过设置 noatime 的文件属性来实现。(对于 windows nt 和 2000 有相似的设置)

  如果只是相对 oracle 的数据文件设置,我们的命令是

  chattr +a file_name

  对整个目录的实施办法:chattr -r +a directory_name

  最好的办法是修改 /etc/fstab ,针对每个文件系统入口,添加 noatime 关键字。

  os4: noatime file attribute
  tpc results
  load time (seconds) 5.58
  transactions / second 13.884

  另外一个调整 linux i/o 的办法是虚拟内存子系统的调整,修改 /ect/sysctl.cong 文件,增加下面一行:

  vm.bdflush = 100 1200 128 512 15 5000 500 1884 2

  根据 /usr/src/linux/documentation/sysctl/vm.txt 的说法:

  第一个参数100 %:控制缓冲区中最大的脏缓冲数据,增加这个值意味着 linux 可以延迟磁盘写。
  第二个参数 1200 ndirty:给出 bdflush 一次能够写入磁盘的最大脏缓冲。
  第三个参数 128 nrefill:当调用 refill_freelist() 时,bdflush 添加到*缓冲区中的最大缓冲数目。

  refill_freelist() 512:当这个数目超过 nref_dirt 脏缓冲时,将唤醒 bdflush。

  第五个 15 和最后两个参数 1884 和 2,系统未使用,我们不做修改。

  age_buffer 50*hz, age_super 参数 5*hz:控制 linux 把脏缓冲写到磁盘的最多等待时间。数值用时钟滴答数(jiffies)表示,每秒为 100 个 jiffies 。

  os5: bdflush settings tpc results
  load time (seconds) 4.43
  transactions / second 14.988

  经过以上一系列调整后,我们得到的最终加载时间减少了 1015.35%,tps 增加了 45.61%。