อะไรคือความแตกต่างระหว่างประเภทข้อมูล BLOB และ TEXT ใน MySQL


117

คืออะไรblobและคือtextอะไร? อะไรคือความแตกต่าง?

ฉันต้องใช้blobเมื่อใดและฉันต้องtextเป็นประเภทข้อมูลเมื่อใด

เพราะblobและtextมีmediumblob== mediumtext, ==smallblob small textพวกเขามีความหมายเดียวกันหรือไม่?

และมองไปที่นี้MEDIUMBLOB, MEDIUMTEXT L+ 3 L < 224ไบต์ที่

คืออะไรL?


ฉันคิดว่าโพสต์นี้ตอบคำถามของคุณ stackoverflow.com/questions/7071662/mysql-text-vs-blob-vs-clob
earlonrails

คำตอบ:


103

TEXT และ CHAR จะแปลงเป็น / จากชุดอักขระที่เกี่ยวข้องกับเวลา BLOB และ BINARY เพียงแค่จัดเก็บไบต์

BLOB ใช้สำหรับจัดเก็บข้อมูลไบนารีในขณะที่ Text ใช้เพื่อจัดเก็บสตริงขนาดใหญ่

ค่า BLOB ถือเป็นสตริงไบนารี (สตริงไบต์) พวกเขาไม่มีชุดอักขระและการเรียงลำดับและการเปรียบเทียบจะขึ้นอยู่กับค่าตัวเลขของไบต์ในค่าคอลัมน์

ค่า TEXT ถือว่าเป็นสตริงที่ไม่ใช่ไบนารี (สตริงอักขระ) พวกเขามีชุดอักขระและค่าจะเรียงลำดับและเปรียบเทียบตามการเรียงชุดอักขระ

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


3
ดังนั้นเราจึงใช้ข้อความในการจัดเก็บข้อความขนาดยาวเช่น "wordpress post"? และเราใช้ blob เพื่อเก็บที่อยู่ URL ที่ยาวมาก? แล้วทำไมเราไม่ใช้ varchar เพื่อจัดเก็บข้อความที่ยาวมากแทนที่จะใช้ blob หรือ text? เนื่องจากในการคำนวณหน่วยความจำ varchar นั้นง่ายมากเช่นสร้างเว็บไซต์ตาราง (website_name varchar (30)) จากนั้นเรากรอก website_name "stackoverflow" ดังนั้นหน่วยความจำที่ต้องการคือ 13byte
nencor

5
TEXT จะถูกแทนที่ด้วย Varchar (MAX) แต่ตอนนี้ขึ้นอยู่กับรุ่นของ mysql ที่คุณใช้ TEXT สำหรับโพสต์ข้อความขนาดใหญ่เช่นบทความในบล็อกเป็นต้นไม่ควรใช้ BLOB เพื่อเก็บที่อยู่ URL ที่ยาวมากหรือข้อความจำนวนมาก . โดยปกติจะใช้เพื่อเก็บรูปภาพหรือวัตถุที่ใช้ไบนารีอื่น ๆ โดยส่วนตัวฉันไม่เคยใช้ BLOB หรือ TEXT และจัดเก็บข้อมูลจำนวนมากในไฟล์ xml ที่สัมพันธ์กับโฟลเดอร์ที่ใช้รหัสผู้ใช้
Darcey

ฉันไม่เข้าใจวัตถุที่ใช้ไบนารี คุณหมายถึงเราสามารถจัดเก็บภาพถ่ายไปยังฐานข้อมูลโดยใช้ประเภทข้อมูล Blob ?? เช่นเดียวกับโฟลเดอร์? สิ่งที่ฉันรู้เกี่ยวกับไบนารีมีเพียง 1 หรือ 0 เท่านั้น
nencor

