zoukankan      html  css  js  c++  java
  • oracle下查询的sql已经超出IIS响应时间

    场景:

    最近一直发生oracle下查询的sql已经超出IIS响应时间,但是后台DB的SQL查询还未终止,一直在查询。这对DB是造成很大的压力。

    解决办法

    增加OracleCommand 中的CommandTimeout属性的设值,DB才会接收到终止指令。

    public static DataSet ExecuteDataset(OracleConnection connection, int commandTimeout, CommandType commandType, string commandText, params OracleParameter[] commandParameters)
            {
                //create a command and prepare it for execution
                OracleCommand cmd = new OracleCommand();
    
                PrepareCommand(cmd, connection, (OracleTransaction)null, commandType, commandText, commandParameters);
    
                //create the DataAdapter & DataSet
                OracleDataAdapter da = new OracleDataAdapter(cmd);
                DataSet ds = new DataSet();
                cmd.CommandTimeout = commandTimeout;
                //fill the DataSet using default values for DataTable names, etc.
                da.Fill(ds);
    
                connection.Close();
    
                //return the dataset
                return ds;
            }

    关于CommandTimeOut

    指示在终止尝试和产生错误之前执行命令期间需等待的时间。

    设置和返回值

    设置或返回长整型值,该值指示等待命令执行的时间(单位为秒)。默认值为 30。

    说明

    Connection 对象或 Command 上的 CommandTimeout 属性,允许由于网络拥塞或服务器负载过重产生的延迟而取消 Execute 方法调用。如果在 CommandTimeout 属性中设置的时间间隔内没有完成命令执行,将产生错误,然后 ADO 将取消该命令。如果将该属性设置为零,ADO 将无限期等待直到命令执行完毕。请确保正在写入代码的提供者和数据源支持 CommandTimeout 功能。

    Connection 对象的 CommandTimeout 设置不会对相同 Connection 上 Command 对象的 CommandTimeout 设置产生影响,即 Command 对象的 CommandTimeout 属性不继承 Connection 对象的 CommandTimeout 的值。

    在 Connection 对象上,打开 Connection 后,CommandTimeout 属性将保持读/写。

  • 相关阅读:
    Tcp抓包以及Tcp状态
    Wireshark抓包使用指南
    服务端tcp syn无响应,无回复
    升级openssh
    平滑升级Nginx
    Memcached 未授权访问漏洞修复
    服务端高并发分布式架构演进之路
    es索引查询与删除
    申请elasticsearch中x-pack插件许可证及授权
    独立安装ab压力测试工具及测试nginx性能
  • 原文地址:https://www.cnblogs.com/wd0730/p/3199606.html
Copyright © 2011-2022 走看看