HELP: Widely varying insert performance - "unbalanced" index?

From: D461-David_F_Haertig <dfh_at_dwroll.att.com>
Date: 1996/06/23
Message-ID: <DtH3o0.EsD_at_bigtop.dr.att.com>#1/1


Hi -

An Oracle performance question here. I'm seeing widely varying performance on inserts into my database. I believe the problem may be in the indexing, but I'm no expert - hence my question.

I have a relatively large database of 20 million records or so (that's pretty big for ME, but probably not for you guys out there). It's growing by about 10 million records per year. Anyway, 95% of my inserts into this 20 million entry base table are running in the sub second range. But certain records take an average of 35 seconds!

What I'm theorizing is this: I'm indexing on a particular field of all my records. The majority of the incoming records (95%) have a fairly wide and even distribution of values for this field (maybe 100 different possibilities). That 5% (the slow insert) has only one value for this field that I'm indexing on. And I see an order of magnitude more of this "slow" field value than any other specific value.

Could my index be "unbalanced" or something like that? I'm not a DBA and I don't really know how Oracle handles indices. I assume it's some kind of hash function followed by chaining. Could this, or something else I'm not familiar with, be causing my performance problem? How do I fix it? My database is fed by over 100 other computers that do manufacturing related data collection. I have set up a relatively flexible ASCII record format that incoming records must adhere to. These 100 "other" computers connect to my database front-end via sockets and send up their data which I then parse and insert into the database. Unfortunately, I do not have a whole lot of control over the content or quantity of data that is uploaded.

I'm running on a dual computer NCR platform. Each computer has four Pentium 90's and 1 GB of memory. The two machines share 84 GB of RAID storage. Right now, one machine runs Oracle and the other connects via SQL-Net. We're considering switching to Oracle Parallel Server, but that's a bit further into the future. Despite the fairly potent hardware (I think), the machine running Oracle runs at only about 5% idle (time is spent in "usr" and "sys", not "wio"). You take away those "slow" insert records and the machine bounces back into a > 75% idle range. My sysadmin configured the system with lots of little disks (2 GB) spread over several different SCSI buses. The DBA's "striped" the database over the gamut of the disks so indices and table inserts don't bottleneck.

Does anybody have any ideas or suggestions? Email responses would make me very happy. I don't have alot of time to read through newsgroups right now. I'm too busy banging my head against the computers trying to up their performance for those unlucky 5% of the records!

Thanks,

--
Dave Haertig
haertig_at_lucent.com   -or-   haertig_at_att.com
-- 
Dave Haertig
haertig_at_att.com
Received on Sun Jun 23 1996 - 00:00:00 CEST

Original text of this message