Jeff - what you are trying to do is optimize read performance of a large
table. You're returning a result set of probably several hundred
megabytes. To minimize response time, you want to light up every CPU,
every disk, and use every megabyte of memory as hard as possible. This
is purely an exercise in maximizing disk read performance. My intuition
is:
1. Keep upping RAPAGES AND RATHRESHOLD until hit ratio drops below ~95%
2. Set PDQPRIORITY to at least 1, probably 10ish
3. Make sure customer is fragmented across at least 8 dbspaces, more is
probably better.
4. Make sure an AIOVP is getting after each one (you should probably up
your AIOVPS)
5. Up CPUVPS to 8 (this n-1 stuff is for the birds in my humble
opinion...)
Let me know how it goes, you have my number.
greg
Jeff Craig wrote:
snip...
> If I use dbaccess to do the following:
> unix> dbaccess db1 <<EOF
> output to /dev/null
> select * from consumer;> EOF
>
> I can sequentially scan 7.8 million rows in 45 minutes - not good!
> I have look for waiters, locks, I/O, everything. The only thing
> that I see when this query is executing is a single aio vp reading
> big buffers (onstat -g iob). Since I have lots of memory, I have
> made all memory-related parameters large in the hopes of gaining
> good throughput for such sequential scans. This is a data warehouse
> application, so sequential scans are not out of the ordinary.