问题标签 [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.
sql - Postgres多分区表的高效查询
我刚刚重组了我的数据库以使用Postgres 8.2 中的分区。现在我遇到了查询性能问题:
表中有 4500 万行。在分区之前,这将使用反向索引扫描并在达到限制时立即停止。
分区后(在 time_stamp 范围内),Postgres 对主表和相关分区进行全索引扫描并合并结果,对它们进行排序,然后应用限制。这需要的时间太长了。
我可以通过以下方式修复它:
这运行得很快。时间戳超出范围的分区甚至不包含在查询计划中。
我的问题是:我可以在 Postgres 8.2 中使用一些提示或语法来防止查询计划程序扫描整个表,但仍然使用仅引用主表的简单语法?
基本上,我可以避免在碰巧当前定义的每个分区上动态构建大 UNION 查询的痛苦吗?
编辑:我启用了约束排除(感谢@Vinko Vrsalovic)
linux - 如何初始化文件系统?
我在 /dev/sda 上有一些分区。我想以编程方式将它们全部删除。一种方法是列出所有分区,然后一一删除。另一种方法是执行
当我的分区表出现问题时,第一个选项失败,因为当前分区的列表没有给出任何输出,因此我无法删除任何当前分区。
第二种方法耗时过长。是否有任何“快速方法”可以将整个硬盘(/dev/sda)设置为未从 shell 脚本中分区?
sql - 使用 NLS_COMP = 语言进行 Oracle 分区修剪
甲骨文 10g。
我们有一个由 varchar2 列分区的大表(如果由我决定,它不会是这个列,但它是)每个分区都有一个值。前任。分区“分区 1”值 ('C')。
我们还有 NLS_COMP = LINGUISTIC。
当在该列中指示值时,分区修剪不起作用。
这会对所有分区进行全表扫描,而不仅仅是相关分区。
根据 此处的文档,“NLS_COMP 参数不会影响分区表的比较行为。”
如果我发出:
接着:
它确实正确地修剪了分区。(我基于生成的计划进行修剪/不修剪)
除了将分区名称硬编码到 from 子句中之外,还有什么可以在这里工作的吗?
此外,更改分区定义也已结束。我在我的团队中是少数,甚至认为这是一个问题。在我到达那里之前,前一个团队决定通过字符串查找和替换发送所有应用程序 sql 查询来“解决”这个问题,该字符串在 FROM 子句中添加硬编码的分区名称,并让某人手动更新存储过程中的分区名称根据需要......但它会打破一天,它会很难打破。我正在尝试找到侵入性最小的方法,但恐怕可能没有。
最好是只更改查询本身而不更改底层数据库结构的解决方案。就像我说的那样,这个解决方案可能根本不存在......
sql - 如何在基于外键的 SQL Server 中高效分区?
我正在使用 SQL Server 并想在表上创建一个分区。我想以另一个表中的外键为基础。
fk 指向 table2
我想根据 table2 的数据对 table1 进行分区,即如果 table2 包含类别
postgresql - 最优数据库表优化方法
我有一个数据库表变得太大(几亿行)需要优化,但在我开始对它进行分区之前,我想我会问一些建议。
这是用法:
0 . 表包含大约 10 列,每列大约 20 个字节。
INSERTS 以每秒数百次的速度执行。
SELECT 语句基于列 'a' (其中 a='xxxx' )每小时执行几次。
DELETE 语句基于 DATE 列执行。(删除超过 1 年的日期)通常每天一次。
关键要求是加快 INSERT 和 SELECT 语句,并且能够保留 1 年前的历史数据,而不会在删除时锁定整个表。
我猜我必须有两个索引,一个用于列“a”,另一个用于日期字段。还是可以同时优化两者?
选择速度和删除速度之间是否存在必要的权衡?
分区是唯一的解决方案吗?对此类表进行分区的好策略是什么?
我正在使用 PostgreSQL 8.4 数据库。
sql-server - 如果我对表进行分区,是否可以在不告诉 SQL Server 的情况下替换分区的文件?
我希望能够将一个表分区交换为另一个,只需在启动服务器之前替换 partitionN.ndf。
总体目标是能够将一些表行集拆分到不同的文件中,以便在安装应用程序时,它只与一组行一起使用。有些行总是需要的,所以
方案 A
方案 B
在这里,我将从 1000 中划分出 ID,并将低数字保留在公共数据库中。在场景特定的分区中,将有许多 ID 需要维护与公共数据库中的表的参照完整性。
那行得通吗?或者我是否需要在服务器运行时向服务器发出一些分区命令来替换它?我想问题的一部分是:服务器只是启动并读取文件,还是维护缓存和其他对替换敏感的东西?
oracle - 如何将分区表导入到具有不同分区数的表中?(甲骨文 10g)
我有一个现有的数据库,其中每个表都有 4 个分区(有些表同时使用 RANGE 和 HASH 分区)。
我需要将它导入另一个具有预先创建模式的数据库,其中相同的表将有 8 个分区。
我该怎么做呢?如果我进行表级导入,这是否“有效”?
mysql - MySQL对时间戳的分区查询
我在 Solaris 10 上运行 MySQL 5.1.30。因为我有一个表,我根据每个月将其划分为 12 个。
表结构如下
当我想查询特定的日期范围时。
当我使用类型时间戳作为时间戳时,它会查询所有分区。但是,当我将时间戳的类型更改为datetime时,它只查询 1 个分区 (p004)。
如何仅查询 1 个分区但使用类型时间戳作为时间戳?
mysql - 何时使用哪种 mysql 分区模型
好的,刚开始在 mySQL 中对一些表进行分区。有几种不同的方法来描述这一点,但我找不到更实用的方法。- 每种分区方式对哪种类型的数据效果最好?
还是真的不重要?
参考:http ://dev.mysql.com/tech-resources/articles/performance-partitioning.html
mysql - 对具有外键的 mySQL 表进行分区?
什么是合适的方法来做到这一点,因为 mySQL 显然不喜欢这个。从数据库设计中排除分区或外键对我来说似乎不是一个好主意。我猜想有一个解决方法吗?
03/24 更新:
http://opendba.blogspot.com/2008/10/mysql-partitioned-tables-with-trigger.html
谢谢!