私の実装はIonic zipを使用してください。 希望に役立ちます!
using System;
using System.IO;
using Ionic.Zlib;
using System.Text;
namespace Qobuz
{
public static class MySqlCompressHelper
{
public static byte[] MySqlCompress(this string str, CompressionLevel level = CompressionLevel.BestCompression)
{
return UTF8Encoding.UTF8.GetBytes(str).MySqlCompress(level);
}
public static byte[] MySqlCompress(this byte[] buffer, CompressionLevel level = CompressionLevel.BestCompression)
{
using (var output = new MemoryStream())
{
output.Write(BitConverter.GetBytes((int)buffer.Length), 0, 4);
using (var compressor = new ZlibStream(output, CompressionMode.Compress, level))
{
compressor.Write(buffer, 0, buffer.Length);
}
return output.ToArray();
}
}
public static string MySqlUncompressString(this byte[] buffer)
{
return UTF8Encoding.UTF8.GetString(buffer.MySqlUncompressBuffer());
}
public static byte[] MySqlUncompressBuffer(this byte[] buffer)
{
using (var output = new MemoryStream())
{
using (var decompressor = new ZlibStream(output, CompressionMode.Decompress))
{
decompressor.Write(buffer, 4, buffer.Length - 4);
}
return output.ToArray();
}
}
}
}
トラフィックだけではなく、ストレージについては、このありませんか? –
トラフィックについてです。一部のストレージエンジンは、この機能も提供しています(ROW_FORMATテーブルオプション)。 INNODB圧縮 - http://dev.mysql.com/doc/innodb-plugin/1.0/en/innodb-compression.html – Devart
私はテーブル全体を圧縮するのではなく、mysql圧縮フォーマットで1つのカラムを書きます。具体的には、これは、.netを使ってデータセットを挿入し、mysqlのuncompress関数を使ってdatesetを選択することを意味します。 –