Inhaltsverzeichnis
Einführung
Nachdem ich es ausgeführt habe, habe ich festgestellt, dass es immer noch dasselbe ist. Die Geschwindigkeit hat sich nicht wesentlich verbessert und es gibt immer noch etwa 3 bis 5 Aktualisierungen pro Sekunde. Denken Sie darüber nach, Zeit kann nicht für die Schritte vor dem Einfügen von Daten aufgewendet werden (Abgleichen und Zusammenstellen von SQL-Anweisungen usw.). Beim Einfügen sollte ein Problem auftreten
Nachdem ich den Code dreimal, fünfmal und zweimal geändert hatte, versuchte ich, einen Prozess zu starten, um den Effekt zu sehen. Tatsächlich wurde der Effekt nicht ein wenig verbessert, mit durchschnittlich 30 Mal/s. Es dauerte also etwa 3 Stunden, bis alle Aktualisierungen abgeschlossen waren.
Heim Backend-Entwicklung PHP-Tutorial Denken Sie an ein MYSQL-Update und eine Optimierung

Denken Sie an ein MYSQL-Update und eine Optimierung

Aug 08, 2016 am 09:19 AM
id select where

Einführung

Heute (5. August 2015, 17:34 Uhr) habe ich eine Anpassung an der Struktur einer Tabelle in der Datenbank vorgenommen, mehrere Felder hinzugefügt und dann die vorherigen Daten aktualisiert. Der Inhalt ist: Passen Sie eines der vorhandenen Felder url an und aktualisieren Sie dann die neu hinzugefügten Felder type und typeid. Später habe ich ein Shell-Skript geschrieben, um die Daten zu aktualisieren. Ich war verwirrt, warum es so langsam war Die Tabellenstruktur ist wahrscheinlich wie oben (viele Felder werden weggelassen), es gibt nur einen gemeinsamen Index

in der Tabelle und ich habe beim Aktualisieren die folgende Idee:

