首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 學習筆記(四):BLOB 類型詳解與 SQL Server 大對象對比

     編輯:MySQL 綜合教學

MySQL BLOB(Binary Large Object)家族存儲二進制數據(圖片、音頻、文件流),分四級;SQL Server 無 BLOB 關鍵字,統稱「大型對象 LOB 類型」。本文對比兩者體系、存儲上限、適用場景。

一、 MySQL BLOB 四級對照

類型最大長度典型場景
TINYBLOB255 字節極小二進制片段、圖標
BLOB64 KB (65,535)縮略圖、小文檔、配置二進制
MEDIUMBLOB16 MB (16,777,215)普通圖片、音頻片段、PDF
LONGBLOB4 GB (4,294,967,295)高清視頻、大文件、備份鎖像
  • 存儲開銷:長度前綴 1/2/3/4 字節 + 數據本體。
  • BLOB 列無字符集、按字節比較排序;TEXT 列有字符集、按字符排序。
  • 建議:數據庫只存路徑/對象鍵,實體文件放對象存儲(S3/MinIO/OSS),僅極小、高頻、強一致性場景直存 BLOB。

二、 SQL Server LOB 類型

SQL Server LOB 數據存放於專用 LOB_DATA 分配單元,行內僅存 24 字節根指針。

三、 關鍵差異對比

類型最大長度備註
VARBINARY(MAX)2 GB推薦二進制存儲替代 IMAGE
VARCHAR(MAX)2 GB非 Unicode 文本
NVARCHAR(MAX)1 GB 字符 (2 GB 字節)Unicode 文本
XML2 GB結構化文檔
IMAGE / TEXT / NTEXT2 GB⚠️ 已棄用,僅向後兼容
維度MySQL BLOBSQL Server LOB
最大單值4 GB (LONGBLOB)2 GB (MAX 類型)
字符集綁定無(二進制)VARCHAR/NVARCHAR 綁定編碼
存儲結構InnoDB 頁內/溢出頁行溢出數據 + LOB_DATA 頁
流式讀寫支持支持 (.Read()/.Write())

四、 最佳實踐

  1. 對象存儲優先:數據庫存 bucket/key,應用簽名直傳/下載。
  2. 必存庫內:用 MEDIUMBLOB 覆蓋 90% 場景,LONGBLOB 謹慎用(備份/還原極慢)。
  3. 避免 SELECT *:含 BLOB 列會導致緩存池污染、網絡暴增。
  4. 索引策略:BLOB 列不能建索引,只能建前綴索引(無實際意義),業務查詢走關聯表元數據列。

BLOB 是「核武器」,用得對是核心資產,用錯是性能炸彈。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved