问题标签 [table-partitioning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
110 浏览

sql-server - 在不同表之间重用 SQL Server Azure 上的分区函数和架构是一种好习惯吗?

我有一个分区函数和一个按日期划分的分区模式,我已经在我的 DDBB 上的一个大表上使用它们。由于我的数据库中有几个大表共享这种具有日期列的常见模式,我想知道是否可以在它们之间重用这个分区函数和模式,或者是否最好创建一对单独的分区函数和模式每个要在数据库上分区的表。

0 投票
1 回答
921 浏览

hive - 如何从分区的配置单元表中删除行?

我需要从已分区的 Hive 表中删除特定行。这些要删除的行符合某些条件,因此不能为了这样做而删除整个分区。假设该表Table具有三列:partnerdatesource_key,并且它由date和分区source_key

众所周知,hive 中不支持删除或更新特定记录集的操作(请参阅如何在 Hive 中删除和更新记录)

按照此解决方案,我成功执行了以下查询,以便仅保留与某些给定条件匹配的记录,例如:属于某个给定范围的date,source_key='heaven'和列partner<>'angel'...

创建表的临时空副本Table

用当前行填充它。

删除目标分区。

将已编辑的分区插入到目标表中。(由于语法错误,无法插入 OVERWRITE)

删除临时表。

The query runs fine. Because the table Table is managed, when the partitions are dropped the hdfs files should be dropped within, but something is wrong (perhaps in the last INSERT INTO statement) because after the execution of all these queries the target table Table keeps all records with partner = 'angel' in the given range of dates and with , basically stays the same.

Where is the fault? What is missing? How to accurately delete specific rows matching certain conditions for such a Hive table?

0 投票
0 回答
18 浏览

sql - 从非分区表迁移到字段分区表时的问题

我试图将非分区表转换为字段分区表。但是,在创建备份表时,仅从原始表中复制了少量数据。这会导致我试图避免的大量数据丢失。

我应该做些什么来解决这个问题?

我正在使用以下查询:

0 投票
1 回答
246 浏览

sql - ORA-14097: ALTER TABLE EXCHANGE PARTITION 中的列类型或大小不匹配

我在交换分区时遇到了 ORA-14097。谁能分享我一些光?

我有以下 source_tbl(非分区)表,并打算使用“VALID_PERIOD_END”列对其进行分区

该表现在有 5M 行,我想按 VALID_PERIOD_END 对其进行分区,这样如果它是“9999-12-31 23:59:59”(当前)将在一个分区中,而其余的将在另一个分区中

我创建了第二个名为 TEMP_tbl 的表

TEMP_tbl 具有与 source_tbl 完全相同的数据结构,因为脚本是使用 dbms_metadata.get_ddl驱动的

我已经执行了收集表状态,没有返回任何错误

但是,当我尝试执行以下交换分区语句时,出现上述错误

我检查了“user_tab_cols”,并确认 source_tbl 中没有隐藏列。会是因为我表中的原始列吗?

提前致谢!

0 投票
1 回答
35 浏览

sql - 如何从手动分区表中动态选择

假设我有这样的租户表;

对于每个租户,我都有一个名为 的对应表{tenants.name}_entities,例如,tenant_a我将有下表。

有没有办法可以创建具有以下结构的查询?(使用创建表语法来显示我在寻找什么)

--

我确实知道这是一个奇怪的数据库布局,我正在使用Postgres 中的外国数据来联合外国数据库。

0 投票
1 回答
30 浏览

postgresql - 不能在 postgresql 中将声明性分区与继承结合起来

我们有几个表必须继承另一个表。该计划是能够使用公共属性在不同表之间执行查询,但也可以对父表执行查询以进行分析。除此之外,可能需要编辑父表和子表中的数据。子表已经拥有所有必要的列,并且我们成功地继承了其中的几个。

现在我们遇到了一个按年份和季度分区的大表(声明性分区)的问题:

另一种选择是使用联合,但如果没有继承,我们将需要创建可编辑视图或类似的东西,并在每次我们需要另一个分区表时更改它们......或者我们可能只切换到继承,只是出于兼容性原因.

我已经尝试过继承分区 - 效果不佳。

有任何想法吗?

0 投票
1 回答
101 浏览

postgresql - 基于日期的最佳 Postgres 分区

我正在寻找改进 Postgres(分区)表中数据删除的方法,而不是降低访问性能。

使用:Postgres 10.2

忽略一些不相关的列,我有transactions这些列的表(省略一些不相关的列):

关于当前表的一些要点:

  1. 在生产中,它有大约 1 亿行
  2. 该表基于user_id(模 100)进行分区(手动)。这意味着user_id 3的用户的交易将转到2356transactions_3的用户。user_id transactions_56
  3. 我们手动插入记录,因为 Postgres(10) 不支持这种开箱即用的分区,而且我们已经知道必须为其插入事务的用户(也在检索时)

运作良好:插入和检索,因为我们已经知道用户 - 我们知道要查看哪个表,因此不必通过 100 个分区来找到它。

什么不能:我们有一个经常删除旧数据的过程 - 基于用户订阅。但这通常会导致问题(空间问题),因为删除的数据不会立即释放。由于大量更新或删除活动导致表包含大量死行版本时,普通的 VACUUM 可能还不够(就像我们这里的情况)

我们希望如何改进这一点是能够根据事务日期将数据存储在分区中 - 然后能够在订阅结束时删除表。这将确保该空间立即再次可用。

简而言之,我们的主要目标是改进删除过程,以便立即恢复空间 - 同时确保访问性能不会恶化

我对此有几个问题:

  1. 如果我们根据日期对表进行分区,我认为这(至少访问)会变慢,因为它现在必须扫描所有 100 个表以查看事务 ID 在哪里?
  2. 是否真的有可能实现这一点,像以前一样保持事务的检索 - 同时改进删除过程。如果是这样,怎么做?
  3. 我认为在日子和帐户上都对其进行分区并不是一个真正可能的\好的解决方案 - 由于可以创建大量表?(需要保存数据最长2年)
  4. 为此,我们是否需要迁移到更新的 Postgres,比如 Postgres 14(它是最新的)。我知道升级到最新版本总是好的。但我想知道 - 如果没有 Postgres 升级真的可以做到这一点。

希望在前进的道路上得到一些指导。

0 投票
2 回答
33 浏览

postgresql - 是否可以在 PostgreSQL 中使用“create table as”创建分区表?

我正在尝试创建一个分区表,如下所示:

我收到以下错误:

0 投票
0 回答
53 浏览

postgresql - 使用 JDBC 在 Postgres 中获取表的分区

给定 Postgres 中的表名,我怎么知道:

  1. 如果表在某个键上分区,

  2. 该表的分区名称是什么

如果我正在使用 JDBC 对数据库进行编程?

例如(此示例来自 Postgres官方文档)。如果我在 Postgres 中创建一个分区表:

并创建了这个表的几个分区:

如果给定表名measurement,如果我使用JDBC查询数据库,如何获取分区名称:measurement_y2006m02、measurement_y2006m03、measurement_y2007m11、measurement_y2007m12、measurement_y2008m01?谢谢!

0 投票
0 回答
32 浏览

sql-server - 使用表分区来维护服务代理写入的表是好主意还是坏主意?

我们有一个激活的存储过程,它将错误写入一个表,我最近了解到它是 300GB。为了摆脱 300GB,我将保存最近的数据,然后在缓慢的时间内截断/重新设置表。

但是,对于未来的维护,我应该查看分区还是只进行定期删除?我可以想象有一次我尝试切换分区,它等待使用WAIT_AT_LOW_PRIORITY,然后杀死足够多的插入线程,Service Broker 认为发生了有毒消息问题,并关闭了队列。(或者它挂起,导致争用,因为 split/merge 不能使用WAIT_AT_LOW_PRIORITY)。

谢谢。