一、高併發的dml引發問題:
1,itl等待 (重建索引、增加init trans、加大pct free(索引只是重建後當時有效))
2,右增長索引的enq-index contention(重建索引減少碎片進而減少找空塊的時間、控制併發、刪除無用索引、或者改造為hash分割槽索引)
通過以下方法啟用索引**增強性優化,來緩解enq: tx – index contention爭用
to enable this fix set event 43822 to level 1
命令:alter system set events '43822 trace name context forever,level 1';
3,高併發insert導致的enq-hw (控制併發、刪除無用索引、或者改造為hash分割槽表/索引)
二、高併發查詢引發問題:
1,cache buffer chains latch (優化sql減少buffer gets; 如果競爭是在branch block可以改造為hash分割槽索引;如索引碎片多,考慮重建。特別是consistent gets過多的情況)
2,cursor pin s (拆分高併發的sql + hints)
3,library cache (shared pool latch) (避免hard parse、增加shared pool size、通過增加shared pool size增加子池的個數,進而增加shared pool latch的個數)
三、跟redo相關的問題
1,log file sync /log file parallel write (使用filesystem的卷的資料庫啟用odm。 ics 啟用後 log file parallel write 由0.89變成0.32ms)
2,_use_adaptive_log_file_sync=false (將log file sync的機制由polling-10ms(11.2.0.3之後開始為true)改造為原來的特性:post/wait-1ms)
(ics庫調整了_use_adaptive_log_file_sync 引數後,ics生產庫的log file sync的等待時間明顯降低,從10ms降低到不到1ms。)
3,control file sequential read (netlife重建controlfile;增加online redo log file size為2g(目的:減少切換頻率和產生的redo log個數,進而使得controlfile中乙個block能夠容納更多log entry;並且減少gap發生的概率);級聯dg:生產-> 同城 -> 上海 )
4,16mb =< log_buffer <= min(128mb, max(auto_size,16m))
300mb =< redolog_file_size <= 1024mb
(auto_size公式是 (number of strand) * (size of per stands) = (cpu_count/16) * (cpu_count*128)k , 化簡之後等於(cpu_count的平方除以128)兆,即 power(cpu_count,2)/128 m)
四、連線相關問題:
1,資料庫processes與中介軟體連線池相關問題 (initial - max)
2,listener queuesize (調大 64、128 。。。)(同時確保主機引數的tcp_conn_req_max_q >= listener queuesize,減少或消除tcp listener drop)
五、分割槽表清理問題:
審視當前的清理方案是否有風險,比如清理時間過長。
global 索引是否可以修改為local 索引
global 索引是否可以drop
global索引是否需要定期重建
清理時長,如果時間太長,是否需要增加並行
提高資料庫併發效能概要
1 減少大事物操作 乙個包含很多sql語句 牽涉很多表的大事物操作鎖住的資源也會多 盡量不使用表級排他鎖,而是用行級鎖 又因為鎖一般是由資料庫根據你的 sql自動分配,所以要注意sql的寫法。比如select into b from a該操作會建立b表,並對b表加表鎖。2 與降低鎖的粒度異曲同工。2...
提高資料庫併發效能概要
3 多資料來源 多庫 4 樂觀鎖 5 臨時表 6 快取 7 資料庫集群 8 讀寫分離策略 9 sql優化 10 正確使用索引 減少大事物操作 乙個包含很多sql語句 牽涉很多表的大事物操作鎖住的資源也會多 盡量不使用表級排他鎖,而是用行級鎖 又因為鎖一般是由資料庫根據你的 sql自動分配,所以要注意...
資料庫高併發問題
多執行緒多程序 計算密集型任務 使用多程序,因為能python有gil,多程序可以利用上cpu多核優勢 io密集型任務 使用多執行緒,做io切換節省任務執行時間 併發 乙個專案剛開始的時候是為了實現基本功能,隨著版本和功能的迭代,大資料和高併發成了軟體設計必須考慮的問題 本質很簡單,乙個是慢,乙個是...