AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-38877

Mikko Ohtamaa's questions

Martin Hope
Mikko Ohtamaa
Asked: 2025-03-04 20:00:53 +0800 CST

PostgreSQL:将 SQL 查询和应用程序映射到 CPU 使用率

  • 5

我们在 Ubuntu 服务器上运行着一个 PostgreSQL(带有 TimescaleDB 扩展),其负载在一年内稳步增加。

在此处输入图片描述

我们希望控制负载。对于 CPU 或负载,我们希望查明导致负载增加的查询,因为某些查询可能是不必要的;可以降低频率,等等。

将 PostgreSQL 查询和/或应用程序映射到 CPU 使用率的最佳方法是什么?具体来说,因为这不是单个查询,所以应该在较长的一段时间内进行某种统计信息收集。

我们目前正在使用 Datadog 来监控 PostgreSQL 和服务器,但乐意考虑任何选项。

postgresql
  • 1 个回答
  • 19 Views
Martin Hope
Mikko Ohtamaa
Asked: 2022-07-31 22:19:29 +0800 CST

对所有列禁用 TOAST 压缩

  • 4

我在压缩的 ZFS 文件系统上运行 PostgreSQL 。提到的一个技巧是禁用 PostgreSQL 的内联 TOAST 压缩,因为 ZFS 可以更好地压缩数据。这可以通过将列存储设置为 来完成EXTERNAL。

我可以通过以下方式逐列执行此操作:

ALTER TABLE my_table ALTER COLUMN my_column SET STORAGE EXTERNAL;

但是,这可能有点麻烦,因为每个模式都需要手动迁移到这里。

有没有简单的方法

  • 将所有列的默认设置STORAGE为EXTERNAL而不是MAIN
  • 以其他方式禁用 TOAST 压缩

我找到了default_toast_compression 选项,但文档不清楚我是否可以禁用它。

postgresql datatypes
  • 1 个回答
  • 120 Views
Martin Hope
Mikko Ohtamaa
Asked: 2022-05-30 09:40:27 +0800 CST

仅索引系列的第一项和最后一项

  • 0

PostgreSQL 是否支持基于某个键仅对表中的第一个和最后一个值进行索引的任何类型的稀疏索引?

考虑以下数据:

CREATE TABLE samples (
   device_id int not null;
   ts timestamp not null;
   value real not null;
);

现在,假设我有数百万台设备,每台设备都可以有数十亿个样本。我想访问所有这些数据——如果访问速度很慢,我不介意。但是我特别有兴趣通过ts时间戳访问第一个和最后一个值:(device_id, value) 非常非常快。这可以知道特定设备的样本范围是多少。

我可以构建一个触发器/应用程序逻辑来管理存储信息的单独表:

CREATE TABLE first_last_samples (
   device_id int not null;
   first_ts timestamp not null;
   first_value real not null;
   last_ts timestamp not null;
   last_value real not null;
);

但是,自己管理缓存第一个/最后一个项目的逻辑感觉有点笨拙。我在问 PostgreSQL 是否会管理任何特殊的索引类型,也许是通过扩展,这可以让我在表/视图/索引定义级别解决这个问题?

因为有数十亿个数据点,如果您只对第一个和最后一个感兴趣,将它们全部放入索引似乎没有意义。

database-design postgresql
  • 1 个回答
  • 70 Views
Martin Hope
Mikko Ohtamaa
Asked: 2021-12-07 08:20:49 +0800 CST

在客户端会话期间更新 PostgreSQL application_name

  • 1

我试图将 PostgreSQL 上的慢查询与导致它们的应用程序相关联。我已经设置了基本的application_name跟踪。

一些应用程序包含多个同时运行的独立任务。是否可以application_name在会话中间进行更新以反映连接当前正在处理的任务?通过这种方式确定有问题的查询的来源会更容易,因为我可以pg_stat_activity直接从人类可读的内容中读取慢查询的根本原因。

(替代方案我可以让客户使用不同的名称重新连接,但这有点痛苦。)

postgresql
  • 1 个回答
  • 35 Views
Martin Hope
Mikko Ohtamaa
Asked: 2021-06-14 10:56:18 +0800 CST

PostgreSQL 不启动:致命:xlog 刷新请求不满足 --- 只刷新到 0

  • 1

我有一个带有本地 Linux 卷映射的 Docker PostgreSQL (TimescaleDB) 开发人员实例。

