您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“MySQL壓縮表有什么作用”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
MySQL的表壓縮技術(shù),可以減少數(shù)據(jù)的存儲空間、減少IO、提高吞吐率,提高CPU的利用率。
壓縮表語法:
如果使用表壓縮技術(shù),要先確認(rèn)innodb_file_per_table=1,以及innodb_file_format=Barracuda
SET GLOBAL innodb_file_per_table=1; SET GLOBAL innodb_file_format=Barracuda; CREATE TABLE t1 (wyzc INT PRIMARY KEY) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
KEY_BLOCK_SIZE參數(shù)決定表壓縮page的大小,在建表時指定,意味著innodb會將page壓縮到指定的大小,例如,如果設(shè)置key_block_size=8,則將其壓縮到8k,key_block_size的值應(yīng)根據(jù)記錄的長度來確定,如果設(shè)置的過小,可能由于一個page無法壓縮太多行而出現(xiàn)高概率的壓縮失敗,導(dǎo)致page分裂,但設(shè)置為16k則不會取得太好的壓縮效果
KEY_BLOCK_SIZE的默認(rèn)值為8K
什么使用壓縮表,這取決于你的負(fù)載和數(shù)據(jù)集合,或者特定的配置,可以考慮如下因素:
1、表中有較多重復(fù)的字符串
2、已經(jīng)在應(yīng)用中壓縮過的數(shù)據(jù),不適合存儲到壓縮表中。
3、對于如何壓縮表才算最好的,MySQL沒有明確的定義,所以壓縮后一定要通過like或order by來測試壓縮后的索引性能
4、在應(yīng)用中進(jìn)行壓縮的,不適合再進(jìn)行表壓縮
5、在表上的workload是一個關(guān)鍵性因素,如果更新主要作用在外部存儲的長字符串的非索引列上,壓縮的開銷可能是可以接受的。如果你的負(fù)載是I/O bound而非CPU bound的,壓縮可能會改善整體性能
6、壓縮可以通過消耗CPU來減少IO,如果IO是相對緊缺的資源時,會獲得更好的效果
7、選擇壓縮Page的大小應(yīng)該比記錄更大,否則可能會引起大量的壓縮失敗,通常情況下key_block_size=8是比較安全的設(shè)置
“MySQL壓縮表有什么作用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。