Czy obiekt blob jest bardziej wydajny niż varchar dla danych, które mogą mieć DOWOLNY rozmiar?

9

Podczas konfigurowania bazy danych chcę używać najbardziej wydajnego typu danych dla potencjalnie dość długich danych. Obecnie moim projektem jest przechowywanie tytułów piosenek i przemyśleń dotyczących tej piosenki. Niektóre tytuły mogą mieć 5 znaków lub więcej niż 100 znaków, a myśli mogą trwać dość długo.

Czy bardziej wydajne jest użycie varchar ustawionego na 8000 lub użycie obiektu blob? Czy użycie obiektu blob jest takie samo jak varchar, ponieważ ma ustalony rozmiar, który jest przydzielany niezależnie od tego, co zawiera? czy jest to tylko wskaźnik i tak naprawdę nie zajmuje dużo miejsca na stole? Czy istnieje określony rozmiar obiektu blob w KB lub czy można go rozwinąć?

BillyNair
źródło

Odpowiedzi:

12

Sugerowałbym użycie TEKSTU zamiast BLOBA.

Różnica pierwotna

  • TEKST i BLOB są przechowywane poza stołem, przy czym stół ma tylko wskaźnik do lokalizacji rzeczywistej pamięci.

  • VARCHAR jest przechowywany w jednej linii z tabelą.

Podstawowa wytyczna

  1. Wiadomości w formacie tekstowym powinny prawie zawsze być przechowywane jako TEKST (kończą się dowolnie długimi)

  2. Atrybuty ciągów powinny być przechowywane jako VARCHAR (docelowa nazwa użytkownika, temat itp.).


Aby wybrać, kiedy używać VARCHAR, a kiedy TEKST omówiono obszernie na temat przepełnienia stosu w tych wątkach:

  1. MySQL: Large VARCHAR vs. TEXT?

  2. MySQL varchar (2000) czy tekst?

Na forum MySQL znajduje się również wątek porównania wydajności .

Ozair Kafray
źródło
Dziękuję za te linki. Odpowiedzieli na niektóre z moich pytań, a ja ostatecznie użyłem TEKSTU. Nie było to dokładnie to, czego szukałem, jeśli chodzi o przestrzeń fizyczną, jaką zajmuje na serwerze, ale myślę, że dopóki będzie to tylko mały projekt, nie ma to znaczenia. Później, jeśli zacznę robić większe projekty, muszę się jednak dowiedzieć.
BillyNair,
0

Myślę, że powinieneś używać obiektu blob tylko wtedy, gdy masz szeregowany złożony typ danych, to znaczy, jeśli chcesz przechowywać w jednej tabeli złożoną klasę. Jeśli chcesz tylko przechowywać ciąg (lub coś równoważnego), nie używaj obiektu blob.

m3th0dman
źródło