VorwortIn der täglichen Entwicklung ist es häufig erforderlich, die Zeit aufzuzeichnen, beispielsweise die Erstellungszeit und die Änderungszeit eines Datensatzes. Es gibt viele Möglichkeiten, Zeit in einer Datenbank zu speichern. MySQL selbst bietet beispielsweise Datumstypen wie DATETIME, TIMESTAMEP usw. Wir können Zeitstempel auch direkt als INT-Typen speichern, und manche Leute speichern Zeit direkt als Zeichenfolgentypen. Welche Art der Zeitspeicherung ist also besser? Verwenden Sie keine Zeichenfolgen zum Speichern von ZeittypenDies ist ein Fehler, den Anfänger häufig machen. Sie neigen dazu, das Feld direkt auf den Typ VARCHAR zu setzen und Zeichenfolgen wie „2021-01-01 00:00:00“ zu speichern. Der Vorteil dabei ist natürlich, dass der Einstieg relativ einfach und leicht ist. Davon wird jedoch dringend abgeraten, da zwei wesentliche Probleme auftreten:
Datumstypen in MySQLZu den gängigen Datumstypen in MySQL-Datenbanken gehören YEAR, DATE, TIME, DATETIME und TIMESTAMEP. Da das Datum im Allgemeinen auf die Sekunde genau sein muss, sind DATETIME und TIMESTAMEP besser geeignet. DATETIMEDATETIME wird in der Datenbank im Format JJJJ-MM-TT HH:MM:SS gespeichert und belegt feste 8 Bytes. Ab MySQL Version 5.6 unterstützt der Typ DATETIME Millisekunden. Das N in DATETIME(N) steht für die Millisekundengenauigkeit. Beispielsweise bedeutet DATETIME(6), dass 6 Ziffern in Millisekunden gespeichert werden können. ZEITSTEMPELPTIMESTAMP speichert tatsächlich die Anzahl der Millisekunden vom 01.01.1970, 00:00:00 Uhr bis zur Gegenwart. Da der TIMESTAMP-Typ in MySQL 4 Bytes belegt, beträgt die Obergrenze der gespeicherten Zeit nur „2038-01-19 03:14:07“. Ab MySQL Version 5.6 unterstützt der TIMESTAMP-Typ auch Millisekunden. Im Gegensatz zu DATETIME belegt TIMESTAMP 7 Bytes, wenn Millisekunden eingeschlossen werden, während DATETIME 8 Bytes belegt, unabhängig davon, ob Millisekunden gespeichert werden. Der größte Vorteil des TIMESTAMP-Typs besteht darin, dass er ein Zeitzonenattribut haben kann, da er im Wesentlichen aus Millisekunden konvertiert wird. Wenn Ihr Unternehmen unterschiedliche nationale Zeitzonen berücksichtigen muss, ist der Typ TIMESTAMP eine gute Wahl. Bei Nachrichtendiensten beispielsweise möchten Benutzer normalerweise wissen, zu welcher Uhrzeit in ihrem eigenen Land die Nachricht veröffentlicht wurde. Daher ist TIMESTAMP eine Option. Der Wert des Felds „Zeitstempeltyp“ ändert sich mit der Zeitzone des Servers und wird automatisch in die entsprechende Zeit umgewandelt. Einfach ausgedrückt ist der Wert dieses Felds unterschiedlich, wenn derselbe Datensatz in verschiedenen Zeitzonen abgefragt wird. TIMESTAMP-LeistungsproblemeTIMESTAMP weist auch potenzielle Leistungsprobleme auf. Obwohl die Konvertierung von Millisekunden zum Typ TIMESTAMP selbst nicht viele CPU-Befehle erfordert, kommt es hierdurch nicht unmittelbar zu Performanceproblemen. Wenn jedoch die Standardzeitzone des Betriebssystems verwendet wird, muss bei jeder Zeitberechnung mithilfe der Zeitzone die zugrunde liegende Betriebssystemfunktion __tz_convert() aufgerufen werden. Diese Funktion erfordert zusätzliche Sperrvorgänge, um sicherzustellen, dass die Zeitzone des Betriebssystems nicht geändert wurde. Daher treten bei gleichzeitigen Zugriffen in großem Maßstab aufgrund der Konkurrenz um heiße Ressourcen zwei Probleme auf:
Um die Verwendung von TIMESTAMP zu optimieren, wird empfohlen, anstelle der Zeitzone des Betriebssystems eine explizite Zeitzone zu verwenden. Legen Sie beispielsweise die Zeitzone explizit in der Konfigurationsdatei fest, anstatt die Systemzeitzone zu verwenden: [mysqld] Zeitzone = "+08:00" Fassen wir die Vor- und Nachteile dieser beiden Datentypen kurz zusammen:
Numerischer Zeitstempel (INT)Oft verwenden wir zur Darstellung der Zeit auch Werte vom Typ int oder bigint, also Zeitstempel. Diese Speichermethode bietet einige Vorteile des Zeitstempeltyps. Sie lässt sich effizienter zum Sortieren und Vergleichen von Daten verwenden und ist zudem systemübergreifend praktisch, da nur numerische Werte gespeichert werden. Der Nachteil liegt auch auf der Hand: Die Lesbarkeit der Daten ist zu schlecht und man kann die konkrete Uhrzeit nicht intuitiv erkennen. Wenn Sie Daten innerhalb eines bestimmten Zeitraums anzeigen müssen Wählen Sie * von t, wo erstellt am > UNIX_TIMESTAMP('2021-01-01 00:00:00'); DATETIME vs. TIMESTAMP vs. INT, was soll ich wählen?Jede Methode hat ihre eigenen Vorteile. Hier ist ein einfacher Vergleich dieser drei Methoden:
TIMESTAMP und INT sind im Wesentlichen gleich, aber obwohl INT entwicklerfreundlich ist, ist es nicht benutzerfreundlich für DBAs und Datenanalysten und weist eine schlechte Lesbarkeit auf. Der Autor von „High Performance MySQL“ empfiehlt TIMESTAMP daher deshalb, weil sein numerischer Wert die Zeit intuitiver darstellt. Hier der Originaltext: Was das Zeitzonenproblem betrifft, kann es einmal durch das Frontend oder den Dienst konvertiert werden und muss nicht unbedingt in der Datenbank aufgelöst werden. ZusammenfassenIn diesem Artikel werden einige der am häufigsten verwendeten Methoden zum Speichern von Zeit verglichen. Mein Favorit ist DATETIME. Hier sind die Gründe:
Dies ist das Ende dieses Artikels über die Speicherzeit in MySQL. Weitere relevante Inhalte zur MySQL-Speicherzeit finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
>>: DIV-Hintergrund, halbtransparenter Text, nicht durchscheinender Stil
MJML ist ein modernes E-Mail-Tool, mit dem Entwic...
1. Einführung in Docker Docker wurde in der Progr...
1. Doppelklicken Sie zunächst auf das VMware-Symb...
Der Blogger sagte : Ich habe eine Reihe von Blogb...
Informationen zur Überprüfung der Kennwortstärke:...
Die Echtzeitreplikation ist die wichtigste Method...
Inhaltsverzeichnis Vorwort: Detaillierte Einführu...
1. Der CSS-Stil löst das Problem der Anzeige von ...
Beim Produktdesign legen Designer Wert darauf, das...
Inhaltsverzeichnis Vorwort Grundlegende Einführun...
1. Anzeige:Box; Wenn Sie diese Eigenschaft für ei...
Beschreibung der Situation: Heute habe ich mich b...
Erstens: Installation von MySQL Laden Sie die MyS...
Inhaltsverzeichnis Verwendung von this.$set in Vu...
Inhaltsverzeichnis Linux MySQL 5.5 auf MySQL 5.7 ...