<code>CREATE TABLE `fuckSpeed` (
  `uin` bigint(20) unsigned NOT NULL DEFAULT 0,
  `id` int(11) unsigned NOT NULL DEFAULT 0,
  `url` varchar(255) NOT NULL DEFAULT '',
  `type` int(11) unsigned NOT NULL DEFAULT 0,
  `typeid` varchar(64) NOT NULL DEFAULT '',
  ......
  KEY `uin_id` (`uin`,`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;</code>
Nach dem Login kopieren
Erstens einen bestimmten Datenmenge basierend auf einem ID-Bereich

wähle id,url aus funkSpeed ​​​​wobei id>=101 und id<=200;uin_id

    Alle Daten durchlaufen und jedes Datenelement aktualisieren
  • #Zuerst die Daten verarbeiten und abgleichen. Typ und Typ-ID abrufen
    fickenGeschwindigkeit aktualisieren set type=[type],typeid=[typeid] where id=[id]
    Nachdem ich der obigen Idee gefolgt bin, habe ich das gefunden Das Update ist mit durchschnittlich 3 Minuten pro Sekunde extrem langsam. Ich habe mir die zu aktualisierenden Daten insgesamt 24 Stunden lang angesehen Mehr als einen Tag. Ähm, ich weinte.

  • Das Problem gefunden

    Das erste, was ich dachte, war, ob es daran lag, dass nur ein Prozess aktualisiert wurde, was dazu führte, dass er 5 Prozesse startete und segmentierte Die IDs lauten wie folgt:

Nachdem ich es ausgeführt habe, habe ich festgestellt, dass es immer noch dasselbe ist. Die Geschwindigkeit hat sich nicht wesentlich verbessert und es gibt immer noch etwa 3 bis 5 Aktualisierungen pro Sekunde. Denken Sie darüber nach, Zeit kann nicht für die Schritte vor dem Einfügen von Daten aufgewendet werden (Abgleichen und Zusammenstellen von SQL-Anweisungen usw.). Beim Einfügen sollte ein Problem auftreten

Werfen wir einen Blick auf meine SQL-Anweisung

. Hier habe ich versucht, es in der Befehlszeile auszuführen, und das Ergebnis ist wie folgt: Es dauerte tatsächlich 0,18 Sekunden Voraussetzung dafür, dass der gemeinsame Index wirksam wird, ist, dass auf der linken Seite ein Feld vorhanden sein muss. Ich habe es mit „explain“ überprüft und es stellte sich heraus, dass es so aussah:
<code>./update_url.sh 0 10000 &
./update_url.sh 10000 20001 &
./update_url.sh 20001 30001 &
./update_url.sh 30002 40002 &
./update_url.sh 40003 50003 &</code>
Nach dem Login kopieren

Dann verwenden Sie den gemeinsamen Index:

select id,url from funkSpeed where id>=101 and id<=200;

Sie können sehen, dass es sich fast um eine zweite Überprüfung handelt. Zu diesem Zeitpunkt können Sie grundsätzlich zu dem Schluss kommen, dass das Problem im Index auftritt.
<code>mysql> select id,url from funkSpeed where id>=0 and id<=200;
Empty set (0.18 sec)</code>
Nach dem Login kopieren

Wenn ich auswähle, ist die Häufigkeit relativ klein und der ID-Unterschied zwischen jeweils zwei Auswahlen beträgt 10.000, sodass er hier ignoriert werden kann und es hier keine Möglichkeit zur Optimierung gibt, es sei denn, ein Index für die ID hinzugefügt wird.

<code>mysql> explain id,url from funkSpeed where id>=0 and id<=200;
+-------------+------+---------------+------+---------+------+--------+-------------+
| table       | type | possible_keys | key  | key_len | ref  | rows   | Extra       |
+-------------+------+---------------+------+---------+------+--------+-------------+
| funkSpeed 	 | ALL  | NULL          | NULL | NULL    | NULL | 324746 | Using where |
+-------------+------+---------------+------+---------+------+--------+-------------+
1 row in set (0.00 sec)</code>
Nach dem Login kopieren
Das Problem tritt auch bei der Aktualisierung auf. Meine MySQL-Version ist nicht

. Ansonsten können Sie auf jeden Fall überprüfen, was ich hier gesagt habe . Jedes Datenelement wird aktualisiert, jedes Datenelement dauert etwa 2 Sekunden, das ist zu beängstigend~~

mysql> select uin,id from funkSpeed where uin=10023 and id=162;
+------------+----------+
| uin        |   id     |
+------------+----------+
| 10023      | 162      |
+------------+----------+
1 row in set (0.00 sec)

mysql> explain select uin,id from funkSpeed where uin=10023 and id=162;
+-------------+------+---------------+----------+---------+-------------+------+-------------+
| table       | type | possible_keys | key      | key_len | ref         | rows | Extra       |
+-------------+------+---------------+----------+---------+-------------+------+-------------+
| funkSpeed   | ref  | uin_id        | uin_id   | 12      | const,const |    4 | Using index |
+-------------+------+---------------+----------+---------+-------------+------+-------------+
1 row in set (0.00 sec)Das Problem lösen</p>
<p></p>Sobald das Problem gefunden ist, wird es viel einfacher zu lösen~~<p></p> Fügen Sie bei der Auswahl ein Feld <p> hinzu, ändern Sie es wie unten in <code>update fuckSpeed set type=[type],typeid=[typeid] where id=[id] und verwenden Sie dann beim Aktualisieren explain update, damit der Index verwendet wird. 

Nachdem ich den Code dreimal, fünfmal und zweimal geändert hatte, versuchte ich, einen Prozess zu starten, um den Effekt zu sehen. Tatsächlich wurde der Effekt nicht ein wenig verbessert, mit durchschnittlich 30 Mal/s. Es dauerte also etwa 3 Stunden, bis alle Aktualisierungen abgeschlossen waren.

WeChat-ID: love_skills

uinJe härter du arbeitest, desto mehr Glück wirst du haben! Je mehr Glück du hast, desto härter arbeitest du! select uin,id,url from funkSpeed where id>=101 and id<=200;update fuckSpeed set type=[type],typeid=[typeid] where uin=[uin] id=[id]CEO zu sein ist kein Traum

Bai Fumei zu gewinnen ist kein Traum

Schwestern-Gegenangriff ist kein Traum

Jetzt ist es soweit! ! Komm schon

Das Obige hat die Optimierung eines MYSQL-Updates vorgestellt, einschließlich der relevanten Aspekte. Ich hoffe, es wird für Freunde hilfreich sein, die sich für PHP-Tutorials interessieren.

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

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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)

Beheben Sie den Festplattenfehler der Ereignis-ID 55, 50, 98, 140 in der Ereignisanzeige Beheben Sie den Festplattenfehler der Ereignis-ID 55, 50, 98, 140 in der Ereignisanzeige Mar 19, 2024 am 09:43 AM

Wenn Sie in der Ereignisanzeige von Windows 11/10 die Ereignis-ID 55, 50, 140 oder 98 finden oder auf einen Fehler stoßen, dass die Dateisystemstruktur der Festplatte beschädigt ist und nicht verwendet werden kann, befolgen Sie bitte die nachstehende Anleitung, um das Problem zu beheben. Was bedeutet Ereignis 55, Dateisystemstruktur auf der Festplatte beschädigt und unbrauchbar? Bei Sitzung 55 ist die Dateisystemstruktur auf der Ntfs-Festplatte beschädigt und unbrauchbar. Bitte führen Sie das Dienstprogramm chkMSK auf dem Volume aus. Wenn NTFS keine Daten in das Transaktionsprotokoll schreiben kann, wird ein Fehler mit der Ereignis-ID 55 ausgelöst, der dazu führt, dass NTFS den Vorgang nicht abschließen kann und die Transaktionsdaten nicht schreiben kann. Dieser Fehler tritt normalerweise auf, wenn das Dateisystem beschädigt ist, möglicherweise aufgrund fehlerhafter Sektoren auf der Festplatte oder aufgrund der Unzulänglichkeit des Dateisystems im Festplattensubsystem.

Diese Apple-ID wird im iTunes Store noch nicht verwendet: Fix Diese Apple-ID wird im iTunes Store noch nicht verwendet: Fix Jun 10, 2024 pm 05:42 PM

Wenn Sie sich mit der AppleID beim iTunesStore anmelden, wird möglicherweise die Fehlermeldung „Diese AppleID wurde nicht im iTunesStore verwendet“ auf dem Bildschirm angezeigt. Es gibt keine Fehlermeldungen, über die Sie sich Sorgen machen müssen. Sie können sie beheben, indem Sie diese Lösungssätze befolgen. Fix 1 – Lieferadresse ändern Der Hauptgrund, warum diese Aufforderung im iTunes Store erscheint, ist, dass Sie nicht die richtige Adresse in Ihrem AppleID-Profil haben. Schritt 1 – Öffnen Sie zunächst die iPhone-Einstellungen auf Ihrem iPhone. Schritt 2 – AppleID sollte über allen anderen Einstellungen stehen. Also, öffnen Sie es. Schritt 3 – Öffnen Sie dort die Option „Zahlung & Versand“. Schritt 4 – Bestätigen Sie Ihren Zugang mit Face ID. Schritt

Wo finde ich die Alibaba-ID? Wo finde ich die Alibaba-ID? Mar 08, 2024 pm 09:49 PM

Sobald Sie in der Alibaba-Software erfolgreich ein Konto registriert haben, weist Ihnen das System eine eindeutige ID zu, die als Ihre Identität auf der Plattform dient. Viele Benutzer möchten jedoch ihre ID abfragen, wissen aber nicht, wie das geht. Dann wird Ihnen der Herausgeber dieser Website unten eine detaillierte Einführung in die Strategieschritte geben. Ich hoffe, es kann Ihnen helfen! Wo finde ich die Antwort auf die Alibaba-ID: [Alibaba]-[My]. 1. Öffnen Sie zuerst die Alibaba-Software. Nachdem Sie die Startseite aufgerufen haben, müssen Sie auf [Mein] in der unteren rechten Ecke klicken. 2. Nachdem wir zur „Mein“-Seite gelangt sind, können wir oben auf der Seite [ID] sehen Ist die ID dieselbe wie die Taobao-ID? Alibaba ID und Taobao ID sind unterschiedlich, aber die beiden

Ereignis-ID 4660: Objekt gelöscht [Fix] Ereignis-ID 4660: Objekt gelöscht [Fix] Jul 03, 2023 am 08:13 AM

Einige unserer Leser sind auf das Ereignis ID4660 gestoßen. Sie sind sich oft nicht sicher, was sie tun sollen, deshalb erklären wir es in diesem Leitfaden. Die Ereignis-ID 4660 wird normalerweise protokolliert, wenn ein Objekt gelöscht wird. Daher werden wir auch einige praktische Möglichkeiten zur Behebung des Problems auf Ihrem Computer untersuchen. Was ist Ereignis-ID4660? Die Ereignis-ID 4660 bezieht sich auf Objekte in Active Directory und wird durch einen der folgenden Faktoren ausgelöst: Objektlöschung – Ein Sicherheitsereignis mit der Ereignis-ID 4660 wird protokolliert, wenn ein Objekt aus Active Directory gelöscht wird. Manuelle Änderungen – Die Ereignis-ID 4660 kann generiert werden, wenn ein Benutzer oder Administrator die Berechtigungen eines Objekts manuell ändert. Dies kann passieren, wenn Sie Berechtigungseinstellungen ändern, Zugriffsebenen ändern oder Personen oder Gruppen hinzufügen oder entfernen

Wo Sie die Tencent-Video-ID überprüfen können Wo Sie die Tencent-Video-ID überprüfen können Feb 24, 2024 pm 06:25 PM

Wo kann ich die Tencent-Video-ID überprüfen? Es gibt eine exklusive ID in der Tencent-Video-App, aber die meisten Benutzer wissen nicht, wie sie die Tencent-Video-ID überprüfen können. Als Nächstes finden Sie die grafische Anleitung zum Überprüfen der Tencent-Video-ID Editor für interessierte Benutzer. Schauen Sie vorbei! Tencent Video-Nutzungsanleitung Wo Sie die Tencent Video-ID überprüfen können 1. Öffnen Sie zunächst die Tencent Video-App und betreten Sie den speziellen Bereich über [Personal Center] in der unteren rechten Ecke der Hauptseite. 2. Rufen Sie dann die Seite „Personal Center“ auf und wählen Sie [; 3. Gehen Sie dann zur Seite „Einstellungen“ und klicken Sie unten auf „Konto verlassen“. 4. Schließlich können Sie die exklusive ID-Nummer auf der unten gezeigten Seite anzeigen.

Was soll ich tun, wenn Vue das ID-Attribut nicht abrufen kann? Was soll ich tun, wenn Vue das ID-Attribut nicht abrufen kann? Jan 29, 2023 pm 02:03 PM

Vue kann das ID-Attribut nicht abrufen, da getElementById in der Hook-Funktion „created()“ verwendet wird und Vue das Mounten noch nicht abgeschlossen hat. Die Lösung besteht darin, „created() {let serachBox = document.getElementById('searchBox') ;.. .}“-Code kann in die Hook-Funktion „mounted()“ migriert werden.

So verbergen Sie das ausgewählte Element in jquery So verbergen Sie das ausgewählte Element in jquery Aug 15, 2023 pm 01:56 PM

So verbergen Sie das Select-Element in JQuery: 1. Methode hide (), fügen Sie die jQuery-Bibliothek in die HTML-Seite ein, Sie können verschiedene Selektoren verwenden, um das Select-Element auszublenden, der ID-Selektor ersetzt die SelectId durch die ID des von Ihnen ausgewählten Elements tatsächlich verwenden; 2. css()-Methode, verwenden Sie den ID-Selektor, um das ausgewählte Element auszuwählen, das ausgeblendet werden muss, verwenden Sie die css()-Methode, um das Anzeigeattribut auf „none“ zu setzen, und ersetzen Sie selectId durch die ID des ausgewählten Elements.

Asynchrone Verarbeitungsmethode von Select Channels Go zur gleichzeitigen Programmierung mit Golang Asynchrone Verarbeitungsmethode von Select Channels Go zur gleichzeitigen Programmierung mit Golang Sep 28, 2023 pm 05:27 PM

Asynchrone Verarbeitungsmethode der gleichzeitigen Programmierung von SelectChannelsGo mit Golang Einführung: Die gleichzeitige Programmierung ist ein wichtiger Bereich in der modernen Softwareentwicklung, der die Leistung und Reaktionsfähigkeit von Anwendungen effektiv verbessern kann. In der Go-Sprache kann die gleichzeitige Programmierung mithilfe von Channels- und Select-Anweisungen einfach und effizient implementiert werden. In diesem Artikel wird die Verwendung von Golang für die asynchrone Verarbeitungsmethode der gleichzeitigen Programmierung von SelectChannelsGo vorgestellt und spezifische Informationen bereitgestellt

See all articles