version: '3'
services:
  dex-timeseriesdb:
    image: timescale/timescaledb:latest-pg12
    # https://stackoverflow.com/a/56754077/315168
    shm_size: 1g
    container_name: dex-timeseriesdb
    environment:
      POSTGRES_USER: postgres
    volumes:
       - $PWD/data/postgresql:/var/lib/postgresql/data

非正常关闭后,实例不再以FATAL: xlog flush request 0/2CEFA910 is not satisfied --- flushed only to 0/1B48258错误启动:

dex-timeseriesdb    |
dex-timeseriesdb    | PostgreSQL Database directory appears to contain a database; Skipping initialization
dex-timeseriesdb    |
dex-timeseriesdb    | 2021-06-13 18:50:47.330 UTC [1] LOG:  starting PostgreSQL 12.6 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.2.1_pre1) 10.2.1 20201203, 64-bit
dex-timeseriesdb    | 2021-06-13 18:50:47.330 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
dex-timeseriesdb    | 2021-06-13 18:50:47.330 UTC [1] LOG:  listening on IPv6 address "::", port 5432
dex-timeseriesdb    | 2021-06-13 18:50:47.336 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
dex-timeseriesdb    | 2021-06-13 18:50:47.486 UTC [21] LOG:  database system shutdown was interrupted; last known up at 2021-06-13 18:47:35 UTC
dex-timeseriesdb    | 2021-06-13 18:50:49.629 UTC [21] LOG:  database system was not properly shut down; automatic recovery in progress
dex-timeseriesdb    | 2021-06-13 18:50:49.645 UTC [21] LOG:  redo starts at 0/1B46C68
dex-timeseriesdb    | 2021-06-13 18:50:49.648 UTC [21] LOG:  invalid record length at 0/1B48258: wanted 24, got 0
dex-timeseriesdb    | 2021-06-13 18:50:49.648 UTC [21] LOG:  redo done at 0/1B48220
dex-timeseriesdb    | 2021-06-13 18:50:49.697 UTC [21] LOG:  request to flush past end of generated WAL; request 0/2CEFA910, currpos 0/1B48258
dex-timeseriesdb    | 2021-06-13 18:50:49.697 UTC [21] CONTEXT:  writing block 0 of relation base/13455/16573_vm
dex-timeseriesdb    | 2021-06-13 18:50:49.697 UTC [21] FATAL:  xlog flush request 0/2CEFA910 is not satisfied --- flushed only to 0/1B48258
dex-timeseriesdb    | 2021-06-13 18:50:49.697 UTC [21] CONTEXT:  writing block 0 of relation base/13455/16573_vm
dex-timeseriesdb    | 2021-06-13 18:50:49.701 UTC [1] LOG:  startup process (PID 21) exited with exit code 1
dex-timeseriesdb    | 2021-06-13 18:50:49.701 UTC [1] LOG:  aborting startup due to startup process failure
dex-timeseriesdb    | 2021-06-13 18:50:49.744 UTC [1] LOG:  database system is shut down

这可能是由于不干净的 Docker 关闭造成的数据损坏。

数据库中没有什么重要的东西。但是,我仍然想了解在这种情况下是否可以恢复数据库,而不是从头开始重建它或从备份中恢复。

我使用 shell 测试了卷映射在 Docker 实例中是可写的,所以这应该不是问题。

另请参阅有关 FATAL: xlog flush request, but稍有不同的错误的类似问题。

postgresql timescaledb
  • 1 个回答
  • 613 Views
Martin Hope
Mikko Ohtamaa
Asked: 2017-01-26 00:57:50 +0800 CST

当 pg_restore 尊重 --dbname 选项时

  • 6

我正在尝试以pg_dump原始转储中的不同数据库名称还原二进制备份。尽管给出了--dbname命令行参数,但pg_restore仍会尝试恢复原始数据库名称下的所有内容——我特别想避免这种行为。

createdb mydb

pg_restore --dbname=mydb --exit-on-error -Fc database.bak

pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 8; 2615 16396 SCHEMA topology u9o2f4j0
pg_restore: [archiver (db)] could not execute query: ERROR:  schema "topology" already exists
    Command was: CREATE SCHEMA topology;

如何pg_restore以不同的名称恢复数据库?

pg_dump --version
pg_dump (PostgreSQL) 9.5.5

pg_restore --version
pg_restore (PostgreSQL) 9.6.1
postgresql pg-dump
  • 1 个回答
  • 1715 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve