sql >> データベース >  >> RDS >> Mysql

CAPIを使用してMySQLクエリのタイムアウトを設定する方法

    さて、私は解決策を見つけました.. 意志に感謝します およびPRR (私の同僚)。

    できません これはリアルタイムアプリケーションであり、1秒あたり1000以上のメッセージを処理することになっているため、クエリごとに新しいスレッドを開始します。(とにかく、 R .. アイデアのために)。

    また、問題がDBサーバーにあったため、ライブラリを介した接続を終了したり、クエリをキャンセル/強制終了したりすることはできませんでした。

    これがブルートフォースソリューションですが、_EXIT( FAILURE )よりもはるかに優れています :関連する質問は次のとおりです:"強制終了する方法Linuxのソケット?」 -それで、システムコールを使ってソケットを閉じました。

    重要な注意 :(ありがとうWill)-MySQLライブラリラッパーには「フェイルセーフ」フラグがあることが判明したため、閉じたソケット(またはその他の重大なエラー)で問題を「解決」しようとするため、ソケットが再度開かれます。 、それ自体で、私の場合。したがって、このオプションをオフにしたところ、すべてが正常になりました。例外が原因で実行が終了します。これは、これを行うための「最もソフトな」方法です。
    もちろん、これは別のスレッドを介して実行する必要があります。たとえば、タイマー。

    編集: 5.0.25以降のバージョンでは、タイムアウトが実際に機能しています。ただし、少なくともRHEL4とRHEL5では、何らかの理由でタイムアウトが3倍になります。たとえば、一部のタイムアウトが20秒に設定されている場合、実際のタイムアウトは約60秒です。
    また、もう1つの重要な点は、これらのタイムアウトが(他のオプションと同様に)必須であることです。 後に設定する mysql_init および mysql_connect またはmysql_real_connect



    1. SQLランクパーセンタイル

    2. JSP /サーブレット:zipファイルをアップロードして解凍し、CSVファイルを抽出するにはどうすればよいですか。

    3. どちらが速いですか:複数の単一のINSERTまたは1つの複数行のINSERT?

    4. OracleのTO_DATE()関数