[20190219]xargs -P實現並行執行.txt
[20190219]xargs -P實現並行執行.txt
--//上午做測試,連結http://blog.itpub.net/267265/viewspace-2636342/,我的執行指令碼,使用host read -p 'wait finish...'.
--//這樣很蠻煩,因為許多測試需要5分鐘完成,我必須時不時看看指令碼完成是否完成,非常繁瑣,是否可以透過shell內部的wait等後臺
--//任務完成,自動下一步操作.
--//google : xargs wait ,發現如下連結:
https://unix.stackexchange.com/questions/477971/call-a-command-wait-then-execute-another-command
--//看了許多連結感覺都不是很好,都需要寫shell指令碼.我仔細看了xargs文件,發現都忘了xargs支援-P引數可以實現並行操作.
$ time seq 10 | xargs -I{} -n1 bash -c "sleep {} "
real 0m55.040s
user 0m0.010s
sys 0m0.026s
--//這樣指令碼需要55秒完成.
$ echo {1..10} | sed -e 's/ /+/g' | bc -l
55
$ time seq 10 | xargs -I{} -n1 -P10 bash -c "sleep {} "
real 0m10.008s
user 0m0.010s
sys 0m0.026s
--//如果並行,這樣就需要10秒完成.
--//修改指令碼如下:
$ cat cc.txt
delete from job_times;
commit ;
drop table t purge;
create table t as select rownum id from dual ;
execute sys.dbms_stats.gather_table_stats ( OwnName => user,TabName => 't',Estimate_Percent => NULL,Method_Opt => 'FOR ALL COLUMNS SIZE 1 ',Cascade => True ,No_Invalidate => false);
alter procedure do_work compile ;
alter procedure do_work1 compile ;
host sleep 3
host seq &&1 | xargs -I{} -n1 -P &&1 bash -c "sqlplus -s -l scott/&&2 <<< \"execute do_work(&&3,'null')\" " > /dev/null 2>&1
host sleep 1
create unique index pk_t on t(id);
alter table t modify (id not null);
host seq &&1 | xargs -I{} -n1 -P &&1 bash -c "sqlplus -s -l scott/&&2 <<< \"execute do_work(&&3,'notnull')\" " > /dev/null 2>&1
host sleep 1
host seq &&1 | xargs -I{} -n1 -P &&1 bash -c "sqlplus -s -l scott/&&2 <<< \"execute do_work1(&&3,'id=1_unique_index')\" " > /dev/null 2>&1
host sleep 1
drop index pk_t ;
create index pk_t on t(id);
host seq &&1 | xargs -I{} -n1 -P &&1 bash -c "sqlplus -s -l scott/&&2 <<< \"execute do_work1(&&3,'id=1_index')\" " > /dev/null 2>&1
host sleep 1
alter table t result_cache (mode force);
host seq &&1 | xargs -I{} -n1 -P &&1 bash -c "sqlplus -s -l scott/&&2 <<< \"execute do_work(&&3,'result_cache')\" " > /dev/null 2>&1
host sleep 1
--//因為這樣完成在啟動新的任務,不用時不時檢視.
--//重複測試看看:
SCOTT@book> @ cc.txt 50 book 1e6
....
--//測試結果如下:
SCOTT@book> select method,count(*),round(avg(TIME_ELA),0),sum(TIME_ELA) from job_times group by method order by 3 ;
METHOD COUNT(*) ROUND(AVG(TIME_ELA),0) SUM(TIME_ELA)
-------------------- ---------- ---------------------- -------------
result_cache 50 8542 427111
id=1_unique_index 50 9526 476293
null 50 10761 538056
id=1_index 50 29453 1472659
notnull 50 30639 1531925
--//10g下的測試結果:
SCOTT@test> select method,count(*),round(avg(TIME_ELA),0),sum(TIME_ELA) from job_times group by method order by 3 ;
METHOD COUNT(*) ROUND(AVG(TIME_ELA),0) SUM(TIME_ELA)
-------------------- ---------- ---------------------- -------------
id=1_unique_index 50 4829 241474
notnull 50 33711 1685566
id=1_index 50 34647 1732330
null 50 38203 1910151
--//細節就不再說明了.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2636382/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 並行執行並行
- Java多執行緒並行處理任務的實現Java執行緒並行
- 一個用於實現並行執行的 Java actor 庫並行Java
- 用vc執行緒模擬實現並行演算法 (轉)執行緒並行演算法
- [20190531]如何實現與執行.txt
- [20210926]並行執行計劃疑問.txt並行
- 一行 Python 實現並行化 -- 日常多執行緒操作的新思路Python並行執行緒
- ItermCF的MR並行實現並行
- 實驗-shell執行資料庫命令.TXT資料庫
- [20171225]檢視並行執行計劃注意的問題.txt並行
- p-code 執行(譯)
- 一行 Python 程式碼實現並行Python並行
- 26、多執行緒與並行執行緒並行
- WRF WPS多核並行執行並行
- python能實現並行嗎Python並行
- 多執行緒並行執行,然後彙總結果執行緒並行
- 聊聊執行緒技術與執行緒實現模型執行緒模型
- disruptor如何實現每CPU執行一個執行緒?執行緒
- 利用訊號量實現執行緒順序執行執行緒
- 如何設計並實現一個執行緒安全的 Map ?(下篇)執行緒
- 如何設計並實現一個執行緒安全的 Map ?(上篇)執行緒
- Oracle“並行執行”——監控檢視Oracle並行
- 課程 3: 執行緒與並行執行緒並行
- 如何取得Oracle並行執行的traceOracle並行
- 9i並行執行的限制並行
- 利用並行提高sql執行效率(轉)並行SQL
- java執行緒實現方式Java執行緒
- 如何實現多執行緒執行緒
- Linuxcrontab實現每秒執行Linux
- 多執行緒原理實現執行緒
- 執行緒池的實現執行緒
- Docker部署並執行ElasticsearchDockerElasticsearch
- [原始碼解析] 模型並行分散式訓練 Megatron (3) ---模型並行實現原始碼模型並行分散式
- PHP多程式並行執行php指令碼PHP並行指令碼
- 並行執行任務的Fork/Join框架並行框架
- 並行執行的學習與測試並行
- [Java併發]執行緒的並行等待Java執行緒並行
- Python並行程式設計(二):多執行緒鎖機制利用Lock與RLock實現執行緒同步Python並行行程程式設計執行緒