国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL 壓縮的使用場景和解決方案

2024-07-24 12:51:35
字體:
來源:轉載
供稿:網友

導語

描述 MySQL 壓縮的使用場景和解決方案,包括壓縮傳輸協議、壓縮列解決方案和壓縮表解決方案。

提到 MySQL 壓縮相關的內容,我們能想到的可能是如下幾種和壓縮相關的場景:

1、客戶端和服務器之間傳輸的數據量太大,需要進行壓縮,節約帶寬

2、MySQL 某個列的數據量大,只針對某個列的數據壓縮

3、MySQL 某個或者某幾個表數據太多,需要將表數據壓縮存放,減少磁盤空間的占用

這幾個問題在 MySQL 側都有很好的解決方案 ,針對第 1 個問題,可以使用 MySQL 的壓縮協議解決;針對第 2 個問題,可以采用 MySQL 的壓縮和解壓函數完美解決;而針對最復雜的第 3 個問題,則可以在引擎層面進行解決,目前 myisam、innodb、tokudb、MyRocks 等引擎都支持表的壓縮。本篇文章要詳細討論的就是此類關于 MySQL 壓縮機制相關 的問題,下面是主要的內容:

一、MySQL 壓縮協議介紹

1、適用場景

MySQL 壓縮協議適合的場景是 MySQL 的服務器端和客戶端之間傳輸的數據量很大,或者可用帶寬不高的情況,典型的場景有如下兩個:

a、查詢大量的數據,帶寬不夠(比如導出數據的時候);

b、復制的時候 binlog 量太大,啟用 slave_compressed_protocol 參數進行日志壓縮復制。

2、壓縮協議簡介

壓縮協議是 MySQL 通信協議的一部分,要啟用壓縮協議進行數據傳輸,需要 MySQL 服務器端和客戶端都支持 zlib 算法。啟動壓縮協議會導致 CPU 負載略微上升。使用啟用壓縮協議使用-C 參數或者 --compress=true 參數啟動客戶端的壓縮功能。如果啟用了-C 或者 compress=true 選項,那么在連接到服務器段的時候,會發送 0x0020(CLIENT_COMPRESS)的服務器權能標志位,和服務器端協商通過后(3 次握手以后),就支持壓縮協議了。由于采用壓縮,數據包的格式會發生變化,具體的變化如下:

未壓縮的數據包格式:

壓縮后的數據包格式:

大家可能留意到壓縮后的數據報格式有壓縮和未壓縮之分,這個是 MySQL 為了較少 CPU 開銷而做的一個優化。如果內容小于 50 個字節的時候,就不對內容進行壓縮,而大于 50 字節的時候,才會啟用壓縮功能。具體的規則如下:

當第三個字段的值等于 0x00 的時候,表示當前包沒有壓縮,因此 n * byte 的內容為 1 * byte,n * byte,即請求類型和請求內容。

當第三個字段的值大于 0x00 的時候,表示當前包已采用 zlib 壓縮,因此使用的時候需要對 n * byte 進行解壓,解壓后內容為 1

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 雷波县| 平陆县| 金秀| 前郭尔| 栾川县| 远安县| 铜陵市| 科技| 鲁山县| 海阳市| 贡山| 新民市| 遂平县| 甘肃省| 托克逊县| 丹东市| 满洲里市| 申扎县| 永德县| 永川市| 临泉县| 西青区| 中方县| 隆尧县| 南城县| 滁州市| 高碑店市| 砀山县| 南阳市| 卢龙县| 揭西县| 沙田区| 内丘县| 黄龙县| 沙雅县| 南江县| 鹿泉市| 花莲县| 武陟县| 刚察县| 瑞安市|