最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

優(yōu)化InnoDB表BLOB,TEXT列的存儲效率

 更新時間:2019年03月15日 14:07:36   作者:CODETC  
今天小編就為大家分享一篇關于優(yōu)化InnoDB表BLOB,TEXT列的存儲效率,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

首先,介紹下關于MySQL InnoDB引擎存儲格式的幾個要點:

1、InnoDB可以選擇使用共享表空間或者是獨立表空間方式,建議使用獨立表空間,便于管理、維護。啟用 innodb_file_per_table 選項,5.5以后可以在線動態(tài)修改生效,并且執(zhí)行 ALTER TABLE xx ENGINE = InnoDB 將現(xiàn)有表轉成獨立表空間,早于5.5的版本,修改完這個選項后,需要重啟才能生效。

2、InnoDB的data page默認16KB,5.6版本以后,新增選項 innodb_page_size 可以修改,在5.6以前的版本,只能修改源碼重新編譯,但并不推薦修改這個配置,除非你非常清楚它有什么優(yōu)缺點。

3、InnoDB的data page在有新數(shù)據(jù)寫入時,會預留1/16的空間,預留出來的空間可用于后續(xù)的新紀錄寫入,減少頻繁的新增data page的開銷。

4、每個data page,至少需要存儲2行記錄。因此理論上行記錄最大長度為8KB,但事實上應該更小,因為還有一些InnoDB內(nèi)部數(shù)據(jù)結構要存儲。

5、受限于InnoDB存儲方式,如果數(shù)據(jù)是順序寫入的話,最理想的情況下,data page的填充率是15/16,但一般沒辦法保證完全的順序寫入,因此,data page的填充率一般是1/2到15/16。因此每個InnoDB表都最好要有一個自增列作為主鍵,使得新紀錄寫入盡可能是順序的。

6、當data page填充率不足1/2時,InnoDB會進行收縮,釋放空閑空間。

7、MySQL 5.6版本的InnoDB引擎當前支持COMPACT、REDUNDANT、DYNAMICCOMPRESSED四種格式,默認是COMPACT格式,COMPRESSED用的很少且不推薦(見下一條),如果需要用到壓縮特性的話,可以直接考慮TokuDB引擎。

8、COMPACT行格式相比REDUNDANT,大概能節(jié)省20%的存儲空間,COMPRESSED相比COMPACT大概能節(jié)省50%的存儲空間,但會導致TPS下降了90%。因此強烈不推薦使用COMPRESSED行格式。

9、當行格式為DYNAMIC或COMPRESSED時,TEXT/BLOB之類的長列(long column,也有可能是其他較長的列,不一定只有TEXT/BLOB類型,看具體情況)會完全存儲在一個獨立的data page里,聚集索引頁中只使用20字節(jié)的指針指向新的page,這就是所謂的off-page,類似ORACLE的行遷移,磁盤空間浪費較嚴重,且I/O性能也較差。因此,強烈不建議使用BLOB、TEXT、超過255長度的VARCHAR列類型。

10、當InnoDB的文件格式(innodb_file_format)設置為Antelope,并且行格式為COMPACT 或 REDUNDANT 時,BLOB、TEXT或者長VARCHAR列只會將其前768字節(jié)存儲在聚集索頁中(最大768字節(jié)的作用是便于創(chuàng)建前綴索引/prefix index),其余更多的內(nèi)容存儲在額外的page里,哪怕只是多了一個字節(jié)。因此,所有列長度越短越好。

11、在off-page中存儲的BLOB、TEXT或者長VARCHAR列的page是獨享的,不能共享。因此強烈不建議在一個表中使用多個長列。

綜上,如果在實際業(yè)務中,確實需要在InnoDB表中存儲BLOB、TEXT、長VARCHAR列時,有下面幾點建議:

1、盡可能將所有數(shù)據(jù)序列化、壓縮之后,存儲在同一個列里,避免發(fā)生多次off-page。

2、實際最大存儲長度低于255的列,轉成VARCHAR或者CHAR類型(如果是變長數(shù)據(jù)二者沒區(qū)別,如果是定長數(shù)據(jù),則使用CHAR類型)。

3、如果無法將所有列整合到一個列,可以退而求其次,根據(jù)每個列最大長度進行排列組合后拆分成多個子表,盡量是的每個子表的總行長度小于8KB,減少發(fā)生off-page的頻率。

4、上述建議是在data page為默認的16KB前提下,如果修改成8KB或者其他大小,請自行根據(jù)上述理論進行測試,找到最合適的值。

