[ale] pyramids??

Paul Cartwright ale at pcartwright.com
Tue Jul 8 10:32:20 EDT 2008


I remember Pyramids in DC, US Gvt bld, up next to our AT&T 3B5's.. not to 
mention Informix.. ok, so it ISN'T Linux.. this was b4 linux!
http://thedailywtf.com/Articles/Hastening-an-Inevitable.aspx

Hastening an Inevitable
2008-07-08
by Jake Vinson in Feature Articles   (17 Comments)

Keeping hundreds of millions of sheets of paper on file isn't easy, so the IRS 
had an application built to computerize their records. It'd scan paper tax 
returns into a WORM (Write Once, Read Many) drive system and record lookup 
data in a database. That way they could filter by any fields they recorded in 
the database and access a scanned image of the tax return for any further 
information using a simple app, which sure beat the old method of data 
retrieval — digging through boxes, incurring huge wait times.

The nice thing about the old method, though, was that it generally worked. The 
new system was full of bugs, in addition to several other irritating issues. 
On Bobby's first day he was put in front of the application, and right off 
the bat it looked amateurish. Form elements not lined up properly, buttons 
not always the same size, inconsistent menus — not broken, but certainly not 
professional looking. His boss, Boris, explained some of the finer features 
in a dry, humorless, low monotone.

"Now, as you can see heeere," his boss mumbled, "this is pretty exciiiting." 
Boris would linger on certain syllables presumably in an effort to sound more 
boring. His tone made Ben Stein sound like Freddie Mercury. "Allll we have to 
do is click a feeew buttons annnnd..." Meanwhile he was typing some text into 
the fields to perform a lookup. "And affffter a few short minnnnnutes..."

Bobby was briefly impressed — Boris had made a joke! Not a particularly funny 
one, granted, but certainly worth a polite chuckle... except- wait a minute. 
This is actually taking several minutes, Bobby realized. And in Boris's 
company, each passing minute felt like ten. Boris whiled away the minutes 
describing some of his hobbies — toy piano tuning, model taxidermy, 
palindromatic haiku composition — each somehow more boring than the last. 
After an eternity (nine minutes) of struggling to keep his eyes open and 
subtle closed-mouth yawning, an error message popped up.

"Ohhh, fidddddlesticks," mumbled Boris in lifeless anger. As Bobby would 
eventually learn, the database's average response time for tax form searches 
was in the realm of 8-10 minutes. That was if you were fortunate, though — 
it'd often just time out.

Although Bobby wanted to help, he wasn't allowed to lay a finger on the 
database. He was only authorized to edit the frontend code. So to start off 
he gathered whatever information he could — the hardware (Pyramid 
Minicomputer running four 150Mhz processors) and the software (AT&T Unix and 
Informix DB server). He looked through the code and made a few UI 
improvements, and it didn't take long for him to locate the biggest 
bottleneck — the database.

After getting in touch with the DBAs, Bobby was granted read-only ODBC access. 
Bobby kept making tweaks and little optimizations, constantly running SELECT 
queries, but couldn't get them to run any faster than six minutes. He dug 
through ODBC settings, hoping to find something... anything that he could 
change to improve performance, but judging by the crazy, arcane settings 
already set up, many had tried the same thing and failed.

Bobby had spent several hours and not gotten far from where he started. 
Wanting something to show for the time spent, he threw together a 
quick "Please Wait" dialog box with an animated hourglass to give the bored 
operators something to watch while they waited for the data to come back.

Several days later, Bobby had a stroke of luck. One of the higher-ups had 
caught wind of his UI changes and wanted a demonstration. When the topic of 
speed came up, Bobby mentioned that he'd found the bottleneck and suggested 
he get full access. It shouldn't be a problem since he worked under constant 
supervision anyway.

"I don't think that'll be an issue," he said with a smile. "Can you do it 
right now?"

Bobby hesitated, then gave a weak "...sure." He flushed a little red, 
concerned that he was wrong and he'd embarrass himself in front of everyone. 
A DBA was called to the room, who opened up a console window and turned Bobby 
loose.

Of course, it's highly unorthodox for someone to be given absolute access to 
one of the IRS's production databases, but no one wanted to question the big 
cheese. The DBA watched Bobby like a hawk.

Bobby swallowed the lump in his throat, tried to ignore the seven sets of eyes 
on him, and typed some simple queries in an attempt to isolate the problem. 
In short:

    * Indexes: none
    * Primary keys: none
    * Rows: ~2M per table, four or more joins per query
    * Processor speed: 30Mhz

Bobby fired off a few commands to create indexes on fields that he knew were 
frequently queried. The DBA's stare intensified. Bobby felt more nervous, 
hoping that it would all work ok. And after verifying that queries were still 
being profiled, he ran a SELECT query.

It took 0.22 seconds.

Crap, he thought. There's no way it could've run that fast. I must've totally 
destroyed the production database. Wiping sweat off his forehead, he ran the 
query again, this time to verify the results. And the results were correct.

With each query he ran his smile grew larger, as did the rest of the room's 
collective disbelief. The "Please Wait" window would appear and hide so 
quickly that no one could even see it.

They tried to chart the difference, but what's the point? 8-12 minutes versus 
0.35 seconds average? Management did all but break out the pom-poms and do 
cartwheels throughout the office. The operators were so ecstatic that they 
actually threw him a party. As for us US taxpayers, we benefited as well 
since we're getting taxed faster!
-- 
Paul Cartwright
Registered Linux user # 367800
Registered Ubuntu User #12459



More information about the Ale mailing list