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

MySQL 效能優化深度解析(四):儲存架構、表類型、行格式與快取機制

     編輯:MySQL 綜合教學

本文整理自 Monty 在 O'Reilly Open Source Convention 2000 大會的演講第四部分,涵蓋 MySQL 資料儲存方式、表類型、行格式、快取系統與緩衝區變數五大核心主題。

十六、MySQL 如何儲存資料

  • 資料庫以目錄形式儲存
  • 資料表以檔案形式儲存
  • 欄位以變長或定長格式儲存於檔案中(BDB 表採頁面儲存)
  • 支援記憶體表(HEAP)
  • 資料庫與表可透過符號連結分散於不同磁碟
  • Windows 下支援 .sym 檔案實現內部符號連結

十七、MySQL 表類型詳解

類型特性
HEAP固定行長、純記憶體儲存、採 Hash 索引,速度極快但重啟後資料消失
ISAMMySQL 3.22 早期 B-tree 格式,已淘汰
MyISAMISAM 進化版:二進制可移植、支援 NULL 索引、變長行碎片更少、大檔案支援、更優索引壓縮、更佳鍵值統計、更快 auto_increment
BDB (Berkeley DB)事務安全表,支援 BEGIN WORK / COMMIT / ROLLBACK

十八、MySQL 行格式(針對 ISAM/MyISAM)

  • 若所有欄位皆為定長(無 VARCHAR/BLOB/TEXT),建立定長表 → 速度快、安全性高
  • 含變長欄位則建立動態行格式 → 儲存空間較少,但頻繁更新易產生碎片
  • 權衡策略:將 VARCHAR/BLOB/TEXT 移至獨立表,換取主表高速查詢
  • 利用 myisampack 建立唯讀壓縮表 → 極小化磁碟佔用,適合不再更新的日誌表

十九、MySQL 快取系統(所有執行緒共享、一次性配置)

快取類型控制參數預設值說明
鍵值快取key_buffer_size8MB索引區塊快取
表快取table_cache64開啟表描述符快取
執行緒快取thread_cache_size0重用執行緒減少建立開銷
主機名快取編譯時指定128DNS 解析結果快取
記憶體映射表——僅用於壓縮表
關鍵設計:MySQL 無行級快取,將資料頁快取交由作業系統管理。

二十、MySQL 緩衝區變數(非共享、按需配置)

變數用途
sort_buffer_sizeORDER BY / GROUP BY 排序
read_buffer_size / record_buffer全表掃描
join_buffer_size無索引聯結
myisam_sort_buffer_sizeREPAIR TABLE / 索引建立
net_buffer_length讀取 SQL 語句與快取結果
tmp_table_size臨時結果 HEAP 表大小上限
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved