Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
Discussion Groups
Database Servers
DB2InformixIngresMS SQLOraclePervasive.SQLPostgreSQLProgressSybase
Desktop Databases
FileMakerFoxProMS AccessParadox
General
General DB TopicsDatabase Theory
Related Topics
Java Development.NET DevelopmentVB DevelopmentMore Topics ...

Database Forum / DB2 Topics / March 2004

Tip: Looking for answers? Try searching our database.

Multiple Containers on Striped Disks

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
James - 13 Mar 2004 04:48 GMT
If one uses multiple containers for a single tablespace on a disk array that
has been striped (RAID-5 or RAID-0), does DB2 stripe the tablespace across
the containers, resulting in duplicate striping?

If so, does this hurt performance by causing contention on the disk heads?
Is there some way to disable this?
Pierre Saint-Jacques - 13 Mar 2004 06:56 GMT
See below in your msg.

Signature

Pierre Saint-Jacques
SES Consultants Inc.
514-737-4515

> If one uses multiple containers for a single tablespace on a disk array that
> has been striped (RAID-5 or RAID-0), does DB2 stripe the tablespace across
> the containers, resulting in duplicate striping?
Yes.

> If so, does this hurt performance by causing contention on the disk heads?
Yes
> Is there some way to disable this?
The recommendation is to define this way:
DB2 V7.x
Before creating tablespace, do:
    Get the extent to be a multiple of the stripe (ie: stripe is 16K then
EXTENT 4 with a 4k page), or a factor of (ie:stripe is 8k, array is 4 then
EXTENT 8 with a 4k page)
   db2set db2_striped_contsiners ON
   Create tblspc. with ONE container
   db2set db2_parallel_io {all | * | tblspcid,tblspcid, ...}
With DB2 V8.x
   No need to set stripe containers on, it is by default.
   Create tblspc. with ONE container
   db2set db2_parallel_io {all | * | tblspcid,tblspcid, ...}

HTH,  Pierre.

By creatin
James - 13 Mar 2004 07:31 GMT
> > If one uses multiple containers for a single tablespace on a disk array
> that
[quoted text clipped - 20 lines]
>
> HTH,  Pierre.

OK, I already understand the reason for the DB2_STRIPED_CONTAINERS=ON, which
is to use a full extent for the container tag, instead of one page, to
ensure alignment of the subsequent extents on the stripes.

I already know that the extent size (extents times page size) should equal
the stripe size ,and the prefetch should be the extents times the number of
containers (or some even multiple of that).

But my question is (yes or no), does using multiple containers on a
tablespace ALWAYS cause striping across the containers (which would be
double striped on an array that was already striped with RAID)? And does
this double striping cause any performance hits?

The version is DB2 7.2 FP9.
Pierre Saint-Jacques - 13 Mar 2004 17:55 GMT
I've always understood the answer to be yes to both:double striping and
perf. hits.
Yes it will double stripe.  DB2 knows there are more than one container so
it will round robin the extents on the no. of containers.  Now each of these
containers are files or extents of raw so you will get striping of striping.
The perf. hits come from the attempts to read continers in parallel that are
striped (by pure luck) on the same pgysical r/w mechanism.
HTH,  Pierre.

Signature

Pierre Saint-Jacques
SES Consultants Inc.
514-737-4515

> > > If one uses multiple containers for a single tablespace on a disk array
> > that
[quoted text clipped - 37 lines]
>
> The version is DB2 7.2 FP9.
Mark Yudkin - 14 Mar 2004 11:58 GMT
Raid-0 doesn't stripe, it duplicates over the drive pair. Raid-5 "stripes".

Raid-0 will hit performance if you fail to use a controller with a
sufficiently large battery-backed write cache, as you'll have to wait for
both drives to have completed the write on a commit. The number of
containers is essentially irrelevant to this consideration, except of course
that each container will be on a separate physical drive pair. Unless of
course you have partitioned your drive array into multiple logical drives
which you then rejoin for your tablespace. But that is such a silly design
that your horrible performance could only be considered as "by design".

Raid-5 is messier; Pierre has addressed the main issues. As with Raid-0
multiple containers will only hurt your performance if you've partitioned
your drive array. And as with Raid-0, performance can be significantly
improved by the use of a non-volatile write-back cache.

We measured a factor 7 performance improvement in REORGs by replacing the
builtin SCSI controller with one having a 128MB cache (64MB assigned to
write).

> If one uses multiple containers for a single tablespace on a disk array that
> has been striped (RAID-5 or RAID-0), does DB2 stripe the tablespace across
> the containers, resulting in duplicate striping?
>
> If so, does this hurt performance by causing contention on the disk heads?
> Is there some way to disable this?
Robert - 14 Mar 2004 22:18 GMT
> Raid-0 doesn't stripe, it duplicates over the drive pair. Raid-5 "stripes".
>
[quoted text clipped - 15 lines]
> builtin SCSI controller with one having a 128MB cache (64MB assigned to
> write).

Mark, I appreciate your time and assume you are knowledgeable about DB2, but
you have RAID 1 and 0 mixed up.

RAID-0 is striping without parity (RAID-5 is striping with parity).
RAID-1 is disk mirroring.

I asked about RAID-0 and RAID-5.

The question I asked was about multiple containers for a single tablespace
on a single (already) striped RAID array, not necessarily multiple
partitions. Does DB2 stripe the across the containers, even though they are
already striped on the array. Does this hurt performance compared to a
single large container on that array. My assumption is that DB2 would invoke
parallel I/O on the multiple containers and cause contention on the disk
heads.

Obviously, putting the containers for a single tablespace on two different
JBOD (plain) disks (no RAID) or on two separate arrays, is preferable. But
what if one has to add another container on the same disk array that is
already striped (by the OS or the RAID controller). Does that hurt
performance compared to a single container.
Fan Ruo Xin - 16 Mar 2004 05:56 GMT
By default, the I/O parallelism is equal to the number of containers in the
table space

By setting DB2_PARALLEL_IO registry variable, the I/O parallelism is equal
to the result of prefetch size divided by extent size.

I don't think double striping could hurt a lot of perfermance if you can
figure out the right size of
- STRIP SIZE
- EXTENT SIZE
- PREFETCH SIZE

Of course why do you use double striping? Just like you have a striped disk
array, but still try to configure the Logical Volumn to strip the data
again.

> If one uses multiple containers for a single tablespace on a disk array that
> has been striped (RAID-5 or RAID-0), does DB2 stripe the tablespace across
> the containers, resulting in duplicate striping?
>
> If so, does this hurt performance by causing contention on the disk heads?
> Is there some way to disable this?
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.