SI
SI
discoversearch

We've detected that you're using an ad content blocking browser plug-in or feature. Ads provide a critical source of revenue to the continued operation of Silicon Investor.  We ask that you disable ad blocking while on Silicon Investor in the best interests of our community.  If you are not using an ad blocker but are still receiving this message, make sure your browser's tracking protection is set to the 'standard' level.
Technology Stocks : All About Sun Microsystems -- Ignore unavailable to you. Want to Upgrade?


To: Win Smith who wrote (48940)5/13/2002 10:08:21 AM
From: rudedog  Read Replies (2) | Respond to of 64865
 
Will - You're quite correct on average latency for a single disk. However, in a big benchmark (or sufficiently large real world system), there are thousands of spindles, so the average latency, assuming the storage subsystem is well set up, is divided by the number of spindles, which puts the speed more at par unless there is a "hot spot" such as a log file that places much of the I/O on a smaller portion of the storage.

Modern database engines don't switch tasks, which is, as you say, a heavyweight process. Instead they run only a few tasks which use thread scheduling. Threads only swap a small portion of the process context, so they are much quicker to run. So perhaps 10 or fewer tasks manage thousands of threads.

The two killers in database scheduling are interrupts and physical I/O. Even when the disk subsystem is very fast, the threads can not wait for the data, and so are swapped out. Even if the data is in paged memory in a segmented scheme, this still results in four separate calls to the interrupt handler, which invokes OS code that is out of the application space, which flushes the CPU and L2 cache, resulting in even more delay.

SQL performance is a problem that has been worked in great detail for more than 20 years and most of the problems, and ways around them, have been well documented.

At the end of the day, a flat memory model that can be accessed from application space with no OS calls has a huge advantage over even a pure memory model which forces those calls because of segmentation. There is no contest between any database which operates primarily in memory and one which operates mostly on disk, despite the work over the years on disk arrays and asynchronous drivers to reduce thread stalls.