程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Monty說MySQL的優化(四)

Monty說MySQL的優化(四)

編輯:MySQL綜合教程

本文是Monty在O'Reilly Open Source Convention 2000大會上的演講之四,涉及MySQL如何次存儲數據、MySQL表類型、MySQL行類型、MySQL高速緩存、MySQL緩存區變量五個方面,是篇詳盡的MySQL優化文檔

十六、MySQL如何次存儲數據

數據庫以目錄存儲。
表以文件存儲。
列以變長或定長格式存儲在文件中。對BDB表,數據以頁面形式存儲。
支持基於內存的表。
數據庫和表可在不同的磁盤上用符號連接起來。
在Windows上,MySQL支持用.sym文件內部符號連接數據庫。

十七、MySQL表類型

HEAP表:固定行長的表,只存儲在內存中並用HASH索引進行索引。
ISAM表:MySQL 3.22中的早期B-tree表格式。
MyIASM:IASM表的新版本,有如下擴展:
二進制層次的可移植性。
NULL列索引。
對變長行比ISAM表有更少的碎片。
支持大文件。
更好的索引壓縮。
更好的鍵嗎統計分布。
更好和更快的auto_increment處理。
來自Sleepcat的Berkeley DB(BDB)表:事務安全(有BEGIN WORK/COMMIT|ROLLBACK)。

十八、MySQL行類型(專指IASM/MyIASM表)

如果所有列是定長格式(沒有VARCHAR、BLOB或TEXT),MySQL將以定長表格式創建表,否則表以動態長度格式創建。
定長格式比動態長度格式快很多並更安全。
動態長度行格式一般占用較少的存儲空間,但如果表頻繁更新,會產生碎片。
在某些情況下,不值得將所有VARCHAR、BLOB和TEXT列轉移到另一個表中,只是獲得主表上的更快速度。
利用myiasmchk(對ISAM,pack_iasm),可以創建只讀壓縮表,這使磁盤使用率最小,但使用慢速磁盤時,這非常不錯。壓縮表充分地利用將不再更新的日志表

十九、MySQL高速緩存(所有線程共享,一次性分配)

鍵碼緩存:key_buffer_size,默認8M。
表緩存: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