首页
学习
活动
专区
圈层
工具
发布

mysql 表压缩配置

基础概念

MySQL表压缩是一种优化技术,通过减少表数据的存储空间来提高数据库的性能。压缩可以减少磁盘I/O操作,加快数据传输速度,并且在某些情况下可以减少内存使用。

相关优势

  1. 存储空间优化:压缩表可以显著减少磁盘空间的使用。
  2. 提高I/O性能:读取和写入压缩数据通常比未压缩数据更快,因为需要处理的数据量更少。
  3. 减少内存使用:查询压缩表时,MySQL可以在内存中存储更多的数据页,从而提高查询性能。

类型

MySQL支持多种表压缩技术,包括:

  1. InnoDB表压缩:InnoDB存储引擎支持表压缩,可以通过设置innodb_file_per_tableinnodb_file_format参数来启用。
  2. MyISAM表压缩:MyISAM存储引擎也支持表压缩,可以通过myisampack工具来实现。

应用场景

  1. 大数据量存储:对于存储大量数据的表,压缩可以显著减少磁盘空间的使用。
  2. 高I/O负载:在高I/O负载的环境中,压缩可以减少磁盘I/O操作,提高系统性能。
  3. 资源受限环境:在内存和磁盘空间有限的服务器上,压缩可以提高资源利用率。

遇到的问题及解决方法

问题:为什么启用表压缩后,查询性能反而下降?

原因

  1. CPU使用率增加:压缩和解压缩数据需要额外的CPU资源。
  2. 索引效率降低:某些压缩算法可能会影响索引的效率。
  3. 数据页大小不匹配:压缩后的数据页大小可能与MySQL配置的数据页大小不匹配,导致性能下降。

解决方法

  1. 监控CPU使用率:确保服务器有足够的CPU资源来处理压缩和解压缩操作。
  2. 优化索引:检查并优化表的索引,确保压缩不会影响索引效率。
  3. 调整数据页大小:根据实际情况调整MySQL的数据页大小,以匹配压缩后的数据页。

示例代码

以下是一个启用InnoDB表压缩的示例:

代码语言:txt
复制
-- 启用InnoDB表压缩
SET GLOBAL innodb_file_per_table = ON;
SET GLOBAL innodb_file_format = Barracuda;

-- 创建压缩表
CREATE TABLE compressed_table (
    id INT PRIMARY KEY,
    data TEXT
) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;

参考链接

通过以上配置和优化,可以有效利用MySQL表压缩技术来提升数据库的性能和存储效率。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MYSQL INNODB表压缩

压缩前提 表压缩能提升性能,减少存储空间,主要是用在字符类型比较大的表上(VARCHAR,VARBINARY和BLOB和TEXT类型),且读多写少的情况下,如果你的应用是io密集型的,不是cpu密集型的...详细说明:https://dev.mysql.com/doc/refman/5.6/en/innodb-physical-record.html 压缩算法 压缩算法采用LZ77,在这个算法下,如果压缩效率好点的话...当超过这个临界值,mysql会为每个压缩页添加额外的空间来避免再次压缩失败。值为0表示禁用监控压缩效率,改为动态调整。...压缩状态查询 可通过查询INFORMATION_SCHEMA下相关INNODB压缩表,获取压缩表的数据状态: INNODB_CMP和INNODB_CMP_RESET:压缩页的数据状态信息; INNODB_CMPMEM...InnoDB未压缩的数据页是16K,根据选项组合值,mysql为每个表的.ibd文件使用1kb,2kb,4kb,8kb,16kb页大小,实际的压缩算法并不会受KEY_BLOCK_SIZE值影响,这个值只是决定每个压缩块有多大

10.5K40

MySQL表压缩和页压缩,难道只是空间压缩?

临近春节,相信每个公司都会进行全面巡检,无论是业务层还是数据库层,达到事前预防的目的;今天就来分享一下针对MySQL数据存储层面,在数据库存储来不及扩容的情况下,MySQL中的压缩方案; 日常工作中很多业务在表结构设计之初不会考虑存储的设计...而物理存储主要是考虑是否要启用表的压缩功能,默认情况下,所有表都是非压缩的。但说到压缩,总会下意识地认为压缩会导致 MySQL 数据库的性能下降。这个观点说对也不对,需要根据不同场景进行区分。...因此压缩表使用还是非常的广泛。这也就是为什么那么多的引擎都支持压缩的原因。而 innodb 在 MySQL 5.5 的时候就支持了压缩功能,只是压缩比比较低,通常在 50%左右。...表压缩 数据库中的表是由一行行记录(rows)所组成,每行记录被存储在一个页中,在 MySQL 中,一个页的大小默认为 16K,一个个页又组成了每张表的表空间。...总之,COMPRESS 页压缩,适合用于一些对性能不敏感的业务表,例如日志表等 为了 解决压缩性能下降的问题,从MySQL 5.7 版本开始推出了 TPC 压缩功能,其利用文件系统的空洞(Punch Hole

4.3K20
  • MYSQL 8.0 XTRABACKUP 备份压缩与部分表恢复

    ​ MYSQL 8.0后,XTRABACKUP 的参数有哪些变化,如果是通过XTRABACKUP 来备份那些参数的意义在哪里,是不是需要进行调整 1 compress 在XTRABACKUP 进行文件的备份时...qp 从上图两个备份方式的比较上为压缩备份,下为非压缩备份,可以看到压缩后的备份的确是某些文件缩减了10倍。 ...mydumper来完成,而不是xtrabackup 下面我们看看 1 前提条件是你的mysql 必须是开启 innodb_file_per_table的 2 备份的方式也可以是1个表 一群表,或者一个数据库中的一组表...3 还原方没有同名的表 xtrabackup -usys -p1234.Com --socket=/data/mysql/mysql.sock --backup --target-dir=/data/...  备份时只备份需要导出的表 xtrabackup -usys -p1234.Com --socket=/data/mysql/mysql.sock --backup --target-dir=/data

    4.2K20

    Oracle压缩黑科技(一)—基础表压缩

    基础表压缩 2. OLTP表压缩 3. 索引压缩 但是,不讨论Exadata的hybrid columnar compression (HCC)。...在这三种压缩技术中,索引压缩和基础表压缩是产品自带的核心组件,但是,OLTP压缩需要独立的“Advanced Compression Option (ACO)” license授权。...本文主要目的是解答一些关于表压缩相关的经常被问到的问题。 基础表压缩何时起作用?...,这样在里面创建的所有表就会被默认进行压缩;我们还可以将分区表的分区或者子分区进行压缩;我们甚至可以将分区表定义为默认压缩,这样新增的分区就都是压缩的了。...如果你想将未压缩的数据进行压缩,需要先改变表的定义,然后move表。但是,move后需要立即重建表上的所有索引。 压缩原理并非如我们所想 Oracle如何进行压缩的呢?

    2.5K80

    初识Sys · 轻松掌握MySQL系统库配置表

    随着 MySQL 的发展,sys 系统库的功能也逐渐完善,比如在 MySQL 5.8 中,sys_config 表管理变得更加便捷,配置也变得更灵活。...sys_config 表简介在 MySQL 5.8 中,sys 系统库中包含的 sys_config 表用于存储数据库中的配置信息。...通过修改这个表,可以轻松对系统配置进行持久化管理,也就是说,即使重启数据库,配置也不会丢失。sys_config 表提供了一个集中管理 MySQL 系统配置选项的方式,允许用户根据需要进行调整和优化。...总结通过 sys_config 表,MySQL 5.8 提供了灵活的配置持久化和会话级自定义变量功能。...使用这些配置项和触发器时,务必注意 mysql.sys 用户的权限管理,以及会话变量与 sys_config 表配置的优先级关系,以避免潜在的配置冲突问题。

    90210

    MySql 压缩包安装、配置、详细讲解,带步骤图

    MySql 下载、压缩包安装、配置、详细讲解,带步骤图 一、MySQL介绍(关系型数据库管理系统) ​ MySQL是一个**关系型数据库管理系统*,由瑞典MySQL AB 公司开发,属于 Oracle...MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 ​...三、MySQL 下载 、安装 3.1 MySQL下载 下载地址:https://downloads.mysql.com/archives/community 我这次装的是8.0+版本的 以压缩包的方式安装...、配置。...就可以在命令行启动mysql啦。 登录 启动后: #输入 mysql -u root -p # 输完后按回车(密码可以暂且为空 之前我们在配置文件里加了一行跳过权限验证的)。

    5.8K31

    mysql分区表_MySQL分区分表

    mysql中有一种机制是表锁定和行锁定,是为了保证数据的完整性。表锁定表示你们都不能对这张表进行操作,必须等我对表操作完才行。...2、MySQL分表 分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,每个表都对应三个文件,MYD数据文件,.MYI索引文件,.frm表结构文件。...例: 1)创建一个完整表 mysql> create database test1; mysql> use test1; mysql> create table member -> ( -> id bigint...#创建两个分表,表结构必须和上面完整的表结构一致 mysql> create table tb_member1 like member; mysql> create table tb_member2 like...2)查看当前数据库是否支持分区 MySQL 5.6之前,使用下面的参数查看当前配置是否支持分区(如果为yes则表示支持分区): mysql> SHOW VARIABLES LIKE ‘%partition

    18.7K20

    Nginx数据压缩配置

    Nginx数据压缩配置: 在Nginx的nginx.conf文件的http模块添加如下配置项 #gzip压缩功能配置 gzipon; gzip_min_length1k; gzip_buffers4 16k..."; 配置项说明: gzip : 决定是否开启gzip模块 param:on|off example:gzipon; gzip_buffers :设置gzip申请内存的大小,其作用是按块大小的倍数申请内存空间...,等级越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大 param:1-9 example:gzip_com_level 6; gzip_min_length: 当返回内容大于此值时才会使用...gzip进行压缩,以K为单位,当值为0时,所有页面都进行压缩 param:int example:gzip_min_length 1000; gzip_http_version: 用于识别...expired – 启用压缩,如果header中包含”Expires”头信息 no-cache – 启用压缩,如果header中包含”Cache-Control:no-cache”

    92320

    第12期:压缩表性能监测

    上一篇(第11期:压缩表)已经了解了压缩表的相关概念、索引页的影响以及简单使用。这篇主要来介绍如何观测压缩表。 一、压缩表的使用场景分类 1....DELETE 业务 由于 MySQL 对删除的操作是直接写标记位,然后等待定期的 PURGE 线程清理,这块也适合用压缩表。 4....通过这些表可以监控到压缩表是否健康,是否需要调整压缩页,或者说是否适合用压缩表等。...接下来看看压缩表的监测的实际用例,使用单表空间建立两张表: t1 :未压缩表 t2 :page 为 4K 的压缩表 执行建表 mysql> create table t1(id int, r1 text...删除数据 重启 MySQL 实例,对压缩表 t2 进行删除与更新操作;或者清空表 INNODB_CMP 和 INNODB_CMP_PER_INDEX,也就是执行对应后缀为 _RESET 的表。

    1.6K30

    MySQL磁盘告急?表压缩实操,不扩容也能解决磁盘爆满问题

    一、先搞懂:MySQL压缩表到底是什么 简单说,MySQL压缩表就是通过调整KEY_BLOCK_SIZE大小(可选1、2、、4/8/16)压缩表或特定算法(如zlib、lz4、zstd)压缩页,对表中的数据和索引进行无损压缩...主要特点 MySQL的表进行压缩具备如下主要特点: 无损压缩:压缩和解压过程完全可逆,不会导致数据丢失,这是数据库压缩的核心要求,也是和普通文件压缩的关键区别 压缩方式:MySQL支持表压缩(ROW_FORMAT...表行格式压缩 本次在MySQL5.7中选取一张超过1kw的表(tb2) 压缩前,磁盘空间占用632M 查看当前表的行格式: show table status like 'tb2'; 对该表进行压缩...页压缩 MySQL8.0 中选取一张表,压缩前占用空间68M 通过页压缩方式处理: mysql> alter table orders COMPRESSION='zlib', ALGORITHM = INPLACE...核心记住3点:选对场景(读多写少大表)、选对方式(8.0+优先页压缩)、避开坑点(不盲目压缩高并发表)。 你在使用MySQL压缩表时,踩过哪些坑?或者有更好的优化技巧?欢迎在留言区交流。

    36410

    java mysql 分区表_mysql分区表

    对用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成。实现分区的代码实际上是对一组底层表的句柄对象的封装。 mysql在创建表时使用PARTITION BY子句定义每个分区存放的数据。...分区表本身也有一些限制,下面是其中比较重要的几点: 1.一个表最多只能有1024个分区。 2.在mysql5.1中,分区表达式必须是整数,或者是返回整数的表达式。...在mysql5.5中,某些场景中可以直接使用列进行分区。 3.如果分区字段中有主键或者唯一索引的列,那么所有主键列和唯一索引列都必须包含进来。 4.分区表中无法使用外键约束。...update操作 当更新一条记录时,分区层先打开并锁住所有的底层表,mysql先确定需要更新的记录在哪个分区,然后取出数据并更新,再判断更新后的数据在哪个分区,最后对底层进行写入操作,并对原数据所在的底层表进行删除操作...虽然每个操作都有“先打开并锁住所有的底层表”,但这并不是说分区表在处理过程中是锁住全表的。如果存储引擎能够自己实现行级锁,例如innoDb,则会在分区层释放对应表锁。

    11.3K10

    mysql之MVCC 配置优化 数据库表设计(四)

    文章目录 MVCC(多版本并发控制) MVCC 逻辑流程 undo log 快照读与当前读 redo log 配置优化 mysql服务器参数类型 配置文件 全局配置文件配置 常见全局配置文件配置 mysql...内存参数配置 数据库表设计 三大范式 MVCC(多版本并发控制) Multiversion concurrency control (版本并发控制):并发访问(读或写)数据库时,对正在事务内处理的数据做多版本的管理...= ON/OFF; 注意: 全局参数的设定对于已经存在的会话无法生效 会话参数的设定随着会话的销毁而失效 全局类的统一配置建议配置在默认配置文件中,否则重启服务会导致配置失效 配置文件 mysql...: /etc/security/limits.conf ulimit -a mysql 句柄数配置: /usr/lib/systemd/system/mysqld.service 常见全局配置文件配置...=1 mysql 内存参数配置 每一个connection 内存参数配置: sort_buffer_size connection 排序缓冲区大小 建议256K( 默认值)-> 2M 之内 当查询语句中有需要文件排序功能时

    1.5K20

    通过kafkaflink加载MySQL表数据消费 快速安装配置

    本文共分为3个阶段: 一、mysql安装部分 二、kafka安装和配置 三、kafka的消费和测试 四、flink通过sql-client客户端加载读取mysql表 ==========软件版本: 操作系统...--kafka的topic命名将以此开头 table.whitelist=t1,t2,t3 --将要加载读取的mysql数据库中的表的白名单 # Define when...的连接器 确认是否能都加载到mysql中db1库中的t1表 [root@localhost ~]# [root@localhost ~]# connect-standalone.sh /usr/local...的db1.t1表,则可能会看到如下提示 [2021-04-29 19:59:19,874] INFO WorkerSourceTask{id=source-mysql-jdbc-autoincrement...`id` ASC (io.confluent.connect.jdbc.source.TableQuerier:164) 读取kafka加载的mysql表数据 接下来启动消费端,来消费kafka已经从

    1.8K10

    (624) 插件配置:轻松配置JS文件压缩

    实际开发中,在项目上线之前,我们编写的js代码是需要进行压缩的,我们可以采取压缩软件或者在线进行压缩,这不是我们的重点,在webpack中实现JS代码的压缩才是本节的核心。...webpack.config.js中引入uglifyjs-webpack-plugin插件 const uglify = require('uglifyjs-webpack-plugin'); 1.2 配置...引入后在plugins配置里new一个 uglify对象就可以了,代码如下: plugins:[ new uglify() ], 1.3 打包 在webstorm的终端中使用...webpack 压缩后的代码格式: ? 这样就实现了JS代码的压缩。...devServer用于开发环境,而压缩JS用于生产环境,在开发环境中作生产环境的事情所以webpack设置了冲突报错。 在实际开发中,webpack配置文件是分开的,开发环境、生产环境各自一个文件。

    2.8K20
    领券