如何重新划分Oracle DB中的现有表?
例如,在MySQL中,您可以使用ALTER TABLE从头开始重新定义分区:
/* MySQL code, not Oracle DB */
ALTER TABLE t1
PARTITION BY HASH(id)
PARTITIONS 8;
我已经在谷歌上搜索了一段时间,但在Oracle中找不到提供此功能的任何内容。
但是它必须是可能的,因为它是正在进行的分区管理的基本功能。
在我的例子中,我正在构建一个历史快照表,并根据快照日期范围进行分区。
每天,我都需要为新的一天添加一个分区,但也需要合并旧的快照分区,因为我们只保存前几个季度
向集群添加节点(叶子或聚合器)很简单:我编辑了memsql_cluster.json并重新运行了memSQL -memsql设置。问题是将分区添加到现有表中。这里的重点是向上扩展:需要添加更多行,但已经耗尽了原始集群中的可用内存。
我试过了,例如:
mysql> create partition DMP:32 on 'ec2-X-Y-Z.compute-1.amazonaws.com':3306;
ERROR 1773 (HY000): Partition ordinal 32 is out of bounds. It must be in [0, 32).
mysq
我一直在关注这篇关于如何使用Hive分析推特数据的文章:
我已经设置了flume来收集twitter数据并写入HDFS。我已经设置了一个指向相同HDFS位置的配置单元表。
当我在配置单元中运行类似这样的命令时:从推文中选择entities.user_mentions.screen_name;
我得到的响应如下: OK Time Time: 0.16秒。
无论我运行什么查询,我都得不到任何结果。
由于我不熟悉配置单元,我是希望在配置单元命令行中看到结果,还是必须从mySQL中挖掘结果。mySQL是metastore。
我已经从云中的MySQL 8数据库导出了一个数据库,并将其导入到本地计算机上相同版本的数据库中,但是导入失败了:
ERROR 1478 (HY000) at line 52372: InnoDB : A partitioned table is not allowed in a shared tablespace.
在加载之前,我删除数据库并重新创建数据库。然后我运行database_name < sqldump.sql
本地MySQL配置如下所示:
# Default Homebrew MySQL server config
[mysqld]
# Only allow connecti
我需要索引一个巨大的mysql数据库(50亿条记录)。我很少创建、更新或删除
只有一些请求像SELECT * FROM tbl_person WHERE name像'foo%‘
我已经在字段上设置了我的索引。
将会更好,从而在读取请求时获得最佳性能
50亿记录表上的1个请求或50000万记录表上的10个请求以及之后的连接结果。
我对这种分区很陌生。我不知道它的存在,但当我试图使我们的新'url_hash'列在数据库中的一个表中唯一时,我才意识到它的存在。并得到错误消息:
唯一索引必须包括表的分区函数中的所有列
这是一个由另一个人创建的数据库,我不知道,他们不再参与这个项目了。
我试着阅读mysql文档,并在论坛上阅读有关分区的内容。它是什么以及它是如何工作的。理解其目的,将一个表分成几个“部分”,以便更快地检索相关数据。一个常见的例子是按年份间隔进行分区。但大多数示例都显示了一种手动方法。例如,你决定不到三年的时间。例如:
PARTITION BY RANGE ( YEAR(separated
我正在尝试对名为companyScores的非常大的MySQL表进行分区(6000万行和50列)。基本上,该表以公司(列varchar "company_idx“,唯一ID从0到10,000家公司)及其各自的时间戳(列" timestamp ")和分数”得分“(列”分数“)为特征。我想在每个分区中包含大约500家公司。请让我知道以下是否可以做这项工作?
ALTER TABLE `companyScores`
PARTITION BY RANGE( company_idx ) (
PARTITION p0 VALUES LESS THAN (500),
P