我正在尝试在生产中同时创建索引。\d然而,这样做时,通过查看时的索引会显示INVALID。
为什么会这样呢?以前从未见过这种情况发生。
尝试过重新创建,但仍然遇到同样的问题:
指数:
create index concurrently idx_wallet_customer_id_credit_stake_expires on wallet (customer_id,wallet_credit_stake,wallet_expires)
where wallet_closed is null and wallet_staked is null;
Run Code Online (Sandbox Code Playgroud) 我已经成功地使用了 Postgres 14,但现在我被难住了。我有一个abc包含表的数据库和架构。
\c abc
\dt -- shows tables
Run Code Online (Sandbox Code Playgroud)
我创建了一个新的数据库/架构xyz,但我看不到我创建的表:
\c xyc
\dt
Did not find any relations.
Run Code Online (Sandbox Code Playgroud)
如果我使用 PgAdmin4 我可以看到xyz的表格。如果我使用 DbVisualizer 我可以看到xyz的表格。但是,如果我使用psql我得到的所有内容,那么我是用户还是我自己(也是超级用户)Did not find any relations.
似乎并不重要。我在 PgAdmin4 中创建了这些表。这是一个错误吗?我尝试更改数据库或架构中所有对象的所有者,但无论我尝试什么,如果我使用.postgrespsqlxyzxyzpsql
不确定这是否有任何启发:
xyz-# \conninfo
You are connected to database "xyz" as user "postgres" via socket in "/tmp" at port "5432".
xyz=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | …Run Code Online (Sandbox Code Playgroud) 我正在尝试生成 Strings 列表的所有组合
list = ['A', 'B', 'C', 'D']。
我想生成所有可能性,然后在数据库中搜索
ABCD, ABC, ABD, ACD, BCD, AB, AC, AD, BC, BD, CD, A, B, C, D
我的专栏是这样的:
| 结果 | 代码 |
|---|---|
| 1 | A |
| 2 | 公元前 |
| 3 | 交流电 |
| 4 | 乙 |
| 5 | ABC |
| 6 | 广告 |
| 7 | BCD |
| 8 | 光盘 |
| 9 | A B C D |
| 10 | 阿布德 |
| ………… | ...... |
澄清一下:顺序并不重要(ABC = BAC = CAB),它应该返回多个结果(对于 list = ['A', 'B', 'C'] 与上面的 10 列相同,它应该返回 [1 、2、3、4、5])。
我正在使用 Postgres,并且尝试过一些我见过的递归函数,但没有一个能够完全满足我的需求。
我的表在白天变化很大,大量数据被删除、修改和插入。
我怀疑这些表上的表和索引可能会臃肿。
我已经看到 PostgreSQL 的扩展选项可以检查这一点,但我想避免在我的数据库中创建扩展。
如何获取此信息(表/索引臃肿)而不必使用 PostgreSQL 扩展(例如:pgstattuple),仅使用本机 PostgreSQL 12 功能。
我试图在我的 postgreSQL 数据库中创建一个死锁,但我得到的错误并不是我所期望的:
ERROR: current transaction is aborted, commands ignored until end of transaction block
SQL state: 25P02
Run Code Online (Sandbox Code Playgroud)
我的设置基本上是这两者的混合:
我打开了 pgAdmin 4 的两个浏览器窗口,并有两个查询窗口。具有以下内容之一:
BEGIN;
UPDATE "Products"
SET "Price" = "Price" * 0.03
WHERE "PID" = 1
RETURNING *;
UPDATE "Products"
SET "Price" = "Price" * 0.03
WHERE "PID" = 2
RETURNING *;
COMMIT;
Run Code Online (Sandbox Code Playgroud)
另一种是使用这个:
BEGIN;
UPDATE "Products"
SET "Price" = "Price" * 3
WHERE "PID" = 2
RETURNING *;
UPDATE "Products"
SET "Price" = "Price" * 0.03
WHERE …Run Code Online (Sandbox Code Playgroud) 在我们的数据库中,一个 JSONB 列包含一个对象,该对象具有一个属性,该属性是字符串编码的 JSON 对象。我需要在查询期间反序列化该字符串并检查其值。
create table datas (id int, data jsonb);
insert into datas (id, data) values (1, '{"key1": "{\"foo\": \"bar\"}"}');
Run Code Online (Sandbox Code Playgroud)
我可以选择字符串值,但将其转换为 JSONB 对象不起作用。这些查询都返回 null foo。
select data->'key1'->'foo' from datas;
select to_json(data->'key1')->'foo' from datas;
select (data->'key1')::jsonb->'foo' from datas;
Run Code Online (Sandbox Code Playgroud)
dbfiddle:https://dbfiddle.uk/? rdbms=postgres_9.6&fiddle=9c0a9f7f1323a35051daba5177e52f57
据我所知,temp_buffers设置用于存储临时表数据的服务。
PGDATA但是,当我创建了一个临时表时,会立即在主数据库中为其创建文件。因此,我希望能就几个问题得到帮助。
a.会发生什么
?临时表数据是否temp_buffers 足以存储临时表数据?
b. 临时表数据是否temp_buffers 不足以存储临时表数据?
是否存在temp_buffers 设置不足而导致溢出的情况pgsql_tmp?
我发现许多 Web 服务(我想到的是 Stripe)对其 UUID 使用特殊的编码。它们将使用特殊的字母表(通常是小写、大写字母和数字)进行编码,而不是a44521d0-0fb8-4ade-8002-3385545c3318通常的编码,这会产生类似mhvXdrZT4jP5T8vBxuvm75. 两者都表示相同的 UUID,但编码不同。
我想知道这些服务如何处理这些 ID?特别是 Postgres 是否可以在数据库中直接使用这种短 ID 编码?(换句话说,任何选择或插入都将使用短 ID)
或者将这些短 ID 直接作为文本保存在数据库中是否有意义?
我找不到关于此的太多信息,所以我不确定这里的最佳实践是什么。
我正在使用 Postgres。val text NULL CHECK(val <> '')使用(或varchar) 和之间在存储或性能方面是否有显着差异val text NOT NULL?文本不能为空。因此,空文本可以作为未设置的标记。但是,例如,根据存储情况,它有什么区别吗?
我知道,我失去了空文本的 NULL 魔法,但这并不重要。另一方面,我可以更轻松地导入应用程序,因为我不必处理NULL. 它只是字符串输入,字符串输出。
postgresql ×10
concurrency ×1
encoding ×1
index ×1
json ×1
null ×1
perl ×1
psql ×1
recursive ×1
transaction ×1
uuid ×1