|
(格式比较难看,可以直接下载附件看,或者哪位DX能说明一下如何格式化文本)
重新测试了一把,因为环境被人拿走用了一段时间,所以数据库重建了,这是按以前的环境设置做的测试报告:
Load Profile
~~~~~~~~~~~~ Per Second Per Transaction
--------------- ---------------
Redo size: 1,876,202.75 1,003.83
Logical reads: 39,885.03 21.34
Block changes: 12,530.13 6.70
Physical reads: 0.67 0.00
Physical writes: 638.13 0.34
User calls: 2,998.87 1.60
Parses: 157.07 0.08
Hard parses: 0.11 0.00
Sorts: 888.65 0.48
Logons: 0.00 0.00
Executes: 13,308.98 7.12
Transactions: 1,869.04
% Blocks changed per Read: 31.42 Recursive Call %: 85.99
Rollback per transaction %: 0.00 Rows per Sort: 0.17
Instance Efficiency Percentages (Target 100%)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Buffer Nowait %: 99.98 Redo NoWait %: 99.99
Buffer Hit %: 100.00 In-memory Sort %: 100.00
Library Hit %: 99.98 Soft Parse %: 99.93
Execute to Parse %: 98.82 Latch Hit %: 99.30
Parse CPU to Parse Elapsd %: 30.73 % Non-Parse CPU: 99.47
Shared Pool Statistics Begin End
------ ------
Memory Usage %: 20.23 20.74
% SQL with executions>1: 73.37 80.78
% Memory for SQL w/exec>1: 71.44 82.99
Top 5 Timed Events
~~~~~~~~~~~~~~~~~~ % Total
Event Waits Time (s) Ela Time
-------------------------------------------- ------------ ----------- --------
latch free 90,143 722 50.11
log file sync 240,688 355 24.61
CPU time 336 23.32
log file parallel write 162,024 10 .66
LGWR wait for redo copy 55,611 8 .54
-------------------------------------------------------------
先设置_wait_for_sync为false,把log file sync等待给去掉,性能有所提高(因为少了一个负担),但latch冲突未解决,在所有等待事件中占了90%以上:
Load Profile
~~~~~~~~~~~~ Per Second Per Transaction
--------------- ---------------
Redo size: 1,893,089.81 941.95
Logical reads: 45,715.06 22.75
Block changes: 12,602.65 6.27
Physical reads: 1.47 0.00
Physical writes: 653.24 0.33
User calls: 3,221.75 1.60
Parses: 227.76 0.11
Hard parses: 0.08 0.00
Sorts: 954.04 0.47
Logons: 0.00 0.00
Executes: 14,984.16 7.46
Transactions: 2,009.75
% Blocks changed per Read: 27.57 Recursive Call %: 86.46
Rollback per transaction %: 0.00 Rows per Sort: 0.26
Instance Efficiency Percentages (Target 100%)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Buffer Nowait %: 100.00 Redo NoWait %: 99.99
Buffer Hit %: 100.00 In-memory Sort %: 100.00
Library Hit %: 99.99 Soft Parse %: 99.97
Execute to Parse %: 98.48 Latch Hit %: 99.36
Parse CPU to Parse Elapsd %: 25.56 % Non-Parse CPU: 99.25
Shared Pool Statistics Begin End
------ ------
Memory Usage %: 19.79 20.33
% SQL with executions>1: 69.82 78.01
% Memory for SQL w/exec>1: 69.89 81.79
Top 5 Timed Events
~~~~~~~~~~~~~~~~~~ % Total
Event Waits Time (s) Ela Time
-------------------------------------------- ------------ ----------- --------
latch free 154,295 1,258 66.65
CPU time 577 30.53
LGWR wait for redo copy 81,648 22 1.18
log file parallel write 261,890 8 .40
log file switch completion 180 7 .37
把_wait_for_sync参数取消,设置_kgl_latch_count为11,继续测试(和最初的测试相比,看不出有什么变化):
Load Profile
~~~~~~~~~~~~ Per Second Per Transaction
--------------- ---------------
Redo size: 1,772,567.03 948.93
Logical reads: 42,779.00 22.90
Block changes: 11,725.92 6.28
Physical reads: 1.40 0.00
Physical writes: 629.41 0.34
User calls: 2,988.61 1.60
Parses: 217.69 0.12
Hard parses: 0.07 0.00
Sorts: 884.79 0.47
Logons: 0.00 0.00
Executes: 14,013.93 7.50
Transactions: 1,867.96
% Blocks changed per Read: 27.41 Recursive Call %: 86.53
Rollback per transaction %: 0.00 Rows per Sort: 0.13
Instance Efficiency Percentages (Target 100%)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Buffer Nowait %: 100.00 Redo NoWait %: 99.99
Buffer Hit %: 100.00 In-memory Sort %: 100.00
Library Hit %: 99.99 Soft Parse %: 99.97
Execute to Parse %: 98.45 Latch Hit %: 99.43
Parse CPU to Parse Elapsd %: 27.16 % Non-Parse CPU: 99.26
Shared Pool Statistics Begin End
------ ------
Memory Usage %: 19.74 20.26
% SQL with executions>1: 69.11 76.90
% Memory for SQL w/exec>1: 68.11 80.15
Top 5 Timed Events
~~~~~~~~~~~~~~~~~~ % Total
Event Waits Time (s) Ela Time
-------------------------------------------- ------------ ----------- --------
latch free 134,963 1,114 49.58
CPU time 550 24.50
log file sync 384,795 540 24.04
log file parallel write 261,858 15 .65
LGWR wait for redo copy 82,348 12 .52
个人的一点看法:
1、latch冲突和log file sync等待没有关系,去掉了log file sync,冲突依然很高
2、biti说的对,和shared pool应该没有关系,其实library cache、enqueue、dml lock等相关的latch冲突都很高,只是恰好library cache latch排在第一位而已,所以调整_kgl_latch_count参数没有效果也就很正常了
3、感觉象是cpu的瓶颈,4个cpu实在处理不过来20个连续施加压力的进程了,sar和vmstat命令显示每个cpu的run-queue在3左右,不能理解的是系统的idle在30%左右。
4、shared sql避免了重复parse语句的负担,不过也增加了冲突的可能性,因为执行sql语句要加锁,尤其是在会话比较多而sql语句比较少的时候,冲突尤为明显,本来想在不同进程的sql语句中加入和连接相关信息防止sql共享,从而验证以上的想法,不过测试工具不支持,只好作罢! |
|