Skip to Main Content

Oracle Database Discussions

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Need a table with high IOPS (write)

777489Dec 1 2010 — edited Dec 9 2010
Hello,

I get stuck with a (maybe) little Problem. I'll describe the situation a little bit for better understanding. Oracle 11g2 is running on a server and some "measurement devices" (MD) which sends data to a daemon (runs on the server). That daemon program executes an initial insertquery followed by some updatequeries for further cols of the new inseted row. The size of one row is approx about 3,7kbyte (it contains some BLOB's und CLOB's). The incoming data from all those MD's are Inserted to one table, let's call it "tab1". Therefore tab1 is the critical table where the high IOPS laod is generated - there are 70-100 MD's around each sending data for one row every 400ms. Iin Result there are up to 250 rows to insert each second with almost 1MByte size overall. Rows which is older than 2 specified time will be deletet from tab1, so after a time, tab1's size won't increase any more. Another important point is: based on the rows in tab1 a procedure (managed by dbms.scheduler) generates statistics and store them in another table, lets say "tab2". Those statistical data in tab2 are important only! It's not important to garuantee data consisentency for tab1! Avoiding the lack of data/rows on tab1 is not an issue (unlike in most other cases).

This task generates massive IOPS on the (regular) HD I'm using right now. There are so much IOPS that I can't write/insert all the data recevied. So I began to search for solutions to improve that. One could be to try an raid 0 array of regular harddisks, but in that case i expect that it could work, but have a small overhead - which i don't like. Another solution could be to use an SSD or two - the HD now get stucked on ~400IOPS (write) and based on tests I've done i would expect a need of ~560IOPS (write) which should be easyly done by a SSD like Intels X25-E (>3300 IOPS, 4kbyte blocks) .. even if i use 8kbyte blocks in oracle. But I don't have a SSD to test this, so I would have to buy a (sure expensive) SSD on spec - I would like to avoid this.
Another way could be to create a tablespace for tab1 und put its datafile into a ramdisk, aware of that, in case of poweroff, the collected data in tab1 is lost - and for sure oracle won't start after reboot due to inconsistency. Can I simply copy back a backup of the tablespace datafile for tab1 in this case? Estimated size for tab1 is around 2GB maximum, it will costs some bucks, but here im can be sure that the IOPS thruput is very quick - at least quick enough.

While sneaking around in OTN/OPN I read some stuff about TimesTen but due to that is running at the application-tier (the MD here) I think it's not a solution for me. Further I've tried to set tab1 to "nologging" but only increases the performance very very slightly. Some point I've not tested yet is to increase oracles blocksize (maybe 16k) due to that is recommended in the docs for datawarehouse aaplications.

Now i want to ask for, if there is a sure way to confirm that a SSD will surely do the job without buy one for testing? As I know this would be the most "correct" way to solve the problem - don't it?
Or as alternative: the idea to put tab1 in RAM by set the datafile into a ramdisk - does that work (considering the arguments I wrote above)? Or is there another "in build" solution for that? Pin tab1 to the buffer pool keep only increases the selectquery performance on tab1, don't it?

Kind regards & Thanks for helfpul answers.
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jan 6 2011
Added on Dec 1 2010
8 comments
613 views