[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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20190531]如何實現與執行.txt
- [20210926]並行執行計劃疑問.txt並行
- Java多執行緒並行處理任務的實現Java執行緒並行
- [20221018]本地執行與遠端執行.txt
- systemverilog中for/foreach並行執行並行
- WRF WPS多核並行執行並行
- 一行 Python 程式碼實現並行Python並行
- python能實現並行嗎Python並行
- [20210322]seq xargs.txt
- [20190219]那個更快(11g).txt
- join、volatile、newSingleThreadLatch 實現執行緒順序執行thread執行緒
- 26、多執行緒與並行執行緒並行
- [20181120]toad看真實的執行計劃.txt
- 多執行緒並行執行,然後彙總結果執行緒並行
- 利用訊號量實現執行緒順序執行執行緒
- [20230204]執行很慢的分析.txt
- Oracle“並行執行”——監控檢視Oracle並行
- java執行緒實現方式Java執行緒
- 執行緒池的實現執行緒
- 如何實現多執行緒執行緒
- [20200214]xargs與別名.txt
- Docker部署並執行ElasticsearchDockerElasticsearch
- Python並行程式設計(二):多執行緒鎖機制利用Lock與RLock實現執行緒同步Python並行行程程式設計執行緒
- golang runtime實現多核並行任務Golang並行
- [原始碼解析] 模型並行分散式訓練 Megatron (3) ---模型並行實現原始碼模型並行分散式
- 怎樣用一行 Python 程式碼實現並行Python並行
- [Java併發]執行緒的並行等待Java執行緒並行
- [20190111]執行計劃bitmap and.txt
- [20231012]奇怪的執行時長.txt
- [20230508]crack oracle執行檔案.txtOracle
- [20191104]禁止job以及SCHEDULER執行.txt
- [20191215]seq控制執行順序.txt
- [20190510]快速建立執行指令碼.txt指令碼
- [20230224]ssh date執行問題.txt
- Java 執行緒池中的執行緒複用是如何實現的?Java執行緒
- SpringBoot執行緒池和Java執行緒池的實現原理Spring Boot執行緒Java
- 執行緒屏障CyclicBarrier實現原理執行緒
- Java多執行緒的實現Java執行緒