8. History …
1988 6
1989 Utlbstat/utlestat
1990 joined
1991
1992 7 Waits Waits
1993 Patrol vs M2
1994 Tcl/Tk Europe Car
1995 Tcl/Tk waits
1996
1997 8
1998
1999
2000
2001 9
2002
2003 10
2005 10.2
2006
2008
200X
2016
9. History …
1988 6
1989 Utlbstat/utlestat
1990 joined
1991
1992 7 Waits Waits
1993 Patrol vs M2
1994 Tcl/Tk Europe Car
1995 Tcl/Tk waits
1996
1997 8
1998
1999
2000
2001 9
2002
2003 10
2005 10.2
2006
2008
200X
2016
10. History …
1988 6
1989 Utlbstat/utlestat
1990 joined
1991
1992 7 Waits Waits
1993 Patrol vs M2
1994 Tcl/Tk Europe Car
1995 Tcl/Tk waits
1996
1997 8
1998 Statspack 8.1.6 top waits
1999 Spotlight
2000
2001 9
2002
2003 10
2005 10.2
2006
2008
200X
2016
11. History …
1988 6
1989 Utlbstat/utlestat
1990 joined
1991
1992 7 Waits Waits
1993 Patrol vs M2
1994 Tcl/Tk Europe Car
1995 Tcl/Tk waits
1996
1997 8
1998 Statspack 8.1.6 top waits
1999 Spotlight
2000 Statspack 9iR2 top events
2001 9
2002 design OEM 10
2003 10
2005 10.2
2006
2008
200X
2016
12. History …
1988 6
1989 Utlbstat/utlestat
1990 joined
1991
1992 7 Waits Waits
1993 Patrol vs M2
1994 Tcl/Tk Europe Car
1995 Tcl/Tk waits
1996
1997 8
1998 Statspack 8.1.6 top waits
1999 Spotlight
2000 Statspack 9iR2 top events
2001 9
2002 design OEM 10
2003 10 OEM 10
2005 10.2 Top Activity
2006
2008
200X
2016
13. History …
1988 6
1989 Utlbstat/utlestat
1990 joined
1991
1992 7 Waits Waits
1993 Patrol vs M2
1994 Tcl/Tk Europe Car
1995 Tcl/Tk waits
1996
1997 8
1998 Statspack 8.1.6 top waits
1999 Spotlight
2000 Statspack 9iR2 top events
2001 9
2002 design OEM 10
2003 10 OEM 10
2005 10.2 Top Activity
2006 Ashmon
2008 DB Optimizer
200X YaaMs Delphix
2016
14. History …
1988 6
1989 Utlbstat/utlestat
1990 joined
1991
1992 7 Waits Waits
1993 Patrol vs M2
1994 Tcl/Tk Europe Car
1995 Tcl/Tk waits
1996
1997 8
1998 Statspack 8.1.6 top waits
1999 Spotlight
2000 Statspack 9iR2 top events
2001 9
2002 design OEM 10
2003 10 OEM 10
2005 10.2 Top Activity
2006 Ashmon
2008 DB Optimizer
200X YaaMs Delphix
2016 Amazon
15. Computer Performance
1. Interactive
• Opaque: Static, idiosyncrasies
Vs
• Fun : Graphic , informative
1. Sampling
• Counters and ratios
Vs
• Waits and sampling
1. Graphics
• Spaghetti on the wall
Vs
• Intelligence in the interface
16. Computer Performance
1. Interactive
• Opaque: Static, idiosyncrasies
Vs
• Fun : Graphic , informative
1. Sampling
• Counters and ratios
Vs
• Waits and sampling
1. Graphics
• Spaghetti on the wall
Vs
• Intelligence in the interface
17. Computer Performance
1. Interactive
• Opaque: Static, idiosyncrasies
Vs
• Fun : Graphic , informative
1. Sampling
• Counters and ratios
Vs
• Waits and sampling
1. Graphics
• Spaghetti on the wall
Vs
• Intelligence in the interface
21. The journey of simplicity
1. Seems simple
“When you start looking at a problem and it seems
really simple, you don’t really understand the
complexity of the problem.” – Steve Jobs
22. The journey of simplicity
1. Seems simple
2. Realize it’s complex
23. The journey of simplicity
1. Seems simple
2. It’s complex
3. Create complex solution
“Then you get into the problem, and you see
that it’s really complicated, and you come up
with all these convoluted solutions. That’s sort
of the middle, and that’s where most people
stop.” – Steve Jobs
24. The journey of simplicity
1. Seems simple
2. It’s complex
3. Complex solution
4. Complex solution is bad
25. The journey of simplicity
1. Seems simple
2. It’s complex
3. Complex solution
4. Complex is bad
5. Simple powerful is hard
“But the really great person will keep on going
and find the key, the underlying principle of the
problem — and come up with an elegant, really
beautiful solution that works.” – Steve Jobs
26. Simple can be harder
than complex.
You have to work hard
to get your thinking clean
to make it simple.
41. Utlbstat/Utlestat …
•Intrusive
•Overwhelming
•Ratios & Averages
rem $Header: utlbstat.sql 26-feb-96.19:20:51 gpongrac Exp
Rem Copyright (c) 1988, 1996 by Oracle Corporation
Rem NAME
REM UTLBSTAT.SQL
Rem MODIFIED
Rem khailey 03/15/99 - add current user fields to
Rem jloaiza 10/14/95 - add tablespace size
Rem jloaiza 09/19/95 - add waitstat
Rem jloaiza 09/04/95 - add per second and backgro
Rem drady 09/09/93 - merge changes from branch
Rem drady 03/22/93 - merge changes from branch
Rem drady 08/24/93 - bug 173918
Rem drady 03/04/93 - fix bug 152986
Rem glumpkin 11/16/92 - Renamed from UTLSTATB.SQL
Rem glumpkin 10/19/92 - Renamed from BSTAT.SQL
Rem jloaiza 01/07/92 - rework for version 7
Rem mroberts 08/16/91 - fix view for v7
Rem rlim 04/29/91 - change char to varc
Rem Laursen 01/01/91 - V6 to V7 merge
Rem Loaiza 04/04/89 - fix run dates to minutes inst
Rem Martin 02/22/89 - Creation
Rem Jloaiza 02/23/89 - changed table names, added da
Rem
insert into stats$begin_event select * from v$system_even
insert into stats$begin_roll select * from v$rollstat;
insert into stats$begin_file select * from stats$file_vie
insert into stats$begin_dc select * from v$rowcache;
insert into stats$begin_stats select * from v$sysstat;
insert into stats$begin_lib select * from v$librarycache;
insert into stats$begin_latch select * from v$latch;
83. Without Reading a Manual
•Handspring’s site crashed Nov 25, 1999
•Biggest Sales Day of the Year
•Library cache latch contention
•No DBAs
•Downloaded Quest’s Spotlight
•Installed and Identified problem with Minutes
•Solution in code fix
91. Sampling vs Counters
•Given a wait bottleneck
•Which User
•Which SQL
•What object / file / block
•Not feasible with counters
•Easy and cheap with Sampling : Multi-dimensional
92. Before ASH:Before ASH:
• Sessions v$sesstat, v$session_event
• # sessions x (# wait events + statistics)
• Example (150 x (800+200) = 150,000 )
• SQL v$sql
• Could be 10000s
• Takes out latches that compete with other sql executions
• Objects V$segstat
• Could be 1000s of objects
• Files v$filestat
Expensive !
120. 55 65 7560 70 80
1
Original Engineering data
2
3
““damages atdamages at
the hottestthe hottest
and coldestand coldest
Temperature”Temperature”
Would you launch?
126. 1. Y-Axis amount of damage (not number of damage)
2. Include successes *
55 65 7560 70 80
4
8
12
Clearer
* Only external temperatures were known not the
temperature of the solid rocket boosters
Be accurate enough
127. 1. Y-Axis amount of damage (not number of damage)
2. Include successes
3. Mark Differences
55 65 7560 70 80
4
8
12
Clearer
128. 1. Y-Axis amount of damage (not number of damage)
2. Include successes
3. Mark Differences
4. Normalize same temp
55 65 7560 70 80
4
8
12
Clearer
129. 1. Y-Axis amount of damage (not number of damage)
2. Include successes
3. Mark Differences
4. Normalize same temp
55 65 7560 70 80
4
8
12
Clearer
Damage on
every flight
below 65
No damage on
every flight
above 75
130. 1. Y-Axis amount of damage (not number of damage)
2. Include successes
3. Mark Differences
4. Normalize same temp
55 65 7560 70 80
4
8
12
Clearer
Known
World
131. 1. Y-Axis amount of damage (not number of damage)
2. Include successes
3. Mark Differences
4. Normalize same temp
5. Scale known vs unknown
55 65 7560 70 80
4
8
12
4
8
12
30 40 5035 45
XX
Clearer
136. Counties in US
> 3000 Counties
> 50 pages
“The humans … are exceptionally
good at parsing visual information.”
Knowledge representation in cognitive science. Westbury, C. & Wilensky, U. (1998)
142. Imagine Trying to Drive your Car
And is updated once and hourAnd is updated once and hour
Or would you like it toOr would you like it to
look …look …
Would you want your dashboard to look like :Would you want your dashboard to look like :
143. If you are not tuning for time, you are
wasting time
152. Summary
•Textual statistics – difficult to parse
•Pretty pictures misleading
•Goal clear graphics powerful
Simple can be harder
than complex.
You have to work hard
to get your thinking clean
to make it simple.
Prototype & Iterate
Kylelf@gmail.com
http://kylehailey.com
Have you ever been hiking in the Sierras ?
I went hiking in Yosemite by myself.
I was friends with one of the park rangers in Yosemite.
She love to hike and she always hiked off trail.
She told me about a beautiful lake off trail that would be wonderful to hike to.
The lake was just on the other side of the mountain crest from where we were.
She gave me a topographic map to use.
Have you ever used a topographic map?
It’s a map that shows elevations with contour lines.
Each line denotes say 50’ of elevation change.
The more lines together closer together the steeper the terrain.
I used this map to plot out a course to the lake that didn’t have cliffs or other obstacles.
I managed to make it to the top of the mountain crest and when there I could see the beautiful lake below way off any trail.
From where I was it was a steep descent of 300 feet to the lake. All approaches looked the same on the topographic map.
As I approached the lake it got steeper and steeper and steeper.
I finally found my self on a vertial face with no way to go down father
And unsure if I could even climb back up. I was stuck.
Then I thought “if I got here with a big back pack on, I can certainly climb back up without it!”
I gingerly undid the clips and slid my backpack off my back.
Swoosh
It went down the rock face.
Unbeknownst to me, there was a snow ramp at the bottom of the clift left over from the winter.
My pack hit the snow ramp at full force and went shooting out into the middle of the lake.
Here I was like at 8pm at on a late summer’s dusk in the mountains at 11’000 feet way off train after
a day of hiking and my backpack with my foot, shelter, warm clothing was in the middle of a lake 100-200 feet below.
Lucky for me my backpack floated and before long had floated to the side of the lake.
I went back up tried a different path down and made it.
But it just goes to show that the user interface of this particular topographic map didn’t distinguish between an impenetrable 200 feet and a navigat-able 200 feet drop.
Hi, my names Kyle Hailey, and I love working with user interface s that help me navigate the world.
I was taking the bus last week and looked around
In the row in front of me every one of was on the phones
All of those people on their phones where on photo sights like Instagram
It’s amazing how online experience is moving towards photos and images
I noticed a couple of years a go on Facebook how quotes overlaid on a photo
Would be shard many more times than just text quotes
A computer or a program or a database can be challenging to get started with
The MacIntosh came out in 1984
1984 was the year I went to college
And my school Cornell got bunches of them for the computer labs
It was great
I just sat down without a manual for the frist time and I was able to work
Mind blowing after starting on a teletype computer 2 years earlier
The monitor of Roger Saunders has been around since 1991. See Roger's page
The idea to add a graphic interface came up while working at the Perot/Europecar site in 1993. At the time I think it was the largest UNIX site in terms of users with 1500-3000 concurrent users. Europecar was also one of the first production UNIX sites on parallel server having 3 nodes with 1.5 Gig RAM and 12 cpus each. At the time that was pretty impressive.
At the site was a support person from Sequent, Jan Simon Pendry. He basically rewrote the Perot/Europecar benchmark not previous knowing Oracle. The rewrite used proc that could be generated off Oracle trace files. He also corrected Sequent UNIX kernel bugs and handle basic Sequent support. In between all those tasks he put together a graphic monitor in a week for Oracle using tcl/tk. I had never heard of tcl/tk but I was impressed and kept the idea in the back of my mind. I talked to various people over the next two years saying wouldn't it be neat to put a graphic monitor together (especially with Rogers monitor as the base). I never had time myself because of doing phone support and no one else took the baton.
Then in the fall of 1995 I started spending about 2 weeks a month at Digital Europe benchmarking. Of course the benchmarks never allocated enough time and time became an enviable commodity. The big problem with tuning was finding the problems fast and easily. Lots of people have put sqlpackages together basically being more efficeint forms of bstat/estat. The problem at that point became trying to anaylze all the output. This is fine when I have the time and when I know about the application, but in the benchmarks often the client was not even there so I had no idea what the application did, and time was essential, because there was never enough. It was at that point that I decided to put the graphic interface together myself. I have been quite happy with the monitor at bench marks, but not being a 'real' programmer myself maybe someone can see what the idea is and take it farther.
The monitor of Roger Saunders has been around since 1991. See Roger's page
The idea to add a graphic interface came up while working at the Perot/Europecar site in 1993. At the time I think it was the largest UNIX site in terms of users with 1500-3000 concurrent users. Europecar was also one of the first production UNIX sites on parallel server having 3 nodes with 1.5 Gig RAM and 12 cpus each. At the time that was pretty impressive.
At the site was a support person from Sequent, Jan Simon Pendry. He basically rewrote the Perot/Europecar benchmark not previous knowing Oracle. The rewrite used proc that could be generated off Oracle trace files. He also corrected Sequent UNIX kernel bugs and handle basic Sequent support. In between all those tasks he put together a graphic monitor in a week for Oracle using tcl/tk. I had never heard of tcl/tk but I was impressed and kept the idea in the back of my mind. I talked to various people over the next two years saying wouldn't it be neat to put a graphic monitor together (especially with Rogers monitor as the base). I never had time myself because of doing phone support and no one else took the baton.
Then in the fall of 1995 I started spending about 2 weeks a month at Digital Europe benchmarking. Of course the benchmarks never allocated enough time and time became an enviable commodity. The big problem with tuning was finding the problems fast and easily. Lots of people have put sqlpackages together basically being more efficeint forms of bstat/estat. The problem at that point became trying to anaylze all the output. This is fine when I have the time and when I know about the application, but in the benchmarks often the client was not even there so I had no idea what the application did, and time was essential, because there was never enough. It was at that point that I decided to put the graphic interface together myself. I have been quite happy with the monitor at bench marks, but not being a 'real' programmer myself maybe someone can see what the idea is and take it farther.
Graphs had different scales, hard to compare values in one graph to another. Different scale was fine for v$sysstat where statistics were unrelated or orders of magnitude different in scale. Waits on the other hand were all measured in the same units (centi-seconds). It was natural to make all graphs have the same scale on the axis.
Background waits – unnecessary to display
Idle Waits – unnecessary to display
Extraneous waits, too many graphs. Each new wait was a new graph and the amount of graphs could be staggering. I ended up implementing a double click command that would kill any unwanted graphs ( sort of like a video game point and shoot)
Didn’t need counts, ie the frequency of waits, and concentrated on the amount of time waited.
Fast install
Moving parts – even when not connected
Non-Oracle Experts could use it
The software was written in Perl. They used a random number generator to generate random order numbers. Once a random number between 1 and 100,000,000 had been generated then the order number was looked up in the database to see if it existed before being used. This had its own problems such as duplicate keys because of the non atomic nature of the operation, but the fatal blow came from a perl bug that actually only created 15,000 unique numbers in the requested number space of 1 to 100,000,000. Once the 15,000th order was hit, then every usersn spent their time generating order numbers and looking them up in the database. Since these queries weren’t using bind variables there was severe contention on the library cache latch, but the real problem wasn’t bind variables, it was the flaw in the application code. Spotlight pointed this out clearly and quickly to a group of coders and system administrators who had no Oracle experience.
The bulk of the presentaiton is on ideas presented by Edward Tufte in his books
But I will also tie in breifly one industry example (or more if I go too fast)
The O-rings of the solid rocket boosers were not designed to erode.
Erosion was a clue that something was wrong.
Erosion was not something from which safety could be inferred
- Richard Feynman
The O-rings of the solid rocket boosers were not designed to erode.
Erosion was a clue that something was wrong.
Erosion was not something from which safety could be inferred
- Richard Feynman