是否可以像普通表一样获得 TOAST 表的死/活元组数?
CREATE TABLE messages1 (message text);
INSERT INTO messages1
SELECT (SELECT
string_agg(chr(floor(random() * 26)::int + 65), '')
FROM generate_series(1,10000))
FROM generate_series(1,10);
SELECT reltoastrelid::regclass
FROM pg_class
WHERE relname = 'messages1';
DELETE FROM messages1
WHERE ctid IN (
SELECT ctid
FROM messages1
ORDER BY 1
LIMIT 6
);
postgres=# SELECT reltoastrelid::regclass
postgres-# FROM pg_class
postgres-# WHERE relname = 'messages1';
reltoastrelid
--------------------------
pg_toast.pg_toast_147777
(1 row)
postgres=# select relname, vacuum_count, n_tup_del, n_live_tup, n_dead_tup from pg_stat_user_tables where relname='pg_toast.pg_toast_147777';
relname | vacuum_count | n_tup_del …Run Code Online (Sandbox Code Playgroud) 所以我正在阅读 MySQL innoDB,它显然默认将表数据存储在基于主键的聚集索引 (b+tree) 上,并且元组位于该 b+tree 的叶子中
https://blog.jcole.us/2013/01/10/btree-index-structures-in-innodb/
我想知道所有著名的关系数据库管理系统(如PostgreSQL、Oracle、SQL 服务器、SQLite)都以相同的方式存储吗?通过基于主键创建聚集索引(b+tree)并将数据存储在树的叶子上?
数据库中主键上的聚集索引是否基本上意味着将基于主键的表存储在 B+tree 表上?
(抱歉,如果这是一个一般性问题,但我不能针对我提到的每个数据库提出 4-5 个单独的问题,如果您只知道其中一个或几个,请告诉我)
此外,如果它的数据库默认情况下不使用集群,您能否解释它如何构建文件,例如它们是否在主键上创建一个 b+树,其中叶子指向堆内的某种地址或... ?
编辑 :
到目前为止,我们得到了除 SQLite 之外的所有问题的答案,如果有人有任何关于表在默认情况下如何实际存储在 SQLite 中的信息,请告诉。
在用户可以在多个设备上安装移动应用程序副本的应用程序中,我想知道每个用户拥有多少个 iphone 和多少个 android 应用程序。
我尝试了一个查询,例如
gv2=> SELECT userid,
COUNT(ALL version_identifier LIKE '%ios%'),
COUNT(ALL version_identifier LIKE '%android%')
FROM gl.user_device
GROUP BY userid;
userid | count | count
--------------------------------------+-------+-------
46d0f5b7-42b0-4aad-9162-1390c32cb06e | 7 | 7
5d519794-abfe-4863-82d4-6da33db7637b | 7 | 7
a81cff6b-30f2-4b6e-a5bf-b1a933904473 | 1 | 1
b65f0708-0cd1-11e7-878b-06fa189da46b | 4 | 4
94b91b02-ff43-4a9a-b317-037fa2a347d3 | 1 | 1
a4cacd98-1216-4801-b058-b28b8fa632a9 | 8 | 8
(6 rows)
Run Code Online (Sandbox Code Playgroud)
这显然是错误的。
例如
gv2=> SELECT userid FROM gl.user_device WHERE version_identifier LIKE '%ios%';
userid
--------------------------------------
5d519794-abfe-4863-82d4-6da33db7637b
(1 row)
Run Code Online (Sandbox Code Playgroud)
万一我需要支持 Postgres 10.1,但最好也支持 9.5.10,因为我有一个旧的生产数据库仍然在那个版本上。
我们有 PostgreSQL 11 数据库,结构一数据库一模式(公共)。
dbname : production_one
schema : public
dbname : production_two
schema : public
Run Code Online (Sandbox Code Playgroud)
我想设置一个逻辑复制,以便它具有结构 一个数据库,多个架构如下:
dbname : prod_slave
schema : prod_one, prod_two
Run Code Online (Sandbox Code Playgroud)
是否可以进行上述逻辑复制?
我使用流式复制成功复制,但情况需要我们使用上述逻辑复制。
我有由pg_dump.
它是否包含备份创建日期?
我不能自己创建备份。我通过特定的网络频道收到存档文件。备份文件有接收日期时间戳,但没有在服务器上创建的日期。
使用 PostgreSQL 10.3。
CREATE TABLE tickets (
id bigserial primary key,
state character varying,
closed timestamp
);
CREATE INDEX "state_index" ON "tickets" ("state")
WHERE ((state)::text = 'open'::text));
Run Code Online (Sandbox Code Playgroud)
该表包含 1027616 行,其中 51533 行具有state = 'open'和closed IS NULL或 5%。
条件为 on 的查询state按预期使用索引扫描执行良好:
explain analyze select * from tickets where state = 'open';
Index Scan using state_index on tickets (cost=0.29..16093.57 rows=36599 width=212) (actual time=0.025..22.875 rows=37346 loops=1)
Planning time: 0.212 ms
Execution time: 25.697 …Run Code Online (Sandbox Code Playgroud) postgresql performance index postgresql-10 postgresql-performance
我在 /usr/bin 下找不到 pg_resetxlog。
postgres (PostgreSQL) 10.7 (Ubuntu 10.7-1.pgdg16.04+1)
cd /usr/bin
postgres@node-1:/usr/bin$ ./pg_resetxlog
-su: ./pg_resetxlog: No such file or directory
Run Code Online (Sandbox Code Playgroud) PostgreSQL 有一个特殊的功能,称为COMMENT将元数据附加到标识符或任何类型(模式、表、列、函数、类型、域等)。看起来像这样,
COMMENT ON TABLE mytable IS 'This is my table.';
Run Code Online (Sandbox Code Playgroud)
评论有最大尺寸吗?
我们正在尝试使用旧表中的信息为新功能填充新表,但我们将多次将此查询作为脚本运行,因为我们想要捕获任何用户更新的数据。
表 1 架构。
table1
id | email | first_name | last_name | job | phone | user_id | institution_id | institution_type | completion_state | created_at | updated_at | mobile_phone | deleted_at
----+-------+------------+-----------+-----+-------+---------+----------------+------------------+------------------+------------+------------+--------------+------------
Run Code Online (Sandbox Code Playgroud)
表 2 架构。
table2
id | contact_id | status | data | created_at | updated_at | source_updated_at
----+------------+--------+------+------------+------------+-------------------
Run Code Online (Sandbox Code Playgroud)
这是我的查询
INSERT INTO table2 AS iic (contact_id, data, created_at, updated_at, source_updated_at)
SELECT
cc.id,
(
SELECT row_to_json(_) FROM (
SELECT
cc.email,
cc.first_name,
cc.last_name,
cc.job,
cc.phone,
cc.user_id,
cc.institution_id,
cc.institution_type,
cc.completion_state,
cc.updated_at, …Run Code Online (Sandbox Code Playgroud) 我如何知道wal_level我的 AWS RDS Postgres 11.1 数据库有哪些?
我检查了“参数组”,但无法找到wal_level.
一经发现,如何更改?
postgresql ×10
aws ×1
comments ×1
count ×1
index ×1
metadata ×1
mysql ×1
oracle ×1
performance ×1
pg-dump ×1
query ×1
replication ×1
sql-server ×1
sqlite ×1