首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux下lz4解压缩命令小结

lz4是一个让"人见人爱、花见花开"的压缩算法,能够在多核上很好的扩展。lz4在压缩率上略微逊色, 但是在解压速度上有着惊人的优势 (大概是gzip的3倍(多次测试对比))。...因为压缩时高效的多核利用,再加上惊艳的解压,lz4已经在非常多重要场合使用了! 对于需要频繁压缩、实时快速解压的场景来说,lz4非常适合;lz4 解压缩的对象是文件而不是目录。...1)lz4工具安装 # yum install -y lz4 lz4-devel 2)lz4解压缩命令格式 压缩 (默认解压之后的名称filename.lz4) # lz4 filename...;指定两次也可以取消错误 -c: 强制写入标准输出,即使它是控制台 -t: 测试压缩文件完整性 -m: 多个输入文件(表示自动输出文件名) -r: 在目录上递归操作(也设置为-m) -l: 使用旧格式压缩...也可以使用lz4_decompress命令进行解压缩,并且可以自定义解压缩之后的文件名 [root@localhost opt]# rm -f test [root@localhost opt]# ls

8.6K30

PostgreSQL 14中TOAST的新压缩算法LZ4,它有多快?

对于列压缩选项,PostgreSQL 14提供了新的压缩方法LZ4。与TOAST中现有的PGLZ压缩方法相比,LZ4压缩更快。本文介绍如何使用整个选项,并和其他压缩算法进行性能比较。...PG14中有了新压缩选项LZ4压缩,这是一个以速度著称的无损压缩算法。因此我们可以期望它有助于提高TOAST压缩和解压缩的速度。 如何使用LZ4?...上面的例子中,id列不支持压缩算法,col1列使用PGLZ,col2使用LZ4,col3没有指定压缩算法,那么它会使用默认的压缩算法。...,col1仍使用PGLZ压缩算法,即使将压缩算法从PGLZ修改到了LZ4。...首先比较了INSERT语句,列使用LZ、PGLZ和未使用压缩时的性能。可以看到与未压缩数据比,LZ4耗费稍微多一点时间,PGLZ耗费时间更多。LZ4的压缩时间比PGLZ平均节省20%。

2.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

PostgreSQL16中pg_dump的LZ4和ZSTD压缩

PostgreSQL16中pg_dump的LZ4和ZSTD压缩 pg_dump压缩lz4和zstd LZ4和ZSTD压缩算法合入了PG16。LZ4补丁的作者是Georgios Kokolatos。...dump.lz4 -rw-rw-r-- 1 postgres postgres 8M Apr 18 13:56 dump.zstd 根据命令的输出,得出以下关于三种压缩方法的结论: gzip:这是一种众所周知且广泛使用的压缩方法...lz4:这是一种非常快的压缩算法,以较低的压缩比为代价提供较高的压缩和解压速度。Lz4压缩转出的文件在48-50MB范围,明显大于gzip压缩转储。...在最大压缩级别,zstd仍然生成最小的转储文件大小,其次是gzip和lz4。 基于这些观察,如果首要任务是减少磁盘使用空间,zstd是推荐的压缩方法。...它可用于指定使用的压缩方法和级别。默认仍然是级别为 6 的gzip。但是块上的新方法lz4和zstd已经在这里了! https://git.postgresql.org/gitweb/?

80130

PostgreSQL 数据压缩 LZ4 OR PGLZ 为什么都说要用新的压缩方式

我们通过下面的示例可以看到,两个表在数据插入之间的区别,一个是使用LZ4 来进行数据压缩处理的,一个是使用PGLZ方式来进行数据处理的。...可以看到明显的使用 LZ4 压缩方式的比 PGLZ 方式数据插入的速度快了 2.5倍。...后,来查看两个不同压缩方式后的表的大小,可以明显的看出,使用LZ4的表大小是由 119MB 而 使用PGLZ的压缩方式的表的大小为238MB 。...| 512 kB | 119 MB (1 row) Time: 2.492 ms 另外有同学问如果我将这个表的压缩模式进行修改,那么会发生什么 1 表重新建立 2 表的新的数据插入会使用新的压缩模式来进行数据插入...写到最后,在数据库安装时如果你将默认的压缩模式变为LZ4 那么上面的部分你都不用担心,他默认会选择LZ4作为数据压缩的方案,而不是PLGZ,但如果你没有改,那么你就需要在建立表格的时候,来重新对字段进行设置

13610

Kafka 之压缩算法&Hash算法

,可以压缩到原大小的40%来进行传输,Java 实现的gzip 和 unix下的gzip 压缩效率和压缩率是很相近的。...LZ4 LZ4其实和snappy的初衷是相同的,但是LZ4追求压缩速率的同时相对于snappy来说,不仅压缩更快了,压缩率也更佳可观了,同样是谷歌开发的。...Kafka 中使用的Hash算法叫做murmur2,murmurHash是一种比较先进的非加密Hash算法(主要还是用来Kafka这种选择的场景),当前最新的版本是murmur3,它能在有规律的输入时也能保证分布较为均匀...,使用这个算法的还有redis(当字典被用作数据库的底层实现或者hash键的底层实现时,来计算键的哈希值)、nginx、Hadoop。...然后说到Hash,Java 中最常见的HashMap 采用的xors hash。

1.9K30

JAVA|Java方法的使用

比如一个男孩和一个女孩在一起相爱必然会经历以下过程,刚刚相遇其中一方产生好感,想办法接近另一方,两人便开始聊天约会等活动,然后相互都产生好感,再到其中一方表白,最后相爱,恋爱后又会吵架,沟通,道歉,原谅,最后相互理解和加深感情,我们用java...2 方法的定义 定义方法的的方式十分灵活多样,但最基础的就是public static void加上方法名再加一个小括号,方法名使用小驼峰式写法(首字母小写,此后每个单词首字母大写)。...感情加深"); } } 这样我们便实现了方法的调用,这一眼就看出三个不同的阶段,比上刚刚开始一看就十多个步骤顺眼多了吧,我们写程序就是要这样层次清楚条理清晰,让别人看我们写的代码很舒服,所以用java

89320

何时使用Java Stream,何时使用Java集合框架

Java 8 的Stream API 提供了不少可替代Java 集合框架的操作。...但是不少同学在学习和使用Stream时依然感到很困惑,不知道何时使用Stream,甚至想不起来使用Stream,甚至在Stream和集合框架的选择上也成了问题。今天胖哥将尝试帮你解决这些疑问。...无法再次进行使用,简直就是一次性用品。...是否需要重用对象实例 当结果以Collection的形式返回时,我们可以重复使用。而一个Stream被使用后,就认为它已消耗掉,并在重用时抛出IllegalStateException,如上面所示。...是否需要固定的格式 Stream流的表现格式通常没有Java集合框架丰富,Java集合框架提供了如Set、List、Map等格式。如果你需要终端返回展现,显然集合框架更加合适。

74330

Java synchronized 使用

关于JAVA多线程同步 JAVA多线程同步主要依赖于若干方法和关键字 1  wait方法: 该方法属于Object的方法,wait方法的作用是使得当前调用wait方法所在部分(代码块)的线程停止执行,并释放当前获得的调用...4 atomic action(原子操作): 在JAVA中,以下两点操作是原子操作。但是c和c++中并不如此。 第一点:对引用变量和除了long和double之外的原始数据类型变量进行读写。...另外:在java.util.concurrent和java.util.concurrent.atomic包中提供了一些不依赖于同步机制的线程安全的类和方法。...往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。...(6)内存映射(mapped memory):内存映射允许任何多个进程间通信,每一个使用该机制的进程通过把一个共享的文件映射到自己的进程地址空间来实现它。

55320

java forEach使用

接下来,展示如何在列表上使用forEach: import java.util.List; import java.util.Arrays; import java.util.Map; public...案例源码说明 以下是一个使用forEach和Lambda表达式对列表中的数字进行过滤和求和的示例: import java.util.List; import java.util.Arrays; public...forEach Java 8引入的流(Stream)API提供了一种声明式处理数据集合的方式,其中forEach方法可以在流的终端操作中使用,对流中的每个元素执行操作。...展示如何在终端操作中使用forEach 以下是一个使用流和forEach的示例,它展示了如何对一个列表中的每个元素进行处理: import java.util.List; import java.util.Arrays...案例源码说明 以下是一个更复杂的示例,它展示了如何在流的forEach中使用Lambda表达式进行条件判断和数据累加: import java.util.List; import java.util.Arrays

9410

Java计时使用

一、最简单的计时 在我们的程序中不免需要对某一个运算或者方法进行计时,以便我们来观察该运算或方法是否符合我们的预期,所以在我们刚开始接触 Java 的时候都能写出类似下面这样的代码来计时: public...e.printStackTrace(); } } 事实上这样也并没有什么问题,并且也能够运行的很好,但是有一点不太好的就是,自己关注了太多输出的信息,下面我们来认识一种更优雅的一种计时方式; 二、StopWatch 类 想要使用它...Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } 在最后我们使用...} ++this.taskCount; this.currentTaskName = null; } } 你会发现该类使用...LinkedList 实现了一个叫做 taskList 的队列, 然后每一次开始同样也是使用 System.currentTimeMillis() 方法来获取时间, 每次除了计算耗时也会构建一个描述当前任务的

70520

java dategramsocket_Java使用DatagramSocket

Java使用DatagramSocket代表UDP协议的Socket,DatagramSocket本身只是码头,不维护状态,不能产生IO流,它的唯一作用就是接收和发送数据报,Java使用DatagramPacket...从上面两个方法可以看出,使用DatagramSocket发送数据报时,DatagramSocket并不知道将该数据报发送到哪里,而是由DatagramPacket自身决定数据报的目的地。...当Client/Server程序使用UDP协议时,实际上并没有明显的服务器端和客户端,因为两方都需要先建立一个DatagramSocket对象,用来接收或发送数据报,然后使用DatagramPacket...但Java要求创建接收数据用的DatagramPacket时,必须传入一个空的字节数组,该数组的长度决定了该DatagramPacket能放多少数据,这实际上暴露了DatagramPacket的实现细节...也就是说,SocketAddress对象封装了一个InetAddress对象和一个代表端口的整数,所以使用SocketAddress对象可以同时代表IP地址和端口。

23910
领券