ホームページ データベース mysql チュートリアル MySQL 优化脚本(analyze)引起的应用崩溃

MySQL 优化脚本(analyze)引起的应用崩溃

Jun 07, 2016 pm 05:36 PM
thread キーワード

早上刚走进公司的门口,快走到办公桌的时候,开发的同事很着急的跟我说:你可来了!我:发生什么事情了?开发同事:XX数据库死掉了!我:特别惊讶!这个库运行的

早上刚走进公司的门口,,快走到办公桌的时候,开发的同事很着急的跟我说:你可来了!

我:SELECT.......

注意红色字体的关键字,官网的解释是:

Flushing tables

The thread is executing FLUSH TABLES and is waiting for all threads to close their tables.

也就是说线程执行刷新表操作并且等待所有的线程关闭他们占用的表。

一个超长执行时间的SQL被发现了,这个SQL大概执行了十几个小时还没有查出结果。

但是这样也不应该回引起flush tables 的问题出现

kill 掉这个SQL线程之后,慢慢的系统恢复了正常查询的状态。

就这样粗暴的处理完成之后,就看系统各种的日志,开始查找原因,突然想到今天是周末

对呀周末!!

周末会怎样呢?

周末有一个优化脚本任务执行的!

这个优化脚本就是使用analyze去分析每张表,analyze会收集表的统计信息。

会导致mysql检测到对应的table做了修改,必须执行flush操作,close和reopen表

由此可以推断出,是因为那个执行时间超长的SQL在执行过程中,我的优化脚本任务也启动了,对SQL占用的表进行了analyze 那张表就需要被close和reopen。但是SQL写的太烂,一直没有执行完成,也就不能释放对表的占用。以至于后面的SQL就要排队等待。

只要将那个SQL给kill掉就关闭了表,然后续的SQL就重新打开了那个表,正常!

我根据推断做了一个测试,首先手工执行那个烂SQL等待了一会儿没有查出结果的迹象,在这个时候使用analyze table table_name;

show processlit 查看状态,果然如此!截图中红色框部分

wKioL1LkuZqzmw-5AAPWQXlp6PY602.jpg

实验证明了是analyze引起的问题,但不是主要的问题。

于是和开发商量需要改进SQL进行优化。搞定!

















本文出自 “影子骑士” 博客,请务必保留此出处

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java の Runnable と Thread の違いは何ですか? Java の Runnable と Thread の違いは何ですか? May 07, 2023 pm 05:19 PM

Java でマルチスレッドを実装するには 2 つの方法があり、1 つは Thread クラスを継承する方法、もう 1 つは Runnable インターフェイスを実装する方法で、Thread クラスは java.lang パッケージで定義されます。クラスが Thread クラスを継承し、このクラスの run() メソッドをオーバーライドする限り、マルチスレッド操作を実装できますが、クラスが継承できる親クラスは 1 つだけであり、これがこのメソッドの制限です。例を見てみましょう: packageorg.thread.demo;classMyThreadextendsThread{privateStringname;publicMyThread(Stringname){super();this

C 言語における static キーワードの役割と使用法の詳細な分析 C 言語における static キーワードの役割と使用法の詳細な分析 Feb 20, 2024 pm 04:30 PM

C 言語における static キーワードの役割と使用法の詳細な分析 C 言語では、static は関数、変数、データ型の定義に使用できる非常に重要なキーワードです。 static キーワードを使用すると、オブジェクトのリンク属性、スコープ、ライフサイクルが変更される可能性があるため、C 言語における static キーワードの役割と使用法を詳しく分析してみましょう。静的変数と関数: 関数内で static キーワードを使用して定義された変数は静的変数と呼ばれ、グローバルなライフサイクルを持ちます。

PHP における var キーワードの役割と例 PHP における var キーワードの役割と例 Jun 28, 2023 pm 08:58 PM

PHP における var キーワードの役割と例 PHP では、var キーワードを使用して変数を宣言します。以前の PHP バージョンでは、var キーワードの使用がメンバー変数を宣言する慣用的な方法でしたが、その使用は推奨されなくなりました。ただし、場合によっては、引き続き var キーワードが使用されます。 var キーワードは主にローカル変数を宣言し、その変数をローカル スコープとして自動的にマークするために使用されます。これは、変数が現在のコード ブロック内でのみ表示され、他の関数やコード ブロックからはアクセスできないことを意味します。変数を使用する

go は C 言語のキーワードですか?詳細な分析 go は C 言語のキーワードですか?詳細な分析 Mar 16, 2024 am 10:30 AM

タイトル: go は C 言語のキーワードですか?詳細な分析 C 言語では、「go」はキーワードではありません。 C 言語のキーワードは C 標準で指定されており、特定の文法構造または関数を表すために使用されます。コンパイラでは特別な意味を持ち、識別子や変数名として使用することはできません。たとえば、キーワード「int」は整数データ型を表し、「if」は条件ステートメントを表します。 「go」が C 言語のキーワードであるかどうかを確認したい場合は、それをテストするための簡単なプログラムを作成できます。以下に例を示します: #inc

C言語にはキーワードがいくつありますか? C言語にはキーワードがいくつありますか? Nov 22, 2022 pm 03:39 PM

C言語には32個のキーワードがあり、キーワードの機能によりデータ型キーワード、制御文キーワード、記憶型キーワード、その他のキーワードの4つに分類されます。 char、double、float、int などを含む 12 個のデータ型キーワードがあり、for、break、if、else、do などを含む 12 個の制御ステートメント キーワードがあり、auto、 static 、 extern など、他に const、sizeof などを含む 4 つのキーワードがあります。

Thread は Java でどのようにインターフェースを生成するのでしょうか? Thread は Java でどのようにインターフェースを生成するのでしょうか? May 17, 2023 pm 12:49 PM

Java では、スレッドに関して言えば、Thread が不可欠です。スレッドは、プロセスよりも軽量なスケジュールされた実行プログラムです。なぜスレッドを使用するのでしょうか?スレッドを使用すると、オペレーティング システム プロセスでのリソース割り当てと実行スケジュールを分離できます。各スレッドはプロセス リソース (メモリ アドレス、ファイル I/O など) を共有できるだけでなく、独立してスケジュールすることもできます (スレッドは CPU スケジューリングの基本単位です)。注 1. Thread はスレッドを作成するための最も重要なクラスであり、単語自体もスレッドを表します。 2. Thread クラスは Runnable インターフェイスを実装します。インスタンス publicclassThreadDemoextendsThread{publicvoidrun(){for(inti=0)

PHP における extends キーワードの役割と使用法の詳細な説明 PHP における extends キーワードの役割と使用法の詳細な説明 Jun 28, 2023 pm 08:04 PM

PHP における extends キーワードの役割と使用法の詳細な説明 PHP プログラミングにおいて、extends はクラスの継承を実装するために使用される非常に重要なキーワードです。 extends キーワードを使用すると、1 つ以上の既存のクラスのプロパティとメソッドを継承できる新しいクラスを作成できます。継承はオブジェクト指向プログラミングにおける重要な概念であり、コードの再利用と拡張をより便利かつ柔軟にします。この記事では、extendsキーワードの機能と使い方を詳しく紹介します。伸びる

JavaのThread.start()関数を使用して新しいスレッドを開始します。 JavaのThread.start()関数を使用して新しいスレッドを開始します。 Jul 24, 2023 pm 11:01 PM

新しいスレッドを開始するには、Java の Thread.start() 関数を使用します。Java では、マルチスレッドを使用して複数のタスクを同時に実行できます。 Java は、スレッドを作成および管理するための Thread クラスを提供します。 Thread クラスの start() 関数は、新しいスレッドを開始し、スレッドの run() メソッド内のコードを実行するために使用されます。コード例: publicclassMyThreadextendsThread{@Overr

See all articles