十六、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表大小。