删除231万数据2-3分钟的过程

这个语句根据ROWID

create or replace procedure delBigTab
(
p_TableName       in    varchar2,
p_Condition       in    VARCHAR2
)
AS
type mycur is ref cursor;
        v_cur     mycur;
v_cur_sql VARCHAR2(2000);
l_sql VARCHAR2(2000);
pragma autonomous_transaction;
n_delete number:=0;
 Type v_rowid is table of varchar2(100) index by binary_integer;
 var_rowid v_rowid;
BEGIN
v_cur_sql :='select rowid from '||p_TableName||' where '||p_Condition||' order by rowid' ;
OPEN v_cur FOR v_cur_sql;
LOOP
FETCH v_cur BULK COLLECT
                INTO var_rowid LIMIT 20000 ;
FORALL i IN 1 .. var_rowid.count
/* DELETE FROM datasync_prc.ax_log_mail WHERE ROWID=var_rowid(i);*/
EXECUTE IMMEDIATE  'delete from '||p_TableName||' where  rowid=:1' USING var_rowid(i);
COMMIT;
EXIT WHEN v_cur%NOTFOUND OR v_cur%NOTFOUND IS NULL;
END LOOP;
CLOSE v_cur;
end;

 

第二个 根据rownum 限制数据量来删除

create or replace procedure delete_big_table(pi_table_name in varchar2,pi_condition in varchar2) is
pragma autonomous_transaction;
lv_delete_sql varchar2(2000);
lv_select_sql varchar2(2000);
ln_delete_num number;
type mycur is ref cursor;
        v_select_cur     mycur;
        v_delete_cur     mycur;
begin
   ln_delete_num:=0;
    lv_select_sql:=' select count(1) from '||trim(pi_table_name)||' where '||pi_condition;
    open v_select_cur for lv_select_sql;
       fetch v_select_cur into ln_delete_num;
    close  v_select_cur;

    lv_delete_sql:=' DELETE '||trim(pi_table_name)||' where rownum<=:num_count and '||pi_condition;
   
    while 1=1 loop
          execute immediate lv_delete_sql using 2000;
          ln_delete_num:=ln_delete_num-2000;
          commit;
          EXIT WHEN  ln_delete_num <=0;
    end loop;

end delete_big_table;

 

测试删除

TABLE_NAME            MAX(NUM_ROWS)
TEMP_WUND_ACTION       2328150

TEMP_WUND_ACTION 复制下面两张表

     analyze table TEMP_WUND_ACTION_01 compute statistics;

     analyze table TEMP_WUND_ACTION_02 compute statistics;

并做分析

TABLE_NAME            MAX(NUM_ROWS)

TEMP_WUND_ACTION_02    2315417
TEMP_WUND_ACTION_01    2315417

 

分别执行

execute delete_big_table('TEMP_WUND_ACTION_01','1=1'); 为166.625秒

execute delBigTab('TEMP_WUND_ACTION_02','1=1');为116.141秒

<think>嗯,用户提到Workbench模型打开速度慢,这可能有多种原因。首先,我需要考虑硬件配置是否足够。Ansys Workbench对CPU、内存和存储的要求比较高,特别是处理大型模型时。如果用户的电脑配置较低,比如内存不足或者使用传统硬盘(HDD),可能会导致加载缓慢。这时候建议检查系统配置,考虑升级硬件,比如换用SSD或者增加内存。 接下来,模型本身的复杂程度也是一个因素。模型中的单元数量、网格密度、接触对设置等都会影响文件大小和加载时间。如果用户处理的是包含大量组件或复杂接触的模型,可能需要简化模型,比如减少不必要的细节或使用子模型技术。 然后,软件设置和文件管理也可能有问题。工作目录如果位于网络驱动器或外部存储设备,读写速度可能受限。建议将项目文件放在本地SSD上,并定期清理临时文件。另外,软件版本过旧可能存在性能问题,升级到最新版本或许有帮助。 还有可能是软件本身的缓存或临时文件积累太多,导致启动变慢。清理临时文件夹,比如在Ansys的安装目录下找到缓存位置并删除旧文件,可能改善情况。此外,多物理场耦合或第三方插件也可能增加加载时间,需要检查是否有不必要的插件运行。 最后,软件冲突或系统兼容性问题也不能忽视。关闭后台运行的其他大型程序,确保系统资源充足。如果问题依旧存在,可能需要联系Ansys技术支持,提供模型日志以便深入分析。 总结一下,解决Workbench打开慢的问题需要从硬件、模型优化、软件设置和系统环境多方面入手。用户可以根据具体情况逐步排查,找到最适合的解决方案。</think>针对Ansys Workbench模型打开速度慢的问题,以下是分步排查和优化建议: --- ### **1. 硬件性能瓶颈** - **内存不足** - 典型现象:模型加载时内存占用接近100%,伴随硬盘频繁读写 - 解决方案: ▸ 建议内存≥32GB(复杂模型推荐64GB) ▸ 关闭无关后台程序释放资源 - **存储设备速度低** - 典型现象:文件打开时硬盘指示灯持续闪烁 - 解决方案: ▸ 将项目文件迁移至NVMe SSD(速度比HDD快10倍以上) ▸ 示例:500MB模型文件在HDD需40秒加载,SSD仅需6秒 --- ### **2. 模型复杂度优化** - **网格规模控制** - 关键指标:节点数>100时显著影响性能 - 优化方法: ▸ 使用$$k=\frac{h}{L}$$控制网格尺寸比例($h$为单元尺寸,$L$为特征长度) ▸ 对非关键区域采用粗网格 - **接触对简化** - 典型问题:接触对数量超过100组会显著增加计算量 - 优化方法: ▸ 使用对称接触(Symmetric Contact)替代双向接触 ▸ 合并重复接触定义 --- ### **3. 软件配置优化** - **工作目录设置** - 错误示范:`\\192.168.1.100\project\`(网络路径) - 正确配置:`C:\Local_Projects\`(本地SSD路径) - **缓存清理步骤** ```bash 1. 关闭Workbench 2. 删除 %APPDATA%\Ansysv231\ 3. 清空 C:\Users\[用户名]\AppData\Local\Temp\ ``` --- ### **4. 软件版本管理** - 版本对比数据: | 版本号 | 模型加载时间(同硬件) | |--------|------------------------| | 2021R1 | 82秒 | | 2023R2 | 57秒 | - 建议:优先使用R2版本(年度第二个发行版),稳定性最佳 --- ### **5. 高级诊断方法** - **性能日志分析** - 生成方法: ```bash "C:\Program Files\ANSYS Inc\v231\Framework\bin\Win64\RunWB2.exe" -B -R launchbench.prof ``` - 关键参数关注: ▸ MeshReadTime > 60s → 网格问题 ▸ MaterialInitTime > 30s → 材料定义复杂 --- ### **典型优化案例** 某汽车制动盘模型(320节点)加载时间从11分钟优化至220秒: 1. 将接触对从58组合并为122. 替换非线性材料为等效线性材料 3. 启用分布式文件存储(DFS) --- 通过系统化硬件升级、模型简化和软件优化三管齐下,可显著改善Workbench模型加载性能。建议优先检查内存占用率和存储IO性能,再逐步进行软件层面的优化调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值