标签: partitioning

带“三中位数”主元选择的快速排序:了解过程

我们将在课堂上介绍快速排序(使用数组)。我一直在尝试解决他们希望我们的快速排序作业如何与“三中位数”枢轴选择方法配合使用的问题。我只需要一个关于这一切如何运作的高级解释。我们的文字没有帮助,我很难在谷歌上找到清晰的解释。

这是我认为到目前为止所理解的:

index 0“三的中位数”函数采用(first)、array_end_index(last) 和(index 0 + array_end_index)/2(middle)中的元素。计算这 3 个指标的中值的指数。返回对应的索引。

功能参数如下:

/* @param left
*       the left boundary for the subarray from which to find a pivot
* @param right
*       the right boundary for the subarray from which to find a pivot
* @return
*       the index of the pivot (middle index); -1 if provided with invalid input
*/
int QS::medianOfThree(int left, int right){}
Run Code Online (Sandbox Code Playgroud)

然后,在“partition”函数中,索引与“median of Three”函数返回的数字相匹配的数字作为主元。我的作业指出,为了继续对数组进行分区,枢轴必须位于左右边界之间。问题是,我们的“三个中位数”函数返回三个索引之一:第一个、中间或最后一个索引。这三个索引中只有一个(中间)可以是任何东西的“中间”。

功能参数如下:

/* @param left
* …
Run Code Online (Sandbox Code Playgroud)

c++ partitioning quicksort multiple-languages

2
推荐指数
1
解决办法
6889
查看次数

从分区表复制 Hive

我有一个按年、月和日期分区的原始表。例如:

col_1    col_2    col_3    YEAR    MONTH    DATE 
a        b        c        2017    03       25
Run Code Online (Sandbox Code Playgroud)

我想创建一个新表,它是该表的子集,但仍保留原始表的分区。

就像简单的事情

CREATE new_table AS 
SELECT * 
FROM original_table 
WHERE (conditions);
Run Code Online (Sandbox Code Playgroud)

但是,由于原始表太大,我必须通过分区迭代此查询。

我当前的解决方案是编写一个 shell 脚本,迭代所有分区并为每个分区运行单独的查询。

例子:

for year in '2016' '2017'
    do
    for month in '01' '02' ...
        do
        for day in '01' '02' ...
            do
            hive -e "INSERT INTO new_table SELECT * FROM original_table WHERE YEAR=$year AND MONTH=$month etc."
        done
    done
done
Run Code Online (Sandbox Code Playgroud)

但这显得非常迂回且低效。有没有办法直接在配置单元中将其作为一行来执行此操作?

hadoop hive partitioning hdfs

2
推荐指数
1
解决办法
1万
查看次数

Mysql分区对索引的影响

我有多个用于业务数据的大表,最小的一个有 3800 万行(24G 数据,26G 索引大小)。我设置了索引来加快查找速度,并将缓冲池设置为总 RAM(116G) 的 80%。即使在这些设置之后,随着时间的推移,我们也开始观察到性能问题。我对磁盘大小(1T)有限制,并且目前无法选择分片。数据增长已增至每天 50 万行。这导致频繁的优化和主开关练习。表模式和索引已经被优化。因此,我开始考虑对表进行分区以提高性能。我的主要分区用例是通过删除分区每月删除数据,这样就不需要优化并改善读/写延迟。以下是其中一个大表的结构(由于法律原因列名已更改 - 假设定义索引的列具有查找用例):

   CREATE TABLE `table_name` (
     `id` int(11) NOT NULL AUTO_INCREMENT,
     `data_1` int(11) NOT NULL,
     `data_2` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
     `data_3` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
     `data_4` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
     `created_at` datetime DEFAULT NULL,
     `updated_at` datetime DEFAULT NULL,
     PRIMARY KEY (`id`),
     KEY `index_data1` (`data_1`),
     KEY `index_data2` (`data_2`)
   ) ENGINE=InnoDB AUTO_INCREMENT=100572 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Run Code Online (Sandbox Code Playgroud)

我计划在created_at列上进行分区。然而,问题是分区列必须是所有唯一键的一部分。我可以将created_at列添加到主键,但这会导致索引大小增加,这反过来又会产生副作用。有没有一些解决方法或更好的解决方案?

除了解决这个问题之外,还有一些问题在现有的任何文档或文章中都找不到答案。1.为什么mysql保证分区列是唯一键的一部分?2. 来自 ORM 的查询不存在 create_at 子句,这意味着我们无法对读取进行修剪,但只要插入始终被修剪,我们就可以接受。然而,看起来情况并非如此。为什么mysql要打开所有分区进行插入?

Mysql 版本 - 5.6.33-79.0-log Percona Server (GPL),版本 …

mysql database partitioning database-performance

2
推荐指数
1
解决办法
2042
查看次数

按日期列的子集对增量表进行分区

我正在 Databricks 中创建一个增量表,其中包含 1 天的代理日志(数百行数百万行)。我希望能够按小时对表进行分区,因此简单地按“_time”列对表进行分区是不够的。另外,我正在使用%sql运行时在笔记本中创建表,但如果这是更好的选择,我愿意在 Scala 中创建它。

如何创建分区逻辑,以便为每个小时的日志创建一个新分区?

我的专栏的格式_time如下。

yyyy-mm-ddThh:mm:ss.xxxxxx-time:zone其中时间和区域是 2 位数字。

因此,我想对每个独特的小时进行分区,一天有 24 个分区,就像这样。

yyyy-mm-ddThh

sql partitioning databricks delta-lake

2
推荐指数
1
解决办法
1万
查看次数

如何增加 Linux Centos 7.7 (AltArch) 中 /dev/root 中的可用文件系统大小?

我正在运行全新安装的 CentOS 7.7。在我的 Raspberry Pi 3 上,不幸的是,在安装 yum 软件包时,我的空间不足:

[root@centos7 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       1.4G  1.3G  104M  93% /
devtmpfs        459M     0  459M   0% /dev
tmpfs           464M     0  464M   0% /dev/shm
tmpfs           464M   12M  452M   3% /run
tmpfs           464M     0  464M   0% /sys/fs/cgroup
/dev/mmcblk0p1  286M   57M  230M  20% /boot
tmpfs            93M     0   93M   0% /run/user/0

Run Code Online (Sandbox Code Playgroud)

操作系统安装在16GB SD卡上,所以原则上我应该有足够的空间:

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1   *        8192      593919      292864    c  W95 FAT32 (LBA) …
Run Code Online (Sandbox Code Playgroud)

linux partitioning centos7

2
推荐指数
1
解决办法
4797
查看次数

Redis 流分区

我试图了解 Redis 流如何进行分区,如果可以将特定消息发送到特定分区(类似于使用 Kafka 的方式)。

我检查了redis-cli api,没有任何类似于分区的内容,在使用StackExchangeRedisredis库时也没有类似的内容。

唯一的方法是:IDatabase.StreamAdd(key,streamKey,streamValue,messageId)

我错过了什么吗?分区是否仅以固定方式进行?

PS 如果可以分区,分区键可以组合吗?

partitioning redis stackexchange.redis redis-streams

2
推荐指数
1
解决办法
1432
查看次数

使用CURRENT_TIMESTAMP查询时间戳分区表的效率

鉴于PostgreSQL 9.0.3下面的表分区:

CREATE TABLE records (
  ts TIMESTAMP,
  ...
);

CREATE TABLE records_2010 (
  CHECK (ts >= '2010-01-01 00:00:00' AND ts < '2011-01-01 00:00:00')
) INHERITS (records);

CREATE TABLE records_2011 (
  CHECK (ts >= '2011-01-01 00:00:00' AND ts < '2012-01-01 00:00:00')
) INHERITS (records);
Run Code Online (Sandbox Code Playgroud)

我希望以下SELECT查询具有相同的EXPLAINed计划,仅查询"records"和"records_2011",但它们有所不同:

BEGIN;
-- Assume CURRENT_TIMESTAMP is 9 a.m. on 5 March 2011
SELECT * FROM records WHERE ts >= '2011-03-05 09:00:00'; -- scans 2 tables
SELECT * FROM records WHERE ts >= CURRENT_TIMESTAMP;     -- scans all …
Run Code Online (Sandbox Code Playgroud)

sql postgresql timestamp partitioning

1
推荐指数
1
解决办法
1822
查看次数

如何在Scala中拆分List?

如何将列表L(或任何其他集合)拆分为2个列表,以便第一个包含80%,L第二个包含其余列表?

collections scala partitioning list

1
推荐指数
1
解决办法
484
查看次数

#1503 - UNIQUE INDEX必须包含表格分区功能中的所有列

我试图在我的数据库表的MySQL数据库表模式上添加分区为

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `user_group_id` tinyint(3) unsigned NOT NULL DEFAULT '2',
  `username` varchar(50) NOT NULL,
  `email` varchar(80) NOT NULL,
  `password` varchar(50) NOT NULL,
  `first_name` varchar(25) DEFAULT NULL,
  `last_name` varchar(25) DEFAULT NULL,
  `gender` enum('m','f','u') NOT NULL DEFAULT 'u' COMMENT 'm=>Male, f=>Female, u=>Unspecified',
  `profile_image` varchar(255) DEFAULT NULL,
  `reset_key` varchar(50) DEFAULT NULL,
  `block` enum('y','n') NOT NULL DEFAULT 'n' COMMENT 'y=>blocked, n=>notblocked',
  `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `modified` timestamp NULL DEFAULT CURRENT_TIMESTAMP, …
Run Code Online (Sandbox Code Playgroud)

mysql sql partitioning

1
推荐指数
1
解决办法
8718
查看次数

cassandra中的分区内部结构

我正在观看:https: //academy.datastax.com/courses/learning-cassandra-read-path/understanding-partition-summaries-and-indexes 我对此演示文稿有疑问.

分区摘要代表什么?:)

我的第一个想法是它只是一个缓存,保持x%的键位置.这意味着大约一个126的请求可以直接获得一个密钥而其他125个必须遍历整个表.但我认为这是非常无效的.

我的第二个想法是,分区摘要以某种方式能够为指定的键提供一系列索引,其中应存在给定键的行.但我无法想象这是如何实现的?特别是如果这个表应该是大小|分区索引|/index_interval

我想到的另一个问题是,SSTable可以为特定密钥保留许多条目吗?

谢谢,krzychusan

indexing partitioning cassandra nosql

1
推荐指数
1
解决办法
1313
查看次数