RE: Increasing row retrieving speed via net8
- From: "Mark W. Farnham" <mwf@xxxxxxxx>
- To: <grzegorzof@xxxxxxxxxx>, <oracle-l@xxxxxxxxxxxxx>
- Date: Wed, 11 Apr 2012 15:16:33 -0400
It seems to me that running 2, 3, ..., n sessions in parallel and drawing the
curve of total throughput would tell you whether you have remaining actual
headroom in the network bandwidth.
You might want to make an actual copy of something as your rowsource so you can
get it clean in cache or at least be sure you're not waiting for concurrency
issues or block cleanouts or undo references or anything else that might inject
elapsed time apart from the thing you are intending to test.
"List Price" bandwidth, actual total bandwidth, and currently available
headroom can be very different things.
Good luck,
mwf
-----Original Message-----
From: oracle-l-bounce@xxxxxxxxxxxxx [mailto:oracle-l-bounce@xxxxxxxxxxxxx] On
Behalf Of GG
Sent: Wednesday, April 11, 2012 2:31 PM
To: oracle-l@xxxxxxxxxxxxx
Subject: Increasing row retrieving speed via net8
Hi,
I'm doing large table processing (row fetching) via Net8 , remote client
using JDBC oracle client .
Did some testing using snapper and two VMs with Oracle 11.2.0.2 .
Got table T with 5M rows avg row length is 104 (its CATS from DBA_SOURCE and
doing simple select * from t) .
First I used BEQ (local connection :)) protocol as a reference :
SQL> @snapper all 5 1 145
Sampling SID 145 with interval 5 seconds, taking 1 snapshots...
setting stats to all due to option = all
-- Session Snapper v3.52 by Tanel Poder @ E2SN ( http://tech.e2sn.com )
----------------------------------------------------------------------------------------------------------------------------------------------------
SID, USERNAME , TYPE,
STATISTIC ,
DELTA, HDELTA, HDELTA/SEC, %TIME, GRAPH
----------------------------------------------------------------------------------------------------------------------------------------------------
145, GG , STAT, user
calls ,
1319, 1.32k, 263.8,
145, GG , STAT, session logical
reads , 23498,
23.5k, 4.7k,
145, GG , STAT, CPU used when call
started , 27,
27, 5.4,
145, GG , STAT, CPU used by this
session , 27,
27, 5.4,
145, GG , STAT, DB
time ,
43, 43, 8.6,
145, GG , STAT, user I/O wait
time , 2,
2, .4,
145, GG , STAT, non-idle wait
time , 15,
15, 3,
145, GG , STAT, non-idle wait
count , 10091,
10.09k, 2.02k,
145, GG , STAT, physical read total IO
requests , 698, 698, 139.6,
145, GG , STAT, physical read total multi block
requests , 687, 687, 137.4,
145, GG , STAT, physical read total
bytes , 91127808, 91.13M,
18.23M,
145, GG , STAT, cell physical IO interconnect
bytes , 91127808, 91.13M, 18.23M,
145, GG , STAT, consistent
gets , 23498,
23.5k, 4.7k,
145, GG , STAT, consistent gets from
cache , 11075, 11.08k,
2.22k,
145, GG , STAT, consistent gets -
examination , 11075,
11.08k, 2.22k,
145, GG , STAT, consistent gets
direct , 12423,
12.42k, 2.48k,
145, GG , STAT, physical
reads , 11124,
11.12k, 2.22k,
145, GG , STAT, physical reads
direct , 11124,
11.12k, 2.22k,
145, GG , STAT, physical read IO
requests , 698,
698, 139.6,
145, GG , STAT, physical read
bytes , 91127808,
91.13M, 18.23M,
145, GG , STAT, Number of read IOs
issued , 698, 698,
139.6,
145, GG , STAT, no work - consistent read
gets , 1348, 1.35k, 269.6,
145, GG , STAT, cleanouts only - consistent read
gets , 11073, 11.07k, 2.21k,
145, GG , STAT, immediate (CR) block cleanout
applications , 11073, 11.07k, 2.21k,
145, GG , STAT, commit txn count during
cleanout , 11073, 11.07k, 2.21k,
145, GG , STAT, cleanout - number of ktugct
calls , 11073, 11.07k, 2.21k,
145, GG , STAT, table scan rows
gotten , 659500,
659.5k, 131.9k,
145, GG , STAT, table scan blocks
gotten , 12421,
12.42k, 2.48k,
145, GG , STAT, buffer is not pinned
count , 12366, 12.37k,
2.47k,
145, GG , STAT, bytes sent via SQL*Net to
client , 70786316, 70.79M, 14.16M,
145, GG , STAT, bytes received via SQL*Net from
client , 26420, 26.42k, 5.28k,
145, GG , STAT, SQL*Net roundtrips to/from
client , 1321, 1.32k, 264.2,
145, GG , TIME, DB
CPU ,
334948, 334.95ms, 66.99ms, 6.7%, |@ |
145, GG , TIME, sql execute elapsed
time , 354361, 354.36ms,
70.87ms, 7.1%, |@ |
145, GG , TIME, DB
time ,
388813, 388.81ms, 77.76ms, 7.8%, |@ |
145, GG , WAIT, direct path
read , 20519,
20.52ms, 4.1ms, .4%, | |
145, GG , WAIT, SQL*Net message to
client , 7278, 7.28ms,
1.46ms, .1%, | |
145, GG , WAIT, SQL*Net more data to
client , 120134, 120.13ms,
24.03ms, 2.4%, |@ |
145, GG , WAIT, SQL*Net message from
client , 4023802, 4.02s,
804.76ms, 80.5%, |@@@@@@@@ |
-- End of Stats snap 1, end=2012-04-11 09:18:15, seconds=5
---------------------------------------------------------------------------------
Active% | SQL_ID | EVENT | WAIT_CLASS
---------------------------------------------------------------------------------
9% | 89km4qj1thh13 | SQL*Net more data to client | Network
5% | 89km4qj1thh13 | ON CPU | ON CPU
-- End of ASH snap 1, end=2012-04-11 09:18:15, seconds=5, samples_taken=43
so if I interpreting this correctly we can fetch like:
131.9k rows per sec which is good
Now switching to Net8 with arraysize 15:
SQL> @snapper all 5 1 149
Sampling SID 149 with interval 5 seconds, taking 1 snapshots...
setting stats to all due to option = all
-- Session Snapper v3.52 by Tanel Poder @ E2SN ( http://tech.e2sn.com )
----------------------------------------------------------------------------------------------------------------------------------------------------
SID, USERNAME , TYPE,
STATISTIC ,
DELTA, HDELTA, HDELTA/SEC, %TIME, GRAPH
----------------------------------------------------------------------------------------------------------------------------------------------------
149, GG , STAT, user
calls ,
12036, 12.04k, 2.41k,
149, GG , STAT, session logical
reads , 18097,
18.1k, 3.62k,
149, GG , STAT, CPU used when call
started , 67,
67, 13.4,
149, GG , STAT, CPU used by this
session , 67,
67, 13.4,
149, GG , STAT, DB
time ,
67, 67, 13.4,
149, GG , STAT, user I/O wait
time , 1,
1, .2,
149, GG , STAT, non-idle wait
time , 26,
26, 5.2,
149, GG , STAT, non-idle wait
count , 12923,
12.92k, 2.58k,
149, GG , STAT, physical read total IO
requests , 214, 214, 42.8,
149, GG , STAT, physical read total multi block
requests , 211, 211, 42.2,
149, GG , STAT, physical read total
bytes , 27951104, 27.95M,
5.59M,
149, GG , STAT, cell physical IO interconnect
bytes , 27951104, 27.95M, 5.59M,
149, GG , STAT, consistent
gets , 18098,
18.1k, 3.62k,
149, GG , STAT, consistent gets from
cache , 2843, 2.84k,
568.6,
149, GG , STAT, consistent gets -
examination , 2843,
2.84k, 568.6,
149, GG , STAT, consistent gets
direct , 15254,
15.25k, 3.05k,
149, GG , STAT, physical
reads , 3428,
3.43k, 685.6,
149, GG , STAT, physical reads
direct , 3428,
3.43k, 685.6,
149, GG , STAT, physical read IO
requests , 215,
215, 43,
149, GG , STAT, physical read
bytes , 28082176,
28.08M, 5.62M,
149, GG , STAT, Number of read IOs
issued , 216,
216, 43.2,
149, GG , STAT, no work - consistent read
gets , 12387, 12.39k, 2.48k,
149, GG , STAT, cleanouts only - consistent read
gets , 2847, 2.85k, 569.4,
149, GG , STAT, immediate (CR) block cleanout
applications , 2848, 2.85k, 569.6,
149, GG , STAT, commit txn count during
cleanout , 2848, 2.85k, 569.6,
149, GG , STAT, cleanout - number of ktugct
calls , 2848, 2.85k, 569.6,
149, GG , STAT, table scan rows
gotten , 180270,
180.27k, 36.05k,
149, GG , STAT, table scan blocks
gotten , 15225,
15.23k, 3.05k,
149, GG , STAT, buffer is not pinned
count , 15147, 15.15k,
3.03k,
149, GG , STAT, bytes sent via SQL*Net to
client , 22665295, 22.67M, 4.53M,
149, GG , STAT, bytes received via SQL*Net from
client , 238900, 238.9k, 47.78k,
149, GG , STAT, SQL*Net roundtrips to/from
client , 11944, 11.94k, 2.39k,
149, GG , TIME, DB
CPU ,
1566761, 1.57s, 313.35ms, 31.3%, |@@@@ |
149, GG , TIME, sql execute elapsed
time , 494193, 494.19ms,
98.84ms, 9.9%, |@ |
149, GG , TIME, DB
time ,
1566724, 1.57s, 313.34ms, 31.3%, |@@@@ |
149, GG , WAIT, direct path
read , 9762,
9.76ms, 1.95ms, .2%, | |
149, GG , WAIT, SQL*Net message to
client , 16290, 16.29ms,
3.26ms, .3%, | |
149, GG , WAIT, SQL*Net more data to
client , 231066, 231.07ms,
46.21ms, 4.6%, |@ |
149, GG , WAIT, SQL*Net message from
client , 3640845, 3.64s,
728.17ms, 72.8%, |@@@@@@@@ |
-- End of Stats snap 1, end=2012-04-11 09:36:35, seconds=5
---------------------------------------------------------------------------------
Active% | SQL_ID | EVENT | WAIT_CLASS
---------------------------------------------------------------------------------
7% | 89km4qj1thh13 | ON CPU | ON CPU
-- End of ASH snap 1, end=2012-04-11 09:36:35, seconds=5, samples_taken=42
here we can have like 36.05k rows per seconds .
Now with fetch size 500 I can do:
SQL> @snapper all 5 1 149
Sampling SID 149 with interval 5 seconds, taking 1 snapshots...
setting stats to all due to option = all
-- Session Snapper v3.52 by Tanel Poder @ E2SN ( http://tech.e2sn.com )
----------------------------------------------------------------------------------------------------------------------------------------------------
SID, USERNAME , TYPE,
STATISTIC ,
DELTA, HDELTA, HDELTA/SEC, %TIME, GRAPH
----------------------------------------------------------------------------------------------------------------------------------------------------
149, GG , STAT, user
calls ,
726, 726, 145.2,
149, GG , STAT, session logical
reads , 8640,
8.64k, 1.73k,
149, GG , STAT, CPU used when call
started , 183,
183, 36.6,
149, GG , STAT, CPU used by this
session , 183,
183, 36.6,
149, GG , STAT, DB
time ,
174, 174, 34.8,
149, GG , STAT, user I/O wait
time , 3,
3, .6,
149, GG , STAT, non-idle wait
time , 170,
170, 34,
149, GG , STAT, non-idle wait
count , 5925,
5.93k, 1.19k,
149, GG , STAT, physical read total IO
requests , 434, 434, 86.8,
149, GG , STAT, physical read total multi block
requests , 414, 414, 82.8,
149, GG , STAT, physical read total
bytes , 56483840, 56.48M,
11.3M,
149, GG , STAT, cell physical IO interconnect
bytes , 56483840, 56.48M, 11.3M,
149, GG , STAT, consistent
gets , 8640,
8.64k, 1.73k,
149, GG , STAT, consistent gets from
cache , 1006, 1.01k,
201.2,
149, GG , STAT, consistent gets -
examination , 1006,
1.01k, 201.2,
149, GG , STAT, consistent gets
direct , 7634,
7.63k, 1.53k,
149, GG , STAT, physical
reads , 6911,
6.91k, 1.38k,
149, GG , STAT, physical reads
direct , 6911,
6.91k, 1.38k,
149, GG , STAT, physical read IO
requests , 435,
435, 87,
149, GG , STAT, physical read
bytes , 56614912,
56.61M, 11.32M,
149, GG , STAT, Number of read IOs
issued , 436,
436, 87.2,
149, GG , STAT, no work - consistent read
gets , 6617, 6.62k, 1.32k,
149, GG , STAT, cleanouts only - consistent read
gets , 1016, 1.02k, 203.2,
149, GG , STAT, immediate (CR) block cleanout
applications , 1016, 1.02k, 203.2,
149, GG , STAT, commit txn count during
cleanout , 1016, 1.02k, 203.2,
149, GG , STAT, cleanout - number of ktugct
calls , 1016, 1.02k, 203.2,
149, GG , STAT, table scan rows
gotten , 363000,
363k, 72.6k,
149, GG , STAT, table scan blocks
gotten , 7630,
7.63k, 1.53k,
149, GG , STAT, buffer is not pinned
count , 7630, 7.63k,
1.53k,
149, GG , STAT, bytes sent via SQL*Net to
client , 41730447, 41.73M, 8.35M,
149, GG , STAT, bytes received via SQL*Net from
client , 14500, 14.5k, 2.9k,
149, GG , STAT, SQL*Net roundtrips to/from
client , 726, 726, 145.2,
149, GG , TIME, DB
CPU ,
2018693, 2.02s, 403.74ms, 40.4%, |@@@@ |
149, GG , TIME, sql execute elapsed
time , 1853871, 1.85s,
370.77ms, 37.1%, |@@@@ |
149, GG , TIME, DB
time ,
2018383, 2.02s, 403.68ms, 40.4%, |@@@@ |
149, GG , WAIT, direct path
read , 25985,
25.99ms, 5.2ms, .5%, |@ |
149, GG , WAIT, SQL*Net message to
client , 2854, 2.85ms,
570.8us, .1%, | |
149, GG , WAIT, SQL*Net more data to
client , 1674304, 1.67s,
334.86ms, 33.5%, |@@@@ |
149, GG , WAIT, SQL*Net message from
client , 2222786, 2.22s,
444.56ms, 44.5%, |@@@@@ |
-- End of Stats snap 1, end=2012-04-11 09:31:06, seconds=5
---------------------------------------------------------------------------------
Active% | SQL_ID | EVENT | WAIT_CLASS
---------------------------------------------------------------------------------
30% | 89km4qj1thh13 | SQL*Net more data to client | Network
3% | 89km4qj1thh13 | ON CPU | ON CPU
-- End of ASH snap 1, end=2012-04-11 09:31:06, seconds=5, samples_taken=40
72,6k rows fetched per fetch .
Is there anything to do I can go further with Net8 ?
I mean SDU in 11.2.0.2 defaults to 8k which seems ok .
Considering 100Mbit ethernet speed , I can have like 10Mbytes/per sec so with
1GB table i need ~ 100 sec to transfer that .
So feels like not on the edge yet .
Any ideas ?
Regards
GregG
--
http://www.freelists.org/webpage/oracle-l
--
http://www.freelists.org/webpage/oracle-l
Other related posts: