MySQLのデータ圧縮(圧縮テーブルまたは列)

問題:最適化するために、テーブルの下に、データ・ストレージ・スペースを削減するためにどのように一定量のデータへのユーザーまで、パフォーマンスの問題は、MySQL、
MySQLは圧縮と解凍機能が付属しています

1つの表形式のデータ圧縮

270ワットストリップテストデータ格納テーブル(room_record1)メモリ空間9G

CREATE TABLE `room_record1` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `room` int(11) NOT NULL,
  `uuid` varchar(100) NOT NULL,
  `info` blob NOT NULL,
  `timestamp` int(11) NOT NULL,
  `type` int(11) NOT NULL,
  PRIMARY KEY (`id`,`timestamp`),
  KEY `room` (`room`),
  KEY `uuid` (`uuid`),
  KEY `idx_timestamp` (`timestamp`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8

ここに画像を挿入説明
最適化フィールド:infoフィールドの圧縮
スペース:
ここに画像を挿入説明

最適化されたテーブル構造:

CREATE TABLE `room_record2` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `room` int(11) NOT NULL,
  `uuid` varchar(100) NOT NULL,
  `info` blob NOT NULL,
  `timestamp` int(11) NOT NULL,
  `type` int(11) NOT NULL,
  PRIMARY KEY (`id`,`timestamp`),
  KEY `room` (`room`),
  KEY `uuid` (`uuid`),
  KEY `idx_timestamp` (`timestamp`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8

INSERT INTO  `room_record2` (`id`, `room`, `uuid`, `info`, `timestamp`, `type`) VALUES ('202737598', '434436', 'f2ba4943-6779-494d-a103-0b86873462a3',compress( '[[0,2,\"4s\",[1,431642,-500,\"1s,1b,2s,2s,2b,2b,3b,4b,5s,8b,9s,9s,9b,Tb\",-2,-2,0,-1,\"194.5\"],[2,634577,295,\"2s,2s,2b,2b,3b,4b,4b,5b,6s,6s,7s,7b,8s,9b\",-2,-2,0,-1,\"829\"],[0,2,2,1,0,1,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,10,1,0,2,5,{\"min_gold_ka\":3,\"less_score_free\":5,\"limit_enter_battle_score\":50,\"limit_battle_score\":20,\"score_limit_open\":1,\"score_max_limit\":11,\"min_limit_gold_ka\":100,\"score_limit_open1\":1,\"score_max_limit1\":150,\"min_limit_gold_ka1\":300,\"less_score_reback_header\":-1,\"choupai_num\":0,\"tuoguan\":120,\"noreback\":0,\"beilv\":50,\"fanbei\":2,\"less_score\":5,\"fanbei_open\":1,\"add_score_open\":0,\"less_score_add_level\":1,\"add_score\":1,\"hutoall\":0,\"zhangshu\":3,\"changshuang\":1,\"tuoguan_mode\":1}]],[1,2,12,\"4s\",0,0,[[1,0,0],[2,0,0]]],[1,2,11,\"9b\",0,0,[[1,0,0],[2,0,0]]],[2,1,\"2,\"],[1,1,1,\"9b,9s,9s,9b,8b,Tb\",0,0,[[1,0,0],[2,0,0]]],[1,1,11,\"4b\",0,0,[[1,0,0],[2,0,0]]],[2,2,\"1,2,\"],[1,2,2,\"4b,4b,4b\",3,0,[[1,0,0],[2,0,0]]],[1,2,11,\"4s\",3,0,[[1,0,0],[2,0,0]]],[1,2,7,\"4s\",3,0,[[1,0,0],[2,0,0]]],[1,1,12,\"1s\",0,0,[[1,0,0],[2,0,0]]],[2,1,\"2,\"],[1,1,10,\"1s\",0,0,[[1,0,0],[2,0,0]]],[1,1,7,\"1s\",0,0,[[1,0,0],[2,0,0]]],[1,2,12,\"Ts\",3,0,[[1,0,0],[2,0,0]]],[1,1,9,\"\",0,0,[[1,0,0],[2,0,0]]],[1,1,12,\"Ts\",9,0,[[1,0,4],[2,0,-4]]],[3,1,[1,4,4,-500],[2,-4,-4,295],[1,\"1s,1b,2s,2s,2b,2b,3b,5s\"],[2,\"2s,2s,2b,2b,3b,5b,6s,6s,7s,7b,8s\"],[1,2,1,4,-1,0,2,-4,-1,0,3,1,\"Ts\",0,0,29,\"5s\",\"7b\",\"Tb\",\"4b\",\"5b\",\"6s\",\"9b\",\"3s\",\"3s\",\"9s\",\"6b\",\"Tb\",\"1s\",\"4s\",\"8s\",\"Ts\",\"7b\",\"6b\",\"3s\",\"Tb\",\"5b\",\"1b\",\"8b\",\"Ts\",\"7s\",\"7b\",\"5s\",\"5s\",\"7s\",2,1,8,\"1s\",\"1b\",\"2s\",\"2s\",\"2b\",\"2b\",\"3b\",\"5s\",2,11,\"2s\",\"2s\",\"2b\",\"2b\",\"3b\",\"5b\",\"6s\",\"6s\",\"7s\",\"7b\",\"8s\",5,5,0,3,\"9b\",\"9s\",\"9s\",3,0,3,\"9b\",\"8b\",\"Tb\",2,6,3,\"1b\",\"2b\",\"3b\",2,3,3,\"1s\",\"5s\",\"Ts\",5,0,3,\"2s\",\"2s\",\"2b\",9,4,\"Ts\",2,1,4,2,-4,2,434436,1,0,1582128000,4,10,0]]]'), '1582128000', '18');

まず、ブロブのタイプ説明
:1、MySQLのBLOB 4種類があります
  。・TINYBLOB:のみ255文字
  65Kに上限バイト:・ブロブを
  バイト16Mに限定:MEDIUMBLOB・
  ・LONGBLOBを:4GBまで
のタイプに加えて2、後部アクセスファイルサイズの制限はなく、MySQLの設定ファイルを変更します。
  Windowsでは、ファイルのmy.iniまたはmy.cnfのファイルを変更するなどの基本的なLinuxの、追加のmax_allowed_pa​​cket = 10Mファイル(ある、最大10M、MySQLのデフォルトはオフに設定したものを見つけるために前にその増加を確保しないように、1メガバイトには思われる)
3は、上記の設定を行いますこうした新聞ちんぷんかんぷんのように少し大きなファイルをアップロードするにはしばらく場合、またはエラーまたは特定の文書、後に、それは次のような問題と推定されています。
このような休止接続UTF-8、および他のテーブルのような問題の文字セットテーブルまたはデータベースは、限り、一般的に、GBKされるような部分の休止を結ぶ直線上に設けられたデータとして
JDBC:MySQLの://192.168.0.4:3306 /試験useUnicode = TRUE&characterEncoding = UTF-8

  • 圧縮
    関数COMPRESSを使用して:COMPRESS(COL)缶は、示されるように、一方の圧縮試験です。バイナリ形式ブロブBLOBフィールドとして圧縮されたデータを格納するための列形式、容器は、大量のデータを格納することができる)、圧縮率が80〜90%に達することができます
  • 減圧は、
    機能をUNCOMPRESSを用いて次のようUNCOMPRESS(COL)は、圧縮されたフォーマットに起因することができることは、将来の世代のブロブの量であり、次いで、減圧後のフォーマットもブロブで、ビューのレイヤに変換しなければなりませんでした。
select id,info '存储的',UNCOMPRESS(info)'解压的' ,cast(UNCOMPRESS(info) as char) '解压并转换' from room_record2

表(room_record2)データ:
ここに画像を挿入説明
圧縮されたデータ・ストレージの最適化:
ここに画像を挿入説明
概要:表列の圧縮が60%効果テーブルのストレージスペースを節約することができ、結果はより客観的です

表2データ圧縮

参照することができます
表の圧縮ます。https://www.cnblogs.com/mysql-dba/p/5125220.html

公開された10元の記事 ウォンの賞賛9 ビュー445

おすすめ

転載: blog.csdn.net/weixin_43829047/article/details/104992252