数据库在aix上的优化
一、优化方法
1、谁调优
应用设计人员
应用开发人员
数据库管理员
系统管理员
2、调整什么
调整的代价是什么
个人觉得调整的方面包括:
调整应用设计:在系统设计初期成本最小,收益最大,而在后期代价很大,许多应用的设计问题是以后性能问题产生的主要因数。
调整开发方法:在开发阶段的代价最小,越往后代价越大
调整数据库层:在设计阶段需要开发dba参与,而同时在系统维护后期需要进一步的部署调整。
主机的性能调整:OS调整、硬件的调整
3、调整的阶段
应用设计和编码阶段
数据库结构
增加一个新的应用到已经存在的数据库中
故障诊断和调优
4、调整的目标
减少或者消除等待
访问最少的数据块数
将数据块尽量缓存在内存中
最小化响应时间
增加吞吐量
增加负载能力
减少恢复时间
增加命中率
二、选择合适的磁盘部署方案
1、选择合适的raid级别
最求高性能时,选择raid1+0
一般情况下,考虑使用raid5
比如oracle普通的数据文件使用raid1+0,而oracle的归档日志则采用raid5。
2、选择大小合适的IO块
随机读取使用小块的IO,需要seek time
顺序读取考虑使用较大的IO块,需要很少的seek time
随机与顺序读取正好分别是oltp,olap的主要特征
3、分开部署数据库的数据文件和日志文件
数据的IO请求是随机的,
日志的IO请求是串行的,快速的
4、选择合适的数据文件类型来存放数据库文件
裸设备/文件系统(DIO/CIO),主要区别是是否使用操作系统缓存
ASM,仅实用于oracle10g以上的数据库产品
5、条带、镜像
目的是将IO打散在所有设备上
避免消除热点IO
6、从多个阵列上创建AIX VG,LUNs,条带化以达到最大的分布
PP分布:mklv -e x
LVM条带:(大于1M的strip size) mklv -S
三、aix下针对oracle建立lv建立方式
1、lv条带
1)oracle建议条带的大小为如下值的倍数
Db_block_size * db_file_multiblock_read_count
通常为1M大小
2)有效的LV条带尺寸为
AIX 5.2: 4k, 8k, 16k, 32k, 64k, 128k, 256k, 512k, 1 MB
AIX 5.3: AIX 5.2 Strip sizes + 2M, 4M, 16 MB, 32M, 64M, 128M
3)使用lv的0 offset
2、PP条带
使用最小的PP条带大小
将lv的pp分布在不同hdisk上。
四、异步IO
1、AIX参数(smit aio),当基于文件系统的配置的时候生效
minservers = 10*#cpus
maxservers = (10*#disks)/#cpus
maxreqs = a multiple of 4096 > 4 * #disks * queue_depth
上述配置在系统重启时生效。
典型配置: minservers=100, maxservers=100, maxreqs=16384
2、oracle端参数
disk_asynch_io = TRUE
filesystemio_options = {ASYNCH | SETALL}
db_writer_processes (通常使用默认值)
db_writer_io_slaves (通常不使用该参数)
3、监控AIO使用中
oracle的alert日志文件中出现如下的信息:
Warning "lio_listo returned EAGAIN"
AIX平台下的监控
pstat –a | grep aios
iostat –A
NMON "-A" and "-t" 选项
3、AIX文件系统
1)JFS
Sequential Read-Ahead, cached writes。默认有文件系统缓冲区,顺序读之前,需要将这些数据写进缓冲区。
DIO(Direct IO):在读的时候无缓存
该类型的文件系统不再被提高。
2)JSF2
Sequential Read-Ahead, cached writes。默认有文件系统缓冲区,顺序读之前,需要将这些数据写进缓冲区。
DIO(Direct IO):在读的时候无缓存
CIO(cocurrent IO):在DIO,但是禁了顺序写的功能。只能对oracle数据文件,日志文件和控制文件使用cio。
注意:带有cio功能的jfs2性能接近于裸设备raw device。
-----未完待续
阅读(1446) | 评论(0) | 转发(0) |