亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql的數據壓縮性能比較

發布時間:2021-09-15 10:17:32 來源:億速云 閱讀:145 作者:chen 欄目:數據庫

本篇內容主要講解“mysql的數據壓縮性能比較”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“mysql的數據壓縮性能比較”吧!


 
1. 測試環境:
軟硬件
一臺64位2.6.18-92 內核開發機,4G內存,4個2800Mhz Dual-Core AMD Opteron(tm) Processor 2220 CPU。
 
MySQL放在一塊7200轉SAT硬盤,未做raid;
 
MySQL未做任何優化,關閉了query cache,目的在于避免query cache對測試結果造成干擾。
 
表結構
2424753條記錄,生產環境某一個分片的實際數據;
 
分別建立了(partition_by1,idx_rank) 和(partition_by1,chg_idx)的聯合索引,其中partition_by1為32長度的varchar類型,用于檢索;其余兩個字段均為浮點數,多用于排序;
 
autokid作為子增列,充當PRIMARY KEY,僅作為數據裝載時原子性保證用,無實際意義。
 
2. 測試目的:
壓縮空間對比
壓縮率越大,占用的磁盤空間越小,直接降低數據的存儲成本;
 
查詢性能對比
壓縮后查詢性能不應該有顯著降低。Archive是不支持索引的,因此性能降低是必然的,那么我們也應該心里有個譜,到底降低了多少,能不能接受。
 
3. 測試工具:
slap
官方的工具當然是不二之選。關于mysqlslap的介紹請參考 官方文檔。
 
測試query
截取生產環境訪問topranks_v3表的實際SQL共9973條,從中抽取訪問量較大的7條,并發50,重復執行10次。命令如下:
 
./mysqlslap --defaults-file=../etc/my.cnf -u**** -p**** -c50 -i10 -q ../t.sql --debug-info4.測試結論
 
比較項 磁盤空間 耗時(秒)CPU Idle LOAD 并發
基準表(MyISAM)403956004 2.308 30 15 50
ARCHIVE 75630745 >300 75 4 1
PACK 99302109 2.596 30 22 50
 
根據上面的表格給出的測試數據,我們簡單得出以下結論:
 
針對測試表,Archive表占用空間約為之前的18.7%,myisampack后空間占用約為之前的24.6%;二者相差不多,單純從空間利用情況來看,我們似乎需要選擇archive表;
我們再看查詢性能,與基準表進行對比。無論在總耗時還是系統負載方面,50并發下的pack表查詢性能與基準表相當;而archive表在單并發情況下耗時超過了5分鐘(實在等不了了,kill之)!
那么,我們似乎可以得出結論,針對需要在線查詢的表,ARCHIVE引擎基本上可以不考慮了。
 
為什么這個測試過程中ARCHIVE引擎如此地慢呢?
 
我們知道,mysql提供archive這種存儲引擎是為了降低磁盤開銷,但還有一個前提,那就是被歸檔的數據不需要或者很少被在線查詢,偶爾的查詢慢一些也是沒關系的。鑒于上述原因,archive表是不允許建立自增列之外的索引的。
 
有了這個共識,我們拿一條測試SQL來分析一下不用索引前后的查詢性能差別為什么這么大。在我們的測試SQL中有這么一條:
 
SELECT c1,c2,...,cn FROM  mysqlslap.rpt_topranks_v3
WHERE ... AND partition_by1 = '50008090'
ORDER BY added_quantity3 DESC
LIMIT 500我們前邊說過,測試的這個表在partition_by1這個字段上建立了索引,那么,我們初步判斷在基準表和myisampack表上,這個查詢應該用到了partition_by1的索引;EXPLAIN一下:
 
mysql> EXPLAIN
    -> SELECT ... FROM  mysqlslap.rpt_topranks_v3
    -> WHERE ... AND partition_by1 = '50008090'
    -> ORDER BY added_quantity3 DESC
    -> LIMIT 500\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        TABLE: rpt_topranks_v3
         type: ref
possible_keys: idx_toprank_pid,idx_toprank_chg
          KEY: idx_toprank_pid
      key_len: 99
          ref: const
         rows: 2477
        Extra: USING WHERE; USING filesort
1 row IN SET (0.00 sec)正如我們所料,這個查詢用到了建立在partition_by1這個字段上的索引,匹配的目標行數為2477,然后還有一個在added_quantity3字段上的排序。由于added_quantity3沒有索引,所以用到了filesort。
 
我們再看一下這條SQL在歸檔表上的EXPLAIN結果:
 
mysql> EXPLAIN
    -&gt; SELECT ... FROM  mysqlslap.rpt_topranks_v3_<strong>archive</strong>
    -&gt; WHERE ... AND partition_by1 = '50008090'
    -&gt; ORDER BY added_quantity3 DESC
    -&gt; LIMIT 500\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        TABLE: rpt_topranks_v3_archive
         type: ALL
possible_keys: NULL
          KEY: NULL
      key_len: NULL
          ref: NULL
         rows: 2424753
        Extra: USING WHERE; USING filesort
1 row IN SET (0.00 sec)EXPLAIN說:“我沒有索引可用,所以只能全表掃描2424753行記錄,然后再來個filesort。”你要追求性能,那顯然是委屈MySQL了。
 

到此,相信大家對“mysql的數據壓縮性能比較”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

友谊县| 阳江市| 蓝山县| 陆良县| 法库县| 林芝县| 安化县| 酉阳| 洱源县| 南昌市| 康马县| 永修县| 久治县| 安远县| 罗定市| 弥渡县| 布尔津县| 郸城县| 德格县| 同心县| 门源| 济源市| 锦屏县| 类乌齐县| 镇坪县| 荣昌县| 绵阳市| 南溪县| 遂平县| 专栏| 屯门区| 贺州市| 靖西县| 丹东市| 六枝特区| 仲巴县| 抚州市| 尼勒克县| 自贡市| 丰镇市| 利川市|