Quali sono le differenze tra i tipi di dati BLOB e TEXT in MySQL?


117

Cos'è blobe cos'è text? Quali sono le differenze?

Quando è necessario utilizzarlo blobe quando è necessario textcome tipo di dati?

Perché per blobe textci sono mediumblob== mediumtext, smallblob== small text. Hanno lo stesso significato?

E guarda questo MEDIUMBLOB, MEDIUMTEXT L+ 3 byte, dove L < 224.

Che cos'è L?


Penso che questo post risponde alla tua domanda stackoverflow.com/questions/7071662/mysql-text-vs-blob-vs-clob
earlonrails

Risposte:


103

TEXT e CHAR verranno convertiti nel / dal set di caratteri associati al tempo. BLOB e BINARY memorizzano semplicemente i byte.

BLOB viene utilizzato per memorizzare dati binari mentre Text viene utilizzato per memorizzare stringhe di grandi dimensioni.

I valori BLOB vengono trattati come stringhe binarie (stringhe di byte). Non hanno un set di caratteri e l'ordinamento e il confronto si basano sui valori numerici dei byte nei valori di colonna.

I valori di TESTO vengono trattati come stringhe non binarie (stringhe di caratteri). Hanno un set di caratteri ei valori vengono ordinati e confrontati in base alle regole di confronto del set di caratteri.

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


3
quindi, usiamo il testo per memorizzare testo lungo come "post wordpress"? e usiamo blob per memorizzare indirizzi URL molto lunghi? quindi perché non usiamo varchar per memorizzare un testo molto lungo invece di usare blob o testo? perché nel calcolo della memoria, varchar è davvero semplice, ad esempio creare un sito Web di tabella (nome_sito web varchar (30)) e poi riempiamo il nome_sito web "stackoverflow" in modo che la memoria necessaria sia 13 byte
nencor

5
TEXT verrà sostituito con Varchar (MAX) ma per ora a seconda della tua versione di mysql usa TEXT per post di testo di grandi dimensioni come i post del corpo del blog ecc. BLOB non dovrebbe essere usato per memorizzare indirizzi URL molto lunghi o grandi quantità di testo . Viene normalmente utilizzato per memorizzare immagini o altri oggetti basati su binari. Personalmente non uso mai BLOB o TEXT e memorizzo grandi quantità di dati in file xml relativi alle cartelle basate sull'id utente.
Darcey

non capisco oggetto basato su binario. vuoi dire, possiamo memorizzare la foto nel database usando il tipo di dati Blob ?? proprio come la cartella? tutto quello che so sul binario è solo 1 o 0.
nencor

1
@nencor Sì, è possibile memorizzare le immagini nei database. Puoi anche memorizzare archivi. Ma non è possibile memorizzare una cartella in un database, perché le cartelle sono in realtà caratteristiche del file system. (Potresti eventualmente memorizzare un file system completo, ad esempio come file ISO in un database, però)
Martin Thoma,

@ martin-thoma Abbiamo un'applicazione in cui il lato server ha un database MongoDB. Il componente mobile dell'applicazione utilizza SQLLite. È necessario un modo per collegare i dati tra il database MongoDB e il database SQLLite. MongoDB utilizza ObjectIds per identificare i dati in modo univoco. Poiché SQLLite (mondo RDBMS) non ha alcun modo diretto per rappresentare gli ObjectID di MongoDB, mi chiedevo se potevo memorizzare gli ObjectID come tipi BLOB. Sembra una soluzione ragionevole? Rallenterebbe le prestazioni? Ci sarebbero altri inconvenienti?
CS Lewis

10

TEXT e CHAR o nchar che in genere verranno convertiti in testo normale in modo da poter memorizzare solo testo come stringhe.

BLOB e BINARY, il che significa che puoi memorizzare dati binari come le immagini semplicemente memorizzare byte.


cosa intendi per memorizzare dati binari come immagine? intendevi l'URL dell'immagine?
nencor

10

I tipi di dati Blob memorizzano oggetti binari come immagini mentre i tipi di dati di testo memorizzano oggetti di testo come articoli di pagine web


7

Un BLOB è una stringa binaria per contenere una quantità variabile di dati. Per la maggior parte dei BLOB vengono utilizzati per contenere il binario dell'immagine effettiva invece del percorso e delle informazioni sul file. Il testo è per grandi quantità di caratteri stringa. Normalmente un blog o un articolo di notizie costituirebbe un campo TEXT

L in questo caso viene utilizzata per indicare il requisito di archiviazione. (Lunghezza | Taglia + 3) fintanto che è inferiore a 224.

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


3

Secondo il libro Mysql ad alte prestazioni:

L'unica differenza tra le famiglie BLOB e TEXT è che i tipi BLOB memorizzano dati binari senza regole di confronto o set di caratteri, ma i tipi TEXT hanno un set di caratteri e regole di confronto.


1

BLOB memorizza i dati binari che sono più di 2 GB. La dimensione massima per BLOB è 4 GB. Per dati binari si intendono dati non strutturati, ad esempio immagini, file audio, file vedio, firma digitale

Il testo viene utilizzato per memorizzare una stringa di grandi dimensioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.