程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 如何掌握MySQL數據庫中動態表的特征

如何掌握MySQL數據庫中動態表的特征

編輯:MySQL綜合教程

以下的文章主要介紹的是如何正確掌握MySQL數據庫中動態表的特征,可以說動態表在MySQL數據庫中使用頻率還是很大的,所以MySQL數據庫中動態表的掌握也是一件很重要的事情,以下就是文章的具體內容。

如果一個MyISAM表包含任何可變長度列(VARCHAR, BLOB或TEXTDynamic),或者如果一個表被用ROW_FORMAT=DYNAMIC選項來創建,動態存儲格式被使用。

這個格式更為復雜一點,因為每行有一個表明行有多長的頭。當一個記錄因為更新的結果被變得更長,該記錄也可以在超過一個位置處結束。

你可以使用OPTIMIZE TABLE或myisamchk來對一個表整理碎片。如果在一個表中有你頻繁訪問或改變的固定長度列,表中也有一些可變長度列,僅為避免碎片而把這些可變長度列移到其它表可能是一個好主意。

MySQL數據庫動態格式表的一般特征:

除了長度少於4的列外,所有的字符串列是動態的。

在每個記錄前面是一個位圖,該位圖表明哪一列包含空字符串(對於字符串列)或者0(對於數字列)。注意,這並不包括包含NULL值的列。如果一個字符列在拖曳空間移除後長度為零,或者一個數字列為零值,這都在位圖中標注了且列不被保存到磁盤。 非空字符串被存為一個長度字節加字符串的內容。

通常比固定長度表需要更少的磁盤空間。

每個記錄僅使用必需大小的空間。盡管如此,如果一個記錄變大,它就按需要被分開成多片,造成記錄碎片的後果。比如,你用擴展行長度的信息更新一行,該行就變得有碎片。在這種情況下,你可以時不時運行OPTIMIZE TABLE或myisamchk -r來改善性能。可使用myisamchk -ei來獲取表的統計數據。

動態格式表在崩潰後要比靜態格式表更難重建,因為一個記錄可能被分為多個碎片且鏈接(碎片)可能被丟失。

動態尺寸記錄期望的行長度用下列表達式來計算:

  1. ·3  
  2. ·+ (number of columns + 7) / 8  
  3. ·+ (number of char columns)  
  4. ·+ (packed size of numeric columns)  
  5. ·+ (length of strings)  
  6. ·+ (number of NULL columns + 7) / 8  

對每個鏈接需要額外的6字節。在一個更新導致一個記錄的擴大之時,一個動態記錄被鏈接了。每個新鏈接至少是20字節,所以下一個擴大可能在同樣的鏈接裡進行。如果不是,則另一個鏈接將被建立。你可以使用myisamchk -ed來找出鏈接的數目。所有的鏈接可以用myisamchk -r來移除。

以上的相關內容就是對怎樣掌握MySQL數據庫中動態表特征的介紹,望你能有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved