| |
Quest Pipelines
March's Tip of the Month
How Many RAID5 Drives Do I Need?
Compliments of Mike Ault, DBA Pipeline SYSOP (AULTM@tusc.com)
and Cary Millsap
For more online references from Mike Ault, check out
ROBO Books International.
Don't calculate how many RAID 5 drives you need by counting bytes
of storage capacity. You must buy enough drives to provide the number
of I/O operations per second (IOps) that your application will
require. You know the problem: every small write call requires 4
actual physical I/O operations. So in your model of how many IOps your
application will require, use the formula T = R + 4*SW + G/(G-1)*LW,
where the variables are:
- T is total number of I/O calls per second at peak
- R is number of reads per second at peak
- SW is number of small writes per second at peak
- LW is number of large writes per second at peak
- G is the number of disks in one RAID 5 array
A "large" write is any write that engages all G disks in the array for
one write call. A "small" write is any write that engages fewer than G
disks to execute the call.There are many cases I've seen in which
you have to buy *more* RAID 5 disks to compensate for the IOps penalty
than if you had just bought a RAID1 configuration to begin with. It's
not true for everyone, but I've seen it happen with some regularity.
April's Tip of the Month
Dynamic Memory Allocation in Oracle9i
Compliments of Robert Freeman, DBA Pipeline SYSOP
Oracle9i allows you to dynamically allocate or deallocate memory
from the database buffer cache or the keep or recycle buffer pools,
providing there is enough memory available. Use the alter system
command to resize the buffer caches up or down, as required. Here is
an example of such an operation:
Alter system set db_cache_size=100m scope=both;
Alter system set db_keep_cache_size=100m scope=both;
Alter system set db_recycle_cache_size=10m scope=both;
In the first example we are changing the default cache size to 100
megabytes dynamically, so that assuming no error is generated, this
change will take effect dynamically. In the second example we are
setting the keep buffer pool to 100m, and in the final example the
recycle buffer pool is set to 10m. You can, of course, size the caches
up or down, as required. Note that dynamic sizing is not available if
your database buffer cache or your keep or recycle pools are allocated
using the old Oracle8i parameters db_block_buffers, buffer_pool_keep,
or buffer_pool_recycle.As always there is a catch. The catch to
dynamic memory management is that to add memory you must have prepared
the system for such an event by setting the parameter sga_max_size.
This parameter defines the maximum overall size of the SGA, and no
component of the SGA can be dynamically expanded such that it exceeds
the size defined by sga_max_size. Also note that on a number of
systems, sga_max_size will cause the system to allocate memory up to
sga_max_size at instance startup, essentially making that memory
unavailable to other processes or databases. The only exception to
this appears to be Solaris 2.8.
|