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

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

Why Does My MySQL Query Trigger a

1436 - スレッド スタック オーバーラン: 適切な解決策

単純なテーブルを更新し、単純なトリガーをトリガーする、指定したクエリで、エラー: 「スレッド スタック オーバーラン。」根本的な理由を調べて、適切な解決策を特定しましょう。

エラーが発生する理由

MySQL サーバーは、スレッドごとに特定の量のスタック メモリを割り当てます。この場合、スレッド スタック サイズは 131072 バイトに設定されます。ただし、更新クエリとトリガーの実行には、この割り当てられたメモリを超えるメモリが必要となり、エラーが発生します。

根本原因の特定

原因を特定するにはエラーが発生した場合は、次の点を考慮してください:

  • デフォルトのスレッド スタック サイズ:デフォルトでは、MySQL はスレッド スタック サイズを 192KB (32 ビット) または 256KB (64 ビット) に設定します。
  • My.cnf 構成: my.cnf ファイルを次のように変更している可能性があります。 thread_stack 設定を調整すると、値が低くなる可能性があります。
  • カスタム サーバービルド: MySQL サーバーを自分で構築した場合は、コンパイル中に thread_stack サイズが変更されている可能性があります。

問題の解決

簡単な解決策は、スレッド スタック サイズを増やすことです。これは、my.cnf 構成ファイルに次の行を追加することで実現できます:

[mysqld]
thread_stack = [new_stack_size_in_bytes]
ログイン後にコピー

新しいスタック サイズの推奨値は次のとおりです:

  • 32 ビットシステム: 512KB 以上
  • 64 ビットシステム: 1MB 以上

追加メモ

  • performance_schema.variables_info テーブルを使用して、現在の thread_stack 値がどこにあるかを確認できます。 (COMPILED または EXPLICIT) から来ています。
  • 変更中thread_stack サイズを有効にするには、サーバーを再起動する必要があります。
  • スレッド スタック サイズを増やしても問題が解決しない場合は、サーバーまたはその構成に根本的な問題がある可能性があります。さらにサポートが必要な場合は、MySQL の専門家または MySQL コミュニティに相談してください。

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

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