5、字符型列長度小于255時,無論采用CHAR還是VARCHAR來存儲,或者把VARCHAR列長度定義為255,都不會導致實際表空間增大。

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接

相關文章

  • MySQL使用游標批量處理進行表操作

    MySQL使用游標批量處理進行表操作

    這篇文章主要介紹了MySQL使用游標批量進行表操作,包括批量添加索引、批量添加字段等,感興趣的小伙伴們可以參考一下
    2016-03-03
  • mysql 5.6.21 安裝與配置詳細步驟

    mysql 5.6.21 安裝與配置詳細步驟

    這篇文章主要介紹了mysql5.6.21安裝與配置的詳細步驟,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • MySQL亂碼問題終極指南

    MySQL亂碼問題終極指南

    為了讓大家盡量在工作中少受或者不受亂碼的困擾,這篇文章主要為大家分享了MySQL亂碼問題終極指南,感興趣的小伙伴們可以參考一下
    2016-04-04
  • 關于MySql 10038錯誤的完美解決方法(三種)

    關于MySql 10038錯誤的完美解決方法(三種)

    本文給大家?guī)砣N有關mysql報10038錯誤的解決方法,每種方法都非常不錯,需要的朋友參考下
    2016-09-09
  • MySQL優(yōu)化之連接優(yōu)化

    MySQL優(yōu)化之連接優(yōu)化

    MySQL連接優(yōu)化主要指客戶端連接數(shù)據(jù)庫以及數(shù)據(jù)庫為響應客戶端的請求而打開數(shù)據(jù)表和索引的過程中涉及到的參數(shù)調(diào)整。下面我們來詳細的探討下
    2017-03-03
  • MySQL實現(xiàn)批量推送數(shù)據(jù)到Mongo

    MySQL實現(xiàn)批量推送數(shù)據(jù)到Mongo

    這篇文章主要為大家詳細介紹了MySQL如何實現(xiàn)批量推送數(shù)據(jù)到Mongo,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的可以了解一下
    2023-05-05
  • MySQL數(shù)據(jù)誤刪或者誤更新如何恢復詳細步驟(一看就會)

    MySQL數(shù)據(jù)誤刪或者誤更新如何恢復詳細步驟(一看就會)

    本文主要為開發(fā)人員提供在測試環(huán)境中恢復近期誤操作的少量數(shù)據(jù)的方法,首先介紹了如何下載并安裝MyFlash工具,然后詳細講解了如何利用該工具和MySQL的binlog日志來恢復誤刪或誤更新的數(shù)據(jù),介紹的非常詳細,需要的朋友可以參考下
    2024-10-10
  • MySql插入數(shù)據(jù)成功但是報[Err] 1055錯誤的解決方案

    MySql插入數(shù)據(jù)成功但是報[Err] 1055錯誤的解決方案

    這篇文章主要介紹了MySql插入數(shù)據(jù)成功但是報[Err] 1055錯誤的解決方案,需要的朋友可以參考下
    2017-08-08
  • 一文帶你玩轉MySQL獲取時間和格式轉換各類操作方法詳解

    一文帶你玩轉MySQL獲取時間和格式轉換各類操作方法詳解

    最近在開發(fā)中常常使用時間的轉換函數(shù),所以一直都想整理一下這些函數(shù),下面這篇文章主要給大家介紹了關于MySQL獲取時間和格式轉換各類操作方法的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • MySql行轉列&列轉行方式

    MySql行轉列&列轉行方式

    在MySQL數(shù)據(jù)庫管理中,行轉列和列轉行是常見的數(shù)據(jù)處理需求,行轉列通常涉及將表中的行數(shù)據(jù)按照某種規(guī)則轉換成列形式,常用于報表生成、數(shù)據(jù)分析等場景,列轉行則是將原本以列形式存儲的數(shù)據(jù)轉換成行形式,以便于進行進一步的數(shù)據(jù)處理或分析
    2024-11-11

最新評論

乾安县| 榆树市| 宜宾县| 东明县| 靖州| 晋江市| 西和县| 江陵县| 临潭县| 弥渡县| 遵化市| 准格尔旗| 永平县| 博湖县| 南汇区| 桦川县| 安吉县| 舒城县| 秭归县| 沈阳市| 晋中市| 呼和浩特市| 翼城县| 陇川县| 信丰县| 土默特右旗| 界首市| 建德市| 鄂托克前旗| 贺州市| 兰考县| 丹寨县| 玉林市| 蓬莱市| 安新县| 蓝田县| 揭东县| 七台河市| 泸州市| 阿图什市| 宝鸡市|