Monty說MySQL的優化(四)

2021-06-27 09:38:12 字數 1480 閱讀 6583

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

Monty說MySQL的優化(三)

本文是monty 在o reilly open source convention 2000大會上的演講之三,涉及維護 優化sql 不同sql伺服器的速度差別 重要的mysql 啟動選項 優化表五個方面,是篇詳盡的mysql優化文件 十一 維護 如果可能,偶爾執行一下optimize table,這...

MySQL優化四(優化表結構)

昨晚吃吃喝喝的太多,熬夜到凌晨二點。今天頭髮雜亂,臉龐憔悴,像是吸毒了。下午去買衣服,肚子一看大了不少。奈何女朋友還沒有乙個,就已經發福了。管不住口,邁不開腿。一 優化表結構 1.盡量將表字段定義為not null約束,這時由於在mysql中含有空值的列很難進行查詢優化,null值會使索引以及索引的...

mysql效能優化總結 四

mysql資料庫結構設計和sql優化 資料庫設計對效能的影響 1.過分的反正規化化設計為表建立太多的列 服務層和儲存引擎層之間通過反衝格式來拷貝資料和解析成列,列過多,帶來額外的cpu消耗 2.過分正規化化造成過多的表關聯,mysq最多支援61張表的關聯查詢,需要控制在10個以內 3.使用不恰當的分...