MySQL エラー 1436:「スレッド スタック オーバーラン」が発生するのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-11 19:14:02
オリジナル
597 人が閲覧しました

 Why Am I Getting MySQL Error 1436:

スレッド スタック オーバーラン: MySQL のエラー 1436

エラーの説明

MySQL エラー 1436、 ER_STACK_OVERRUN_NEED_MORE は、スレッド スタック オーバーランを示します。このエラーは、スレッドが利用可能なスタック メモリを超えてスタック メモリを使用しようとした場合、通常は複雑なクエリまたはトリガーの実行中に発生します。

根本原因

プライマリエラー 1436 の原因は、スレッド スタック サイズが不十分であることです。デフォルトのスレッド スタック サイズは通常 128KB (131072 バイト) に設定されていますが、my.cnf 構成ファイルで構成できます。

エラー詳細の分析

エラーメッセージには次のような内容が表示されます詳細:

  • 1436: エラー番号。
  • スレッド スタック: ローカル変数と関数パラメーターの保存に使用されるメモリ領域スレッド実行中。
  • オーバーラン: スタックは超過しました。
  • 6136 bytes used: エラー時に使用されたスタック メモリの量。
  • 131072 byte stack: 合計サイズスレッド スタックの。
  • 128000 バイト必要な: 現在のスレッド操作に必要なスタック メモリの量。

スレッド スタック ソースの決定

スレッドの場所を決定するにはスタック値は次から取得されます:

  1. my.cnf 設定ファイルを確認してください。明示的な thread_stack 設定。
  2. performance_schema.variables_info テーブルを使用して、「thread_stack」変数の VARIABLE_SOURCE 列をクエリします。これにより、値がコンパイルされたバイナリ、構成ファイル、または動的設定から取得されたものであるかがわかります。

解決策

エラー 1436 を解決するには、スレッド操作のメモリ要件に合わせてスレッド スタック サイズを増やします。これは、次の方法で実現できます。

  • my.cnf ファイルを変更します。 'thread_stack' パラメータをより高い値 (通常は 256KB 以上) に設定します。
  • スレッド スタック サイズを動的に調整する: 'thread_stack' を使用するユーザー定義変数を使用して、個々の接続に特定のスタック サイズを設定します。
  • クエリまたはトリガーの最適化: クエリまたはトリガーを最適化し、複雑さを軽減することで、クエリまたはトリガーのスタック使用量を削減します。
  • MySQL のカスタム ビルドが使用されたかどうかの確認: カスタム ビルドでエラーが発生した場合は、デフォルトのビルドが使用されていることを確認します。スレッド スタック サイズはコンパイル プロセス中に変更されませんでした。

以上がMySQL エラー 1436:「スレッド スタック オーバーラン」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート