美文网首页
2018-03-30|insert流程-让数据快速刷入存储文件

2018-03-30|insert流程-让数据快速刷入存储文件

作者: walleipt | 来源:发表于2018-03-30 22:57 被阅读0次

预备知识:

之前提到输入insert语句后数据是不会直接刷入存储文件的(等待大概10-15分钟);

对于这种现象是由于在执行insert的语句的时候,postgres会先将数据写入到日志(1),然后把事务标记为完成(2)。最后将数据被写到表中(3);

这种设计是由于postgres稳定行决定的。不至于一些脏数据导致postgres奔溃,例如:直接对数据文件进行读写的话,如果此时因为某些原因数据只有部分入库,postgres如何对这部分数据进行处理。所以引入了日志(xlog)即使数据库奔溃,也可以通过xlog对数据进行对比修正或是复原。当然如果先写日志和缓存将他们和直接文件存储IO操作分离,也可以提高运行效率;

回到主题,那我们如何快速将数据刷入存储文件?现在已经知道执行insert语句xlog是实时改变的;那么如何清理xlog,清理掉的xlog是否可以认为已经完成xlog到存储文件对比同步呢?这里就使用到了CHECKPOINT(检查点)让xlog生成新的文件,让老的xlog“失效”(也就是可以被清理掉);以这种方式来观察最后是否执行checkpoint命令,数据就被刷入存储中

开始测试:

1.查看文件修改时间

查看存储文件修改时间

2.执行insert语句和checkpoint;

insert & checkpoint
生成新xlog日志

3.查看存储文件修改时间:

查看存储文件修改时间

后续问题:

1.未执行checkpoint的情况数据刷入存储的过程如何?等待10到15分钟postgres做了什么?

参考资料:

PostgreSQL Replication之第二章 理解PostgreSQL的事务日志

【PostgreSQL-9.6.3】进程及体系结构

注意:如上是本人学习Postgres查看资料和测试的结果,如有问题请大神指正!

相关文章

  • 2018-03-30|insert流程-让数据快速刷入存储文件

    预备知识: 之前提到输入insert语句后数据是不会直接刷入存储文件的(等待大概10-15分钟); 对于这种现象是...

  • 2018-04-06|insert流程-测试checkpoint

    预备知识: 测试外部硬盘存储改变 让数据快速刷入存储文件 检查点(CHECKPOINT)介绍 开始测试: 查看ch...

  • Mysql 基础知识2

    数据查询流程 日志文件类型 存储引擎的存储和提取 InnoDB文件:.frm .idb .ibdata索引和数据存...

  • 09-数据库设计

    六星教育 - java-mysql优化1909 一、数据存储与读取 1、insert: 会使用索引文件定位数据再磁...

  • ClickHouse的Insertt和Mutation(upda

    1、 insert操作 创建一个表 插入数据 查看文件存储结果进行表的存放目录(/var/lib/clickhou...

  • ffmpeg android视频解码

    解码流程: 获取文件信息,数据存储在AVFormatContext里面根据AVFormatContext获取对应的...

  • 在memcache存储会话

    会话数据,即SESSON数据,默认存储在文件中。如果希望将SESSION数据存储在更快速的地方,更重要的是,如果网...

  • 2021-10-08

    innodb存储引擎插入缓存将更新操作放入到insert buffer,然后以一定的频率刷将insert buff...

  • Hive DML

    Load 数据文件 Insert 插入数据 Truncate 清空表数据 Select 查询

  • MySQL常用存储引擎之CSV

    存储特点 数据以文本方式存储在文件中 .csv文件存储表内容 .csv文件存储表的元数据如表状态和数据...

网友评论

      本文标题:2018-03-30|insert流程-让数据快速刷入存储文件

      本文链接:https://www.haomeiwen.com/subject/ztdwcftx.html