1
@nencor ใช่คุณสามารถจัดเก็บภาพลงในฐานข้อมูลได้ คุณยังสามารถจัดเก็บที่เก็บถาวร แต่คุณไม่สามารถจัดเก็บโฟลเดอร์ลงในฐานข้อมูลได้เนื่องจากโฟลเดอร์เป็นคุณสมบัติของระบบไฟล์ (ในที่สุดคุณสามารถจัดเก็บระบบไฟล์ที่สมบูรณ์เช่นไฟล์ iso ลงในฐานข้อมูลได้)
Martin Thoma

@ martin-thoma เรามีแอปพลิเคชันที่ Server-Side มีฐานข้อมูล MongoDB Mobile Component ของแอปพลิเคชันใช้ SQLLite จำเป็นต้องมีวิธีเชื่อมโยงข้อมูลระหว่างฐานข้อมูล MongoDB และฐานข้อมูล SQLLite MongoDB ใช้ ObjectIds เพื่อระบุข้อมูลโดยไม่ซ้ำกัน เนื่องจาก SQLLite (โลก RDBMS) ไม่มีวิธีใด ๆ โดยตรงในการแสดง MongoDB ObjectIds ฉันจึงสงสัยว่าฉันสามารถจัดเก็บ ObjectIds เป็นประเภท BLOB ได้หรือไม่ ฟังดูเป็นวิธีแก้ปัญหาที่สมเหตุสมผลหรือไม่? ประสิทธิภาพจะช้าหรือไม่? จะมีข้อเสียอื่น ๆ หรือไม่?
CS Lewis

10

TEXT และ CHAR หรือ nchar ที่โดยปกติจะถูกแปลงเป็นข้อความธรรมดาดังนั้นคุณสามารถจัดเก็บข้อความเช่นสตริงเท่านั้น

BLOB และ BINARY ซึ่งหมายความว่าคุณสามารถจัดเก็บข้อมูลไบนารีเช่นรูปภาพเพียงแค่เก็บไบต์


คุณหมายถึงอะไรที่เก็บข้อมูลไบนารีเช่นรูปภาพ คุณหมายถึง URL รูปภาพหรือเปล่า
nencor

10

ประเภทข้อมูล Blob เก็บวัตถุไบนารีเช่นรูปภาพในขณะที่ประเภทข้อมูลข้อความจะเก็บวัตถุข้อความเช่นบทความของหน้าเว็บ


7

BLOB เป็นสตริงไบนารีสำหรับเก็บข้อมูลจำนวนตัวแปร ส่วนใหญ่จะใช้ BLOB เพื่อเก็บไบนารีของรูปภาพจริงแทนข้อมูลเส้นทางและไฟล์ ข้อความมีไว้สำหรับอักขระสตริงจำนวนมาก โดยปกติบล็อกหรือบทความข่าวจะประกอบด้วยฟิลด์ TEXT

L ในกรณีนี้ใช้เพื่อระบุความต้องการในการจัดเก็บ (ความยาว | ขนาด +3) ตราบใดที่มีค่าน้อยกว่า 224

อ้างอิง: http://dev.mysql.com/doc/refman/5.0/en/blob.html


3

ตามหนังสือ Mysql ประสิทธิภาพสูง:

ความแตกต่างเพียงอย่างเดียวระหว่างตระกูลBLOBและTEXTคือ ประเภทBLOB จะจัดเก็บข้อมูลไบนารีโดยไม่มีการจัดเรียงหรือชุดอักขระ แต่ ประเภทTEXTมีชุดอักขระและการเรียงลำดับ


1

BLOB เก็บข้อมูลไบนารีที่มากกว่า 2 GB ขนาดสูงสุดสำหรับ BLOB คือ 4 GB ข้อมูลไบนารีหมายถึงข้อมูลที่ไม่มีโครงสร้างเช่นภาพไฟล์เสียงไฟล์ vedio ลายเซ็นดิจิทัล

ข้อความถูกใช้เพื่อจัดเก็บสตริงขนาดใหญ่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.