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

Monty說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