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

mysql 归档模式

MySQL 归档模式基础概念

MySQL 归档模式(Archive Storage Engine)是一种用于存储大量历史数据的存储引擎。它主要用于归档和长期存储数据,而不是用于频繁的读写操作。归档模式的特点是数据只支持插入操作,不支持更新和删除操作。

归档模式的优势

  1. 高效存储:归档模式使用高压缩比的存储方式,可以有效地减少存储空间的使用。
  2. 简单易用:归档模式的表结构非常简单,只有 iddata 两个字段,分别用于存储数据的唯一标识和实际数据。
  3. 支持大文件:归档模式可以存储非常大的数据文件,适合用于存储日志文件、历史数据等。

归档模式的类型

MySQL 归档模式主要分为两种类型:

  1. ARCHIVE:这是标准的归档存储引擎,支持数据的插入和查询操作。
  2. BLACKHOLE:这是一个特殊的归档存储引擎,它会丢弃所有插入的数据,但会记录插入操作的日志,适合用于测试和调试。

归档模式的应用场景

  1. 日志归档:将系统的日志文件归档存储,以便后续分析和查询。
  2. 历史数据存储:将不经常访问的历史数据归档存储,以节省存储空间和提高查询效率。
  3. 备份和恢复:将数据备份到归档模式中,以便在需要时进行恢复。

归档模式遇到的问题及解决方法

问题1:归档模式不支持更新和删除操作

原因:归档模式的设计初衷是为了存储大量历史数据,因此不支持更新和删除操作。

解决方法:在设计数据库结构时,尽量避免在归档表中进行更新和删除操作。如果需要更新或删除数据,可以先将数据从归档表中导出,进行相应的操作后再重新导入。

问题2:归档模式的数据查询效率较低

原因:归档模式的数据存储方式是高压缩比的,因此在查询时需要进行解压缩操作,导致查询效率较低。

解决方法:在设计数据库结构时,尽量将归档表和频繁查询的表分开存储,避免在归档表中进行频繁的查询操作。如果需要查询归档表中的数据,可以考虑使用索引和分区等技术来提高查询效率。

问题3:归档模式的数据压缩和解压缩开销较大

原因:归档模式使用高压缩比的存储方式,因此在插入和查询数据时需要进行压缩和解压缩操作,导致开销较大。

解决方法:在设计数据库结构时,可以考虑使用其他存储引擎来存储频繁访问的数据,只在必要时将数据导入归档模式中。此外,可以通过调整 MySQL 的配置参数来优化压缩和解压缩的性能。

示例代码

以下是一个简单的示例代码,展示如何在 MySQL 中创建和使用归档模式的表:

代码语言:txt
复制
-- 创建归档模式的表
CREATE TABLE archive_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    data TEXT
) ENGINE=ARCHIVE DEFAULT CHARSET=utf8;

-- 插入数据
INSERT INTO archive_table (data) VALUES ('This is an archived data.');

-- 查询数据
SELECT * FROM archive_table;

参考链接

MySQL 归档模式文档

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

相关·内容

Oracle11g设置归档模式和非归档模式

1、首先查看当前数据库是否处于归档模式 1)select name, log_mode from v$database; log_mode的值为 NOARCHIVELOG 表示数据库处于非归档模式 log_mode...的值为 ARCHIVELOG 表示数据库处于归档模式 2)archive log list; (此方法需要 as sysdba) Database log mode 的值为 No Archive Mode...的值为 Enabled 表示数据库已开启归档模式 2、非归档模式的数据库更改为归档模式 1)关闭数据库:shutdown immediate; 2)启动数据库到mount状态:startup mount...: select name from v$archived_log; alter system archive log current; 3、归档模式的数据库更改为非归档模式 1)关闭数据库: alter...log list; 或者 select name, log_mode from v$database; 4)更改归档模式为非归档模式:alter database noarchivelog; 5)查看的数据库的归档信息

1.4K20
  • MYSQL 数据库归档归档设计

    2 数据通过MYSQL dump 或者其他的备份方式,将数据备份出来,在将数据恢复到数据归档库中,然后将备份的数据直接手动清理掉,这样的做法速度也很快,对业务的影响也比较小,基本上可以算是透明的方式了...下面就是一个MYSQL 针对一个数据库表归档的案例(这个案例也是有缺陷的,但目前是秉承着够用就好,以及时间成本的原则) 首先设计一个归档要考虑的问题如下 1 归档表的大小,以及每日最大,或最小的归档数据量...以下以最简单的自动化的方案来讲 下图是基于案例来讲的 因为数据库是MYSQL 所以考虑了归档一次是多大的批量,避免归档数据量过大的时候将生产库hang 死,另外配置表主要的功能是有两个 1 限制一次拷贝和清理的数据量...这样归档有没有缺点,当然有,缺点马上就可以说出几个 1 为什么还要在本地机归档数据,不应该是传送到其他机器上吗 2 为什么不设置每次归档的数量限制(每次限制操作的行数),这对MYSQL不是很用吗,为什么要写死...3 为什么要用MYSQL 存储过程来做,使用python不是更灵活 其实一言难尽,都和需求有关,所以很多设计出来的东西,外人一看一堆毛病,如果你进入到他的内部,一段时间估计你就懂得为什么会设计出这样或那样的东西

    5K41

    RAC 环境下修改归档模式

    RAC环境下的归档模式切换与单实例稍有不同,主要是共享存储所产生的差异。...在这种情况下,我们可以将RAC数据库切换到非集群状态下,仅仅在一个实例上来实施归档模式切换即可完成RAC数据库的归档模式转换问题。...本文主要描述了由非归档模式切换到归档模式,而由非归档切换的归档步骤相同,不再赘述。...1、主要步骤: 备份spfile,以防止参数修改失败导致数据库无法启动 修改集群参数cluster_database为false 启动单实例到mount状态 将数据库置于归档模式(alter database...oracle@bo2dbp:~> sqlplus -v SQL*Plus: Release 10.2.0.3.0 - Production 使用asm存储方式存放归档日志 3、修改集群数据库到归档模式

    48220

    MySQL审计数据归档演示

    作者:Mike Frank 译:徐轶韬 在此博客中,我将演示如何在许多mysql实例之间将审计日志进行合并归档。...示例内容使用以SQL和python模式运行的MySQL Shell。 将展示一些的其他技巧包括: 从JSON审计数据中提取行–使用JSON_TABLE函数将JSON数据转换为表格式。...这只是一种可能的设计模式,可以轻松地进行第三方集成或更改为将数据写入对象存储或某些其他审计数据存储库。 在术语方面,我将合并审计数据的服务器称为“归档服务器”。...首先让我们以管理员身份登录到归档MySQL服务器实例上–我将使用root。整个示例都需要使用mysql shell。它包括用于从目标服务器提取审计数据进行计划批处理归档的python。...在归档服务器上创建模式和表 在审计数据归档服务器上 > mysqlsh \sql \connect root@; create schema audit_archive

    88340

    Linux下将Oracle11g由非归档模式(Noarchivelog)更改为自动归档模式(archivelog)

    在Linux环境下将Oracle11g数据库模式由非归档模式(Noarchivelog)修改为自动归档模式(archivelog)。.../nolog 如图所示: 4、以管理员登录Oracle connect / as sysdba 如图所示: 5、查看当前用户 show user 如图所示: 6、查看数据库当前模式...此方式将会耗费很长时间终止和回退事务) 3.直接关闭、卸载数据库,并终止实例 该命令不同于shutdown nomal(正常关闭方式)和shutdown transactional(事务关闭方式) 8、以mount模式启动...(仅加载数据库,但不打开数据库) startup mount 如图所示: 9、修改数据库为归档模式 alter database archivelog 如图所示: 10、打开数据库 alter...database open 如图所示: 11、再次查看数据库当前模式是否修改成功 archive log list 如图所示: 修改成功!

    99620

    MySQL8.0 redo log归档功能

    我们知道,在MySQL中,redo log是一个文件组,一般是3个文件,循环写入,写满的时候会做redo log层面的checkpoint,然后覆盖之前的redo log;而binlog是有归档功能的...MySQL8.0.17中引入了redo log的归档功能,如果我们开启归档功能,redo log会持续不断的生成,而不会覆盖掉之前的redo log。这个功能主要在哪种场景下应用呢?...有了redo log的归档功能,就可以在备份启动的时候同步启动redo log 归档,而在备份结束的时候同步停止redo log归档,这样就可以避免这个备份的问题了。...: 1、目录必须存在,而且其他用户不可访问,最好是700的权限模式 2、该用户目录不能和datadir、innodb_tmpdir、以及其他mysqld的运行目录重合,需要单独创建 开启redo log...的归档的过程: # 动态设置参数 mysql >>set global innodb_redo_log_archive_dirs='tmp_redo_dir: /tmp' ; Query OK, 0 rows

    1.2K52

    归档和非归档模式下ORA-01145错误的解决方法(87天)

    总结了一下,在归档和非归档的场景下,ora-01145这个错误可能有如下三种情况: 1.off line tablespace --在非归档模式下尝试ofline 数据文件 SQL> alter tablespace...--在非归档模式下可以采用如下 SQL> alter tablespace tools offline; Tablespace altered. 2.offline datafile SQL> alter...offline * ERROR at line 1: ORA-01145: offline immediate disallowed unless media recovery enabled --在归档模式下...--而在非归档模式下,需要先把表空间给offline掉,然后才能offline数据文件,可以参见如下的实例。....offline drop 误删数据文件后,这个需要 alter database datafile xxxxx offline drop; --关于测试环境 库为10g 10.2.0.1.0 非归档模式

    1.8K60

    归档

    归档 基本概念 - 对象归档是指将对象写入文件保存在硬盘上,当再次重新打开程序时,可以还原这些对象。你也可以称他为对象序列化,对象持久化。...归档的形式 对Foundation库中对象进行归档 自定义对象进行归档(需要实现归档协议,NSCoding) 归档后的文件是加密的,属性列表是明文的。...示例 归档(序列化) //对数组进行归档归档文件名为temparray 后缀名可以任意 NSString *homeDirectory = NSHomeDirectory(); NSArray *...%@",unArray); 自定义内容归档示例 归档 使用 NSData 实例作为归档的存储数据 添加归档的内容(设置key与value) 完成归档归档数据存入磁盘中 解归档 从磁盘读取文件,生成...NSData 实例 根据 Data 实例创建和初始化解归档实例 解归档,根据key 访问 value 的值 代码实例 归档 NSString *homeDirectory = NSHomeDirectory

    1.2K60

    MySQL数据归档小工具推荐及优化--mysql_archiver

    一.主要概述 MySQL数据库归档历史数据主要可以分为三种方式:一.创建编写SP、设置Event;二.通过dump导入导出;三.通过pt-archiver工具进行归档。...pt-archiver是Percona-Toolkit工具集中的一个组件,是一个主要用于对MySQL表数据进行归档和清除的工具。它可以将数据归档到另一张表或者是一个文件中。...有一个网友通过Python开发了将pt-archiver打包成了一个小工具—mysql_archiver,它基本实现了归档作业的配置化部署,使用起来挺不错。"...MySQL_archiver基本上实现了数据归档的自动运转,统一的归档任务调度管理、自动监控和预警、自动生成报表。在一定程度上节约了生产力,提高了运维效率。"...--file 指定表数据需要归档到的文件。使用类似MySQL DATE_FORMAT()格式化命名方式。

    2.5K00

    Oracle数据库设置为归档模式的操作方法

    Oracle归档模式非常非常重要! 对于有些数据库刚装好后可能是非归档模式,这是很危险的!...为了安全起见,一定要谨记:对于Oracle数据库,一定要设置为归档模式,尤其是生产库,只有这样才能实现数据库的有效完全恢复!...接下来查看自动归档状态和归档进程,如下图所示:(只有当变成enable才是自动归档模式) ? 接着继续查看: ? 很明显,没有自动归档,没有归档进程,更不是归档模式。...4)修改数据库为归档模式 ? 数据库归档模式设置已经完成,查询其归档模式除了ARCHIVE  LOG  LIST方法外,也可以通过v$database来查询,LOG_MODE为ARCHIVELOG。...至此,Oracle数据库已经设置为归档模式了!

    1.1K70
    领券