首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Monty 談 MySQL 優化(四):資料儲存架構、表類型、行格式、快取體系與緩衝區變數

     編輯:MySQL 資料庫相關知識

十六、MySQL 資料儲存方式

  • 資料庫以目錄存儲
  • 表以檔案存儲
  • 欄位以定長/變長格式存儲於檔案(BDB 以頁面存儲)
  • 支援記憶體表
  • 資料庫/表可跨磁碟用符號連結
  • Windows 下支援 .sym 檔內部符號連結資料庫

十七、MySQL 表類型

  • HEAP: 固定行長,僅記憶體,HASH 索引
  • ISAM: 3.22 早期 B-tree 格式
  • MyISAM: ISAM 新版,擴展:二進制可移植、NULL 列索引、變長行碎片更少、大檔案支援、更好索引壓縮、更好鍵值統計分布、更快 auto_increment
  • Berkeley DB (BDB): 事務安全(BEGIN WORK/COMMIT/ROLLBACK)

十八、MySQL 行類型(ISAM/MyISAM)

  • 全定長列(無 VARCHAR/BLOB/TEXT)→ 定長表格式,**快很多且更安全**
  • 含變長列 → 動態長度格式,佔用較少空間但頻繁更新產生碎片
  • 某些情況不值得將 VARCHAR/BLOB/TEXT 移至別表只為主表提速
  • myisampack (ISAM 用 pack_isam) 可建唯讀壓縮表,極小磁碟佔用,慢速磁碟上極佳,適用不再更新的日誌表

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

  • 鍵值快取:key_buffer_size,預設 8MB
  • 表快取:table_cache,預設 64
  • 執行緒快取:thread_cache_size,預設 0
  • 主機名快取:編譯時可改,預設 128
  • 記憶體映射表:目前僅用於壓縮表
  • 注意: MySQL 無行快取,交由作業系統處理

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

  • sort_buffer:ORDER BY/GROUP BY
  • record_buffer:掃描表
  • join_buffer_size:無鍵聯結
  • myisam_sort_buffer_size:REPAIR TABLE
  • net_buffer_length:讀 SQL 語句並快取結果
  • tmp_table_size:臨時結果 HEAP 表大小
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved