Heim Datenbank MySQL-Tutorial 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进行优化。搞定!

















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

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was sind die Unterschiede zwischen Runnable und Thread in Java? Was sind die Unterschiede zwischen Runnable und Thread in Java? May 07, 2023 pm 05:19 PM

Es gibt zwei Möglichkeiten, Multithreading in Java zu implementieren: Eine besteht darin, die Thread-Klasse zu erben, und die andere darin, die Runnable-Schnittstelle zu implementieren. Die Thread-Klasse ist im Paket java.lang definiert. Solange eine Klasse die Thread-Klasse erbt und die run()-Methode in dieser Klasse überschreibt, kann sie Multithread-Operationen implementieren. Eine Klasse kann jedoch nur eine übergeordnete Klasse erben, was eine Einschränkung dieser Methode darstellt. Schauen wir uns ein Beispiel an: packageorg.thread.demo;classMyThreadextendsThread{privateStringname;publicMyThread(Stringname){super();this

Eingehende Analyse der Rolle und Verwendung des statischen Schlüsselworts in der C-Sprache Eingehende Analyse der Rolle und Verwendung des statischen Schlüsselworts in der C-Sprache Feb 20, 2024 pm 04:30 PM

Eingehende Analyse der Rolle und Verwendung des Schlüsselworts „static“ in der Sprache C. In der Sprache C ist „static“ ein sehr wichtiges Schlüsselwort, das bei der Definition von Funktionen, Variablen und Datentypen verwendet werden kann. Die Verwendung des Schlüsselworts static kann die Linkattribute, den Umfang und den Lebenszyklus des Objekts ändern. Lassen Sie uns die Rolle und Verwendung des Schlüsselworts static in der C-Sprache im Detail analysieren. Statische Variablen und Funktionen: Variablen, die mit dem Schlüsselwort static innerhalb einer Funktion definiert werden, werden als statische Variablen bezeichnet, die einen globalen Lebenszyklus haben

Die Rolle und Beispiele des Schlüsselworts var in PHP Die Rolle und Beispiele des Schlüsselworts var in PHP Jun 28, 2023 pm 08:58 PM

Die Rolle und Beispiele des Schlüsselworts var in PHP In PHP wird das Schlüsselwort var zum Deklarieren einer Variablen verwendet. In früheren PHP-Versionen war die Verwendung des Schlüsselworts var die idiomatische Methode zum Deklarieren von Mitgliedsvariablen, seine Verwendung wird jedoch nicht mehr empfohlen. In einigen Fällen wird jedoch weiterhin das Schlüsselwort var verwendet. Das Schlüsselwort var wird hauptsächlich verwendet, um eine lokale Variable zu deklarieren und die Variable automatisch als lokalen Bereich zu markieren. Dies bedeutet, dass die Variable nur innerhalb des aktuellen Codeblocks sichtbar ist und nicht in anderen Funktionen oder Codeblöcken darauf zugegriffen werden kann. Verwenden Sie var

Ist go ein Schlüsselwort in der C-Sprache? Detaillierte Analyse Ist go ein Schlüsselwort in der C-Sprache? Detaillierte Analyse Mar 16, 2024 am 10:30 AM

Titel: Ist go ein Schlüsselwort in der C-Sprache? Detaillierte Analyse In der C-Sprache ist „go“ kein Schlüsselwort. Schlüsselwörter in der C-Sprache werden vom C-Standard spezifiziert und zur Darstellung spezifischer grammatikalischer Strukturen oder Funktionen verwendet. Sie haben im Compiler eine besondere Bedeutung und können nicht als Bezeichner oder Variablennamen verwendet werden. Beispielsweise stellt das Schlüsselwort „int“ einen ganzzahligen Datentyp dar, „if“ stellt eine bedingte Anweisung dar und so weiter. Wenn wir überprüfen möchten, ob „go“ ein Schlüsselwort in der C-Sprache ist, können wir ein einfaches Programm schreiben, um es zu testen. Hier ist ein Beispiel: #inc

Wie viele Schlüsselwörter gibt es in der C-Sprache? Wie viele Schlüsselwörter gibt es in der C-Sprache? Nov 22, 2022 pm 03:39 PM

Es gibt 32 Schlüsselwörter in der C-Sprache. Je nach Funktion können Schlüsselwörter in vier Kategorien unterteilt werden: Schlüsselwörter für Datentypen, Schlüsselwörter für Steueranweisungen, Schlüsselwörter für Speichertypen und andere Schlüsselwörter. Es gibt 12 Schlüsselwörter für Datentypen, einschließlich char, double, float, int usw.; es gibt 12 Schlüsselwörter für Steueranweisungen, einschließlich for, break, if, else, do usw.; es gibt 4 Schlüsselwörter für Speichertypen, einschließlich auto, static , extern usw.; es gibt 4 weitere Schlüsselwörter, einschließlich const, sizeof usw.

Wie generiert Thread eine Schnittstelle in Java? Wie generiert Thread eine Schnittstelle in Java? May 17, 2023 pm 12:49 PM

Wenn es in Java um Threads geht, ist Thread unerlässlich. Ein Thread ist ein leichter geplanter Executor als ein Prozess. Warum Threads verwenden? Durch die Verwendung von Threads können Sie die Ressourcenzuweisung und die Ausführungsplanung in Betriebssystemprozessen trennen. Jeder Thread kann nicht nur Prozessressourcen (Speicheradresse, Datei-E/A usw.) gemeinsam nutzen, sondern auch unabhängig geplant werden (Threads sind die Grundeinheit der CPU-Planung). Hinweis 1: Thread ist die wichtigste Klasse zum Erstellen von Threads, und das Wort selbst steht auch für Thread. 2. Die Thread-Klasse implementiert die Runnable-Schnittstelle. Instanz publicclassThreadDemoextendsThread{publicvoidrun(){for(inti=0

Detaillierte Erläuterung der Rolle und Verwendung des Schlüsselworts „Extens' in PHP Detaillierte Erläuterung der Rolle und Verwendung des Schlüsselworts „Extens' in PHP Jun 28, 2023 pm 08:04 PM

Ausführliche Erläuterung der Rolle und Verwendung des Schlüsselworts „Extens“ in PHP. In der PHP-Programmierung ist Extens ein sehr wichtiges Schlüsselwort, das zur Implementierung der Klassenvererbung verwendet wird. Mit dem Schlüsselwort „extends“ können wir eine neue Klasse erstellen, die die Eigenschaften und Methoden einer oder mehrerer vorhandener Klassen erben kann. Vererbung ist ein wichtiges Konzept in der objektorientierten Programmierung, das die Wiederverwendung und Erweiterung von Code bequemer und flexibler macht. In diesem Artikel werden die Funktion und Verwendung des Schlüsselworts „Extens“ ausführlich vorgestellt. erstreckt sich

Starten Sie einen neuen Thread mit der Thread.start()-Funktion von Java Starten Sie einen neuen Thread mit der Thread.start()-Funktion von Java Jul 24, 2023 pm 11:01 PM

Verwenden Sie die Thread.start()-Funktion von Java, um einen neuen Thread zu starten. In Java können wir Multithreading verwenden, um mehrere Aufgaben gleichzeitig auszuführen. Java stellt die Thread-Klasse zum Erstellen und Verwalten von Threads bereit. Die Funktion start() in der Klasse Thread wird verwendet, um einen neuen Thread zu starten und den Code in der Methode run() des Threads auszuführen. Codebeispiel: publicclassMyThreadextendsThread{@Overr

See all articles