小编Dol*_*hin的帖子

pg_stat_statements 对性能有什么影响?

我用来pg_stat_statements查找生产 PostgreSQL 13 中的慢查询。有两件事:

  • 我不确定此扩展对性能的影响。

  • 我可以做些什么来提高其性能吗?下面的查询需要 > 1 秒 - 有什么建议吗?


    -- add the plugin 
    create extension pg_stat_statements;
    select pg_stat_reset();
    select pg_stat_statements_reset();
Run Code Online (Sandbox Code Playgroud)

进而:

-- find slow queries using the extension:

select * from pg_stat_statements order by total_exec_time desc limit 50;
Run Code Online (Sandbox Code Playgroud)

postgresql pg-stat-statements

7
推荐指数
1
解决办法
3384
查看次数

WRONGPASS 连接到 redis 6.0+ 时,用户名-密码对无效或用户被禁用

我尝试连接 redis 6.0+,这是我现在配置的 Python celery redis 代理 url:

broker_url = redis://:default:123456@cruise-redis-headless.reddwarf-cache.svc.cluster.local:6379/5
celery_result_backend = redis://:default:123456@cruise-redis-headless.reddwarf-cache.svc.cluster.local:6379/5
Run Code Online (Sandbox Code Playgroud)

但是当我使用以下命令启动芹菜时:

root@pydolphin-service-6fc4b98f54-msfql:~/pydolphin# celery -A dolphin.tasks.tasks worker --loglevel=INFO -n worker2 -Q non_editor_pick_and_diff_pull --concurrency 2
/usr/local/lib/python3.9/site-packages/celery/platforms.py:834: SecurityWarning: You're running the worker with superuser privileges: this is
absolutely not recommended!

Please specify a different user using the --uid option.

User information: uid=0 euid=0 gid=0 egid=0

  warnings.warn(SecurityWarning(ROOT_DISCOURAGED.format(
 
 -------------- celery@worker2 v5.1.2 (sun-harmonics)
--- ***** ----- 
-- ******* ---- Linux-3.10.0-1160.31.1.el7.x86_64-x86_64-with-glibc2.28 2021-08-08 20:45:35
- *** --- * --- 
- ** ---------- [config]
- …
Run Code Online (Sandbox Code Playgroud)

redis

6
推荐指数
1
解决办法
2万
查看次数

是否有可能在 PostgreSQL 中永远不运行 Vacuum Full

由于aVACUUM FULL锁表,这对于我们的生产环境来说是不可接受的。

是否可以只在生产系统上运行VACUUM而不运行?VACUUM FULL

是否可以VACUUM让空间重新用于新的INSERT用途?

postgresql locking vacuum

4
推荐指数
1
解决办法
3946
查看次数

是否可以在 MySQL 5.7 中自动生成 Unix 毫秒时间戳

我在 MySQL 5.7 表中创建了一个created_time字段BIGINT,现在我想在插入记录时自动生成一个 Unix 毫秒时间戳。是否有可能做到这一点?我尝试了下面的代码,但失败了:

ALTER TABLE db.video_info MODIFY COLUMN created_time bigint(20) 
  DEFAULT (ROUND(UNIX_TIMESTAMP(CURTIME(4)) * 1000)) NULL;
Run Code Online (Sandbox Code Playgroud)

mysql timestamp default-value

3
推荐指数
1
解决办法
393
查看次数

如何使用减去天数的表达式添加生成的列?

我在 PostgreSQL 13 中有这个表:

CREATE TABLE public."domain" (
    id int8 NOT NULL GENERATED ALWAYS AS IDENTITY,
    domain_name varchar NOT NULL,
    -- more columns
    expire_date timestamp NULL,
    days_before_trigger int4 NOT NULL DEFAULT 14
);
Run Code Online (Sandbox Code Playgroud)

现在我想添加一个生成的列notify_trigger_date,派生自expire_datedays_before_trigger,以记录我的网站 url ssl 证书到期日期。如何自动生成该列?
它看起来像这样:

notify_trigger_date = expire_date - 7 day
Run Code Online (Sandbox Code Playgroud)

我正在尝试像这样实现它:

ALTER TABLE "domain" ADD COLUMN notify_trigger_date timestamp 
    GENERATED ALWAYS AS ((expire_date::timestamp - '1 day')) STORED;
Run Code Online (Sandbox Code Playgroud)

我不知道如何1 day用天数替换days_before_trigger?此命令运行时出错:

SQL Error [22007]: ERROR: invalid input syntax for …
Run Code Online (Sandbox Code Playgroud)

postgresql database-design computed-column interval

3
推荐指数
2
解决办法
305
查看次数

如何在 PostgreSQL 13 中将 id 更新为行号

我的表article_favorites没有行号,现在它包含 100000 条记录。我想在表中添加一个 bigint id 列,并将 id 默认设置为行号。我尝试了这个sql:

update article_favorites  set id = row_number() OVER ()
Run Code Online (Sandbox Code Playgroud)

但它告诉我window functions are not allowed in UPDATE,我应该怎么做才能将 id 更新为行号?

postgresql

2
推荐指数
1
解决办法
5181
查看次数

新版本的 PostgreSQL 中 IDENTITY 是否连续?

现在我serial在PostgreSQL 13中生成表主键,但是今天我发现ID跳跃并且ID空间有很大的间隙。会浪费很多ID。我阅读了文档,发现 PostgreSQL 有identity作为 SQL 标准生成的主键。我找到了在新版本的PostgreSQL中使用的建议identity,但我不知道ID是否连续。

在 PostgreSQL 13 中我应该怎么做才能获得没有间隙的主键 id?

在此输入图像描述

解决方案1:我尝试更改serialidentity这样:

BEGIN;
ALTER TABLE public.article ALTER id DROP DEFAULT; -- drop default

DROP SEQUENCE public.article_id_seq;              -- drop owned sequence

ALTER TABLE public.article 
-- ALTER clientid SET DATA TYPE int,              -- not needed: already int
   ALTER id ADD GENERATED ALWAYS AS IDENTITY (RESTART 2270886);
COMMIT;
Run Code Online (Sandbox Code Playgroud)

还是有差距。

解决方案 2:我尝试添加关于我的应用程序插入文章的 Redis 分发锁,如下所示:

def save_single(guid, pub_time, title, author, content, source, link):
    if content …
Run Code Online (Sandbox Code Playgroud)

postgresql identity

0
推荐指数
1
解决办法
1061
查看次数

是否可以在 PostgreSQL 中添加自定义约束

现在我有一个表存储一些 rss 订阅 url,有时 url 以 '/' 结尾,现在我用 '/' 替换所有没有结尾的 url。确保子网址没有以“/”结尾。我想在 rss 子源表中添加自定义约束。如果子 url 以“/”结尾,则向应用程序抛出错误。我已经阅读了 PostgreSQL 13文档,发现它有很多约束,比如带有 int 数据类型的 uniq 约束检查约束。但是如何添加具有字符串数据类型的约束并确保字符串不以“/”结尾?有没有办法做这个动作?

postgresql

-1
推荐指数
1
解决办法
48
查看次数