我有两个结构相同的表,A 和 B。编写了某个应用程序,以便它始终将相同的数据写入两个表。
在与同事讨论节省驱动器空间的潜力后,我想知道 mysql 或 postgresql 是否能够在表上创建另一个表的“别名”或“符号链接”。
我希望行为与软文件符号链接的行为非常相似;从符号链接本身或其目标读取将产生相同的输出,写入任一将更新目标。
由于在这种模式下 pgbouncer 为每个入站连接创建出站连接,因此在我看来 pgbouncer 不能作为池化器工作。这只是1对1的映射。
我哪里错了?
我对 PostgreSQL 比较陌生。一个月前,我开始将一些 MySQL 数据库迁移到 PostgreSQL。
我正在寻找有关配置文件的正确内存值的帮助。
目前,我有一个适度的专用服务器(2GB 的 RAM)在 Linux 下运行 Apache、MySQL 和 PostgreSQL。MySQL 主数据库的大小大约是 PostgreSQL 主数据库的 3 倍,数据流量也是如此。
我仍然有 PostgreSQL 的默认配置文件,参数为 shared_buffers = 32MB. 我假设我应该增加这个值,但我不想惩罚其他数据库。我读过一些关于将 25% 的物理可用内存专用于 PostgreSQL 的内容,但我不确定这一点。
新数据库包含七个表,最大的一个大约有 3 MM 行。该机器目前的流量较低(每天服务约 10000 ~ 20000 个选择),但这些值预计会增长。
我正在考虑将 shared_buffers 增加到 256MB,但我想听听对这个 RDBMS 有更多经验的用户的一些意见。
我在生产中使用 PostgreSQL 服务器。
当我发起一个查询时
select * from pg_stat_activity
Run Code Online (Sandbox Code Playgroud)
在我的服务器上,我收到了 98% 的查询,例如
SHOW TRANSACTION ISOLATION LEVEL
Run Code Online (Sandbox Code Playgroud)
我的服务器只接受 100 个连接,所以我无法继续进行。
为什么会这样?如何阻止所有这些查询?
我正在尝试从 PHP 准备一个查询,例如:
pg_prepare($con, "prep", "select * from test where tid in ($1)");
Run Code Online (Sandbox Code Playgroud)
然后执行它:
$strpar = "3,4,6,8,10";
pg_execute($con, "prep", array($strpars));
Run Code Online (Sandbox Code Playgroud)
问题是我无法传递一系列构建为 prepare 期望固定数量参数的值。有没有办法使参数动态?
我正在阅读有关物化视图的Postgres 文档,在一个示例中,他们使用以下内容:
SELECT word FROM words ORDER BY word <-> 'caterpiler' LIMIT 10;
Run Code Online (Sandbox Code Playgroud)
我试图在我自己的数据库上运行类似的查询,但出现错误。
[42883] ERROR: operator does not exist: character varying <-> unknown
Run Code Online (Sandbox Code Playgroud)
我(可能)不需要使用运算符,但我只是好奇它的作用。
注意事项:
<->即使你用引号将它括起来,谷歌也会忽略它。我有 100 多个名为 public.test_* 的表
我怎样才能轻松地一次GRANT ALL访问所有这些表的用户测试?
我试过:
GRANT ALL ON TABLE public.test_* TO test;
Run Code Online (Sandbox Code Playgroud)
但它不起作用......
我正在考虑将当前的 PostgreSQL 数据仓库迁移到具有 SSD 存储和 RAM 作为主要大小变量之一的云主机。我们目前处理的最庞大的数据将存在于每月分区表中。每个月大约有 70GB 的索引(40-ish w/o)。数据可能主要是定期批量加载,然后由 5 名研究人员组成的小团队访问。
我一直在尝试在此站点上搜索有关规范 RAM 的建议,我发现的所有内容是:
是否应该有足够的 RAM 来至少将整个索引 (16GB) 加载到 RAM?我还需要提供其他详细信息吗?
我有一个函数 build_details(),它将另一个表中的单行/记录作为其参数之一。
这是我想要做的,但它不起作用:
SELECT build_details(
SELECT * FROM my_table LIMIT 1,
1000,
TRUE)
Run Code Online (Sandbox Code Playgroud)
我想从 my_table 中取出一行并将其传递给函数,以便我可以运行它。如何使用 my_table 中的记录从终端调用该函数?
我正在设计一个模式来支持用户活动的日志记录,用户必须能够搜索:
我创建了这个架构:
并设计查询以进行搜索:
在所有事件中:
SELECT extract(epoch from log_time) * 1000,
u.username,
CASE WHEN l.event_type IN (0, 2) THEN e.template
WHEN l.event_type = 1 THEN format(e.template, ecs.field)
WHEN l.event_type = 3 THEN format(e.template, ess.field)
WHEN l.event_type = 4 THEN format(e.template, ect.ip, ect.port)
END
FROM logs l
JOIN users u ON u.id = l.user_id
JOIN event_def e ON e.id = l.event_type
LEFT JOIN event_client_search ecs ON ecs.log_id = l.id
LEFT JOIN event_switch_search ess ON ess.log_id = l.id
LEFT JOIN event_cable_test …Run Code Online (Sandbox Code Playgroud)postgresql ×10
array ×1
ddl ×1
dynamic-sql ×1
memory ×1
mysql ×1
operator ×1
performance ×1
permissions ×1
pgbouncer ×1
php ×1