Sự khác biệt giữa kiểu dữ liệu BLOB và TEXT trong MySQL là gì?


117

Là gì blobvà là textgì? Sự khác biệt là gì?

Khi nào tôi cần sử dụng blobvà khi nào tôi cần textlàm kiểu dữ liệu?

Bởi vì blobtext, có mediumblob== mediumtext, smallblob== small text. Chúng thậm chí có cùng một ý nghĩa?

Và nhìn vào đây MEDIUMBLOB, MEDIUMTEXT L+ 3 byte, ở đâu L < 224.

Lgì?


Tôi nghĩ bài này trả lời câu hỏi của bạn stackoverflow.com/questions/7071662/mysql-text-vs-blob-vs-clob
earlonrails

Câu trả lời:


103

TEXT và CHAR sẽ chuyển đổi sang / từ bộ ký tự mà chúng đã liên kết với thời gian. BLOB và BINARY chỉ lưu trữ các byte.

BLOB được sử dụng để lưu trữ dữ liệu nhị phân trong khi Văn bản được sử dụng để lưu trữ chuỗi lớn.

Giá trị BLOB được coi là chuỗi nhị phân (chuỗi byte). Chúng không có bộ ký tự và việc sắp xếp và so sánh dựa trên giá trị số của các byte trong giá trị cột.

Giá trị TEXT được coi là chuỗi không nhị phân (chuỗi ký tự). Chúng có một bộ ký tự và các giá trị được sắp xếp và so sánh dựa trên đối chiếu của bộ ký tự.

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


3
Vì vậy, chúng tôi sử dụng văn bản để lưu trữ văn bản dài như "bài đăng trên wordpress"? và chúng tôi sử dụng blob để lưu trữ một địa chỉ URL rất dài? vậy tại sao chúng ta không sử dụng varchar để lưu trữ một văn bản rất dài thay vì sử dụng blob hoặc text? bởi vì trong bộ nhớ tính, varchar là thực sự đơn giản, ví dụ như tạo trang web bảng (WEBSITE_NAME varchar (30)) và sau đó chúng tôi điền vào WEBSITE_NAME "stackoverflow" vì vậy bộ nhớ cần thiết là 13byte
nencor

5
TEXT sẽ được thay thế bằng Varchar (MAX) nhưng hiện tại, tùy thuộc vào phiên bản mysql của bạn, hãy sử dụng TEXT cho các bài đăng văn bản lớn như bài đăng trên blog, v.v. Không nên sử dụng BLOB để lưu trữ các địa chỉ URL quá dài hoặc số lượng lớn văn bản . Nó thường được sử dụng để lưu trữ hình ảnh hoặc các đối tượng dựa trên nhị phân khác. Cá nhân tôi không bao giờ sử dụng BLOB hoặc TEXT và lưu trữ lượng lớn dữ liệu trong các tệp xml liên quan đến các thư mục dựa trên id người dùng.
Darcey

tôi không hiểu đối tượng dựa trên nhị phân. ý bạn là chúng ta có thể lưu trữ ảnh vào cơ sở dữ liệu bằng kiểu dữ liệu Blob ?? giống như thư mục? tất cả những gì tôi biết về nhị phân chỉ có 1 hoặc 0. là
nencor

1
@nencor Có, bạn có thể lưu trữ hình ảnh vào cơ sở dữ liệu. Bạn cũng có thể lưu trữ các kho lưu trữ. Nhưng bạn không thể lưu trữ một thư mục vào cơ sở dữ liệu, vì thư mục thực sự là các tính năng của hệ thống tệp. (Tuy nhiên, cuối cùng bạn có thể lưu trữ một hệ thống tệp hoàn chỉnh, ví dụ như tệp iso vào cơ sở dữ liệu)
Martin Thoma

@ martin-thoma Chúng tôi có một ứng dụng mà Phía máy chủ có cơ sở dữ liệu MongoDB. Thành phần Di động của ứng dụng sử dụng SQLLite. Cần phải có một cách để kết nối dữ liệu giữa Cơ sở dữ liệu MongoDB và Cơ sở dữ liệu SQLLite. MongoDB sử dụng ObjectIds để xác định dữ liệu duy nhất. Vì SQLLite (thế giới RDBMS) không có bất kỳ cách trực tiếp nào để đại diện cho MongoDB ObjectIds, tôi đã tự hỏi liệu tôi có thể lưu trữ các ObjectIds dưới dạng BLOB không. Đó có vẻ là một giải pháp hợp lý? Nó sẽ làm chậm hiệu suất? Có bất kỳ hạn chế nào khác không?
CS Lewis

10

TEXT và CHAR hoặc nchar thường sẽ được chuyển đổi thành văn bản thuần túy, do đó bạn chỉ có thể lưu trữ văn bản như chuỗi.

BLOB và BINARY có nghĩa là bạn có thể lưu trữ dữ liệu nhị phân như hình ảnh chỉ cần lưu trữ byte.


ý bạn là gì khi lưu trữ dữ liệu nhị phân như hình ảnh? ý bạn là url hình ảnh?
nencor

10

Kiểu dữ liệu Blob lưu trữ các đối tượng nhị phân như hình ảnh trong khi kiểu dữ liệu văn bản lưu trữ các đối tượng văn bản như các bài báo của trang web


7

BLOB là một chuỗi nhị phân để chứa một lượng dữ liệu thay đổi. Đối với hầu hết các phần, BLOB được sử dụng để giữ tệp nhị phân hình ảnh thực tế thay vì đường dẫn và thông tin tệp. Văn bản dành cho số lượng lớn các ký tự chuỗi. Thông thường, một blog hoặc bài báo tin tức sẽ cấu thành trường TEXT

L trong trường hợp này được sử dụng nêu yêu cầu lưu trữ. (Chiều dài | Kích thước + 3) miễn là nó nhỏ hơn 224.

Tham khảo: http://dev.mysql.com/doc/refman/5.0/en/blob.html


3

Theo sách Mysql Hiệu suất cao:

Sự khác biệt duy nhất giữa họ BLOBTEXT là kiểu BLOB lưu trữ dữ liệu nhị phân không có đối chiếu hoặc bộ ký tự, nhưng kiểu TEXT có bộ ký tự và đối chiếu.


1

BLOB lưu trữ dữ liệu nhị phân lớn hơn 2 GB. Kích thước tối đa cho BLOB là 4 GB. Dữ liệu nhị phân có nghĩa là dữ liệu phi cấu trúc tức là hình ảnh tệp âm thanh tệp vedio tệp chữ ký số

Văn bản được sử dụng để lưu trữ chuỗi lớn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.