如何重新划分Oracle DB中的现有表?
例如,在MySQL中,您可以使用ALTER TABLE从头开始重新定义分区:
/* MySQL code, not Oracle DB */
ALTER TABLE t1
PARTITION BY HASH(id)
PARTITIONS 8;
我已经在谷歌上搜索了一段时间,但在Oracle中找不到提供此功能的任何内容。
但是它必须是可能的,因为它是正在进行的分区管理的基本功能。
在我的例子中,我正在构建一个历史快照表,并根据快照日期范围进行分区。
每天,我都需要为新的一天添加一个分区,但也需要合并旧的快照分区,因为我们只保存前几个季度
我正在尝试使用东正教,其中包括在Linux中使用MySQL。我可以访问一个大学范围的集群,它使用一个基本的登录接口设置,用于非常小的命令(<5分钟,内存不足)和多个远程分区,我只能通过SLURM与其交互。这些分区没有交互式命令。
我没有sudo权限,所以我安装了本地版本的MySQL,并且能够通过登录和其他侦听端口打开MySQL连接(这些端口最终都是通过登录运行的)。
有一段时间,我能够摆脱这个问题,以至于我把一个大表(~140 my )加载到了我的正交数据库中。然而,当我开始集群时,它终于抓到我了,跳汰赛结束了!但是他们没有时间帮我找到在其他分区上运行MySQL的方法.我需要在另一个分区
由于有将近10亿行,我们必须在每个SSD中将单个分区划分为SSD,其中大约有4个分区。
表的当前模式:
CREATE TABLE IF NOT EXISTS `a` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`special_key` varchar(20) NOT NULL DEFAULT '0',
`data1` varchar(20) NOT NULL,
`data2` varchar(20) NOT NULL,
`updated` datetime NOT NULL DEFAULT CUR
我有一个大的(40 to )表,我想对其进行分区。行本质上是写的,一次读很多次。目前,我正在file_per_table中使用MySQL5.5Innodb。很难优化这个表,因为重建整个文件需要很长时间。
我希望对表进行分区,以便只有一个分区被写入;我认为这将意味着优化表将花费更少的时间,因为每个非当前文件只需要优化一次,不需要再次访问。
我对mysql中的表分区还很陌生,我不知道该怎么做才是正确的。我知道没有“文件大小”分区方案,所以第二个最好的方法是在将导致文件大小的行范围内进行搜索(3-4GB似乎不错,所以按我们目前的速度,每年大约有3-4个文件)。我的想法是在id上进行分区,但这不能满足
我需要将我的数据目录移动到同一台服务器上的一个更大的驱动器。
# stop mysql
/etc/init.d/mysql stop
# copy the data over
cp -R -p /var/lib/mysql /home/mysql
#edit my.cnf
# and add a 'datadir' section with the new path.
#restart mysql
/etc/init.d/mysql restart
复制数据需要很长时间(我怀疑),但至少是安全的。
我可能还想在某个地方添加一个临时目录。
我还需要做些什么来移动数据吗。
我
这里有几个分区优化的MySQL DB表,如下所示:
ALTER TABLE radpostauth PARTITION BY HASH(id) PARTITIONS 32;
通过升级do MySQL 5.7,错误日志中开始出现以下警告:
The partition engine, used by table 'y.radpostauth', is deprecated and
will be removed in a future release. Please use native partitioning instead.
我有一个想法,我可以做一个ALTER TABLE
我将txt文件中的数据导入mysql (通过php脚本)。这个转储是巨大的,它被分成10个文件。我导入了第一次和第二次,一切正常-我可以看到所有的条目在phpmyadmin等。有大约70万(?)参赛作品。当我开始导入第三个时,发生了一些奇怪的事情--永久加载导入脚本。为了完成它的工作,我离开了它,但是经过了很长时间(而且由于文件和以前的文件大小一样,我认为不应该花那么长时间),我在浏览器中单击了' stop‘来停止我的脚本。然后我试着访问phpmyadmin..。永远装货,永不停歇。试图加载我的网站(它在我的本地apache2上).永远装船。
/etc/init.d/mysql res
我遵循了这个doc:分区的语法,但是它会引发语法错误。
ALTER TABLE e EXCHANGE PARTITION p0 WITH TABLE e2
错误代码: 1064。您的SQL语法出现错误;请检查与您的MySQL服务器版本对应的手册,以便在第1行使用接近“EXCHANGE分区p0与表e2”的正确语法。
有人能告诉我怎么纠正这个问题吗?注意:表e、e2已经创建。Mysql版本: 5.2.40
我正在尝试对名为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
我有一个MySQL表(带有数据):
CREATE TABLE IF NOT EXISTS `lc6_words` (
`jp_wkey` BIGINT NOT NULL AUTO_INCREMENT,
`jp_word` varchar(255) NOT NULL,
`jp_fcharascii` INT NOT NULL,
`jp_word_occ` BIGINT NOT NULL DEFAULT 1,
UNIQUE(`jp_word`),
PRIMARY KEY (`jp_wkey`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 CO