Was sind die Unterschiede zwischen den Datentypen BLOB und TEXT in MySQL?

117

Was ist blobund was ist text? Was sind die Unterschiede?

Wann muss ich verwenden blobund wann brauche ich textals Datentyp?

Denn für blobund textgibt es mediumblob== mediumtext, smallblob== small text. Haben sie überhaupt die gleiche Bedeutung?

Und sieh dir das an MEDIUMBLOB, MEDIUMTEXT L+ 3 Bytes, wo L < 224.

Was ist L?

nencor
quelle
Ich denke, dieser Beitrag beantwortet Ihre Frage stackoverflow.com/questions/7071662/mysql-text-vs-blob-vs-clob
earlonrails

Antworten:

103

TEXT und CHAR konvertieren in / aus dem Zeichensatz, den sie mit der Zeit verknüpft haben. BLOB und BINARY speichern einfach Bytes.

BLOB wird zum Speichern von Binärdaten verwendet, während Text zum Speichern großer Zeichenfolgen verwendet wird.

BLOB-Werte werden als binäre Zeichenfolgen (Byte-Zeichenfolgen) behandelt. Sie haben keinen Zeichensatz und Sortierung und Vergleich basieren auf den numerischen Werten der Bytes in Spaltenwerten.

TEXT-Werte werden als nicht-binäre Zeichenfolgen (Zeichenfolgen) behandelt. Sie haben einen Zeichensatz, und die Werte werden basierend auf der Sortierung des Zeichensatzes sortiert und verglichen.

http://dev.mysql.com/doc/refman/5.0/en/blob.html

Darcey
quelle
3
Also verwenden wir Text, um Langtext wie "WordPress-Post" zu speichern? und wir verwenden blob, um sehr lange URL-Adressen zu speichern? Warum verwenden wir nicht varchar, um einen sehr langen Text zu speichern, anstatt Blob oder Text zu verwenden? weil bei der Speicherberechnung varchar wirklich einfach ist, zum Beispiel eine Tabellenwebsite (website_name varchar (30)) erstellen und dann den website_name "stackoverflow" füllen, sodass der benötigte Speicher 13 Byte
nencor
5
TEXT wird durch Varchar (MAX) ersetzt. Abhängig von Ihrer MySQL-Version verwenden Sie TEXT derzeit für große Textbeiträge wie Blog-Body-Beiträge usw. BLOB sollte nicht zum Speichern sehr langer URL-Adressen oder großer Textmengen verwendet werden . Es wird normalerweise zum Speichern von Bildern oder anderen binärbasierten Objekten verwendet. Persönlich verwende ich niemals BLOB oder TEXT und speichere große Datenmengen in XML-Dateien im Verhältnis zu Ordnern, die auf Benutzer-IDs basieren.
Darcey
Ich verstehe kein binäres Objekt. Sie meinen, wir können Fotos mit dem Blob-Datentyp in der Datenbank speichern? genau wie Ordner? Alles, was ich über Binär weiß, ist nur 1 oder 0.
nencor
1
@nencor Ja, Sie können Bilder in Datenbanken speichern. Sie können auch Archive speichern. Sie können einen Ordner jedoch nicht in einer Datenbank speichern, da Ordner tatsächlich Funktionen des Dateisystems sind. (Sie könnten schließlich ein komplettes Dateisystem speichern, z. B. als ISO-Datei in einer Datenbank)
Martin Thoma
@ martin-thoma Wir haben eine Anwendung, in der die Serverseite eine MongoDB-Datenbank hat. Die mobile Komponente der Anwendung verwendet SQLLite. Es muss eine Möglichkeit geben, Daten zwischen der MongoDB-Datenbank und der SQLLite-Datenbank zu überbrücken. MongoDB verwendet ObjectIds, um Daten eindeutig zu identifizieren. Da SQLLite (RDBMS-Welt) keine direkte Möglichkeit zur Darstellung von MongoDB-Objekt-IDs bietet, habe ich mich gefragt, ob ich Objekt-IDs als BLOB-Typen speichern könnte. Klingt das nach einer vernünftigen Lösung? Würde es die Leistung verlangsamen? Würde es noch andere Nachteile geben?
CS Lewis
10

TEXT und CHAR oder nchar, die normalerweise in einfachen Text konvertiert werden, sodass Sie nur Text wie Zeichenfolgen speichern können.

BLOB und BINARY, dh Sie können Binärdaten wie Bilder einfach in Bytes speichern.

KAL ERZÄHLT
quelle
Was meinst du mit Speichern von Binärdaten wie Bild? Meinten Sie Bild-URL?
nencor
10

Blob-Datentypen speichern binäre Objekte wie Bilder, während Textdatentypen Textobjekte wie Artikel von Webseiten speichern

Kenny
quelle
7

Ein BLOB ist eine binäre Zeichenfolge, die eine variable Datenmenge enthält. Zum größten Teil werden BLOBs verwendet, um die eigentliche Bildbinärdatei anstelle der Pfad- und Dateiinformationen zu speichern. Text steht für große Mengen von Zeichenfolgen. Normalerweise würde ein Blog oder ein Nachrichtenartikel ein TEXT-Feld bilden

In diesem Fall wird L unter Angabe des Speicherbedarfs verwendet. (Länge | Größe + 3) solange es weniger als 224 ist.

Referenz: http://dev.mysql.com/doc/refman/5.0/en/blob.html

James Williams
quelle
3

Laut Hochleistungs-MySQL-Buch:

Der einzige Unterschied zwischen der BLOB- und der TEXT- Familie besteht darin, dass BLOB- Typen Binärdaten ohne Kollatierung oder Zeichensatz speichern, TEXT- Typen jedoch einen Zeichensatz und eine Kollatierung haben.

Alireza Rahmani Khalili
quelle
1

BLOB speichert Binärdaten mit mehr als 2 GB. Die maximale Größe für BLOB beträgt 4 GB. Binärdaten sind unstrukturierte Daten, dh Bilder, Audiodateien und digitale Signaturen

Text wird zum Speichern großer Zeichenfolgen verwendet.

Abhishek Saha
quelle