Sql中的Partition By和Clustered and Distributed By - 需要知道它们的含义以及何时使用它们

2024-05-05

我可以看到,在 SQL 中创建表时,我们可以使用 Partition By、Clustered 和 Distributed By 子句。

根据我的理解,分区会将相同键(我们在其上有分区)的数据存储在一起或更接近(可能在后台相同的结构化流中),这样当我们在连接、过滤器中使用该键时,我们的查询会更快。

集群是 - 我猜它将这些列的数据存储在一起或更靠近每个分区。

分布是哈希或循环之类的方法 - 在每个分区内存储数据的方式。如果您有整数列并且经常在某个范围内查询,请使用范围,否则使用散列。如果您的数据分布不均匀,那么您可能会面临数据倾斜问题,因此在这种情况下请使用循环法。

问题2:请问我的理解是否正确?

问题 1:有 INTO 子句 - 我想知道我们应该如何识别 DISTRIBUTION 的 INTO 子句的值?

问题3:还想知道哪一个是垂直分区,哪一个是水平分区?

问题 4:我没有看到任何好的在线文档来通过示例来学习这些概念。如果您知道请给我发链接。


Peter 和 Bob 为您提供了文档链接。

在这里快速回答您的问题:

分区和分布都根据分区方案对数据进行分区,并且都提供数据横向扩展和分区消除。

分区是可选的,并且可单独管理数据生命周期管理(除了使您能够消除分区),目前仅支持基于相同列值的基于值的分区。

然后,每个分区根据分配方案进一步分区。这里有不同的方案(HASH、RANGE 等)。系统根据一些启发式决定分配桶的数量。对于HASH分区,还可以使用INTO子句指定桶的数量。

然后,集群将指定分布桶中的行顺序,并允许您进一步提高查询性能(例如,您可以进行范围扫描而不是完整扫描)。

垂直和水平分区是有时用来分隔这两个分区级别的术语。我尽量避免使用它,因为记住哪个是哪个可能会令人困惑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sql中的Partition By和Clustered and Distributed By - 需要知道它们的含义以及何时使用它们 的相关文章

  • C++“智能指针”模板,自动转换为裸指针,但无法显式删除

    我正在一个非常大的遗留 C 代码库中工作 该代码库将保持匿名 作为遗留代码库 它在各处传递原始指针 但我们正在逐渐尝试使其现代化 因此也有一些智能指针模板 这些智能指针 与 Boost 的scoped ptr 不同 具有到原始指针的隐式转换
  • CSS - a:访问过:悬停?

    如何应用字体color仅指向已经存在的超链接visited并且正在被hover通过鼠标 本质上 我想做的是 a visited hover color red 是的 这是可能的 这是一个例子 a href http www google c

随机推荐

  • SQL CE 天蓝色连接

    我正在使用 azure 发布 asp net 应用程序 当我在本地发布时 它工作正常 但在 Azure 上 与数据库相关的所有内容都没有显示 并收到 由于发生内部服务器错误 无法显示页面 想知道我的连接字符串是否有问题 http webly
  • 如何从 Android 广播接收器显示对话框?

    理想情况下 我不想启动一项活动来执行此操作 当 WiFi 连接丢失时 我的应用程序需要关闭 因为这对我们来说是一个致命错误 我想显示一条错误消息并让用户按 确定 按钮 然后退出应用程序 解决这个问题的最佳方法是什么 Thanks AFAIK
  • 为什么我无法在 ES6 中导出已声明的函数?

    我读过 MDN 的文档 好吧 主要是新模块功能很好 让我困惑的是一些小事情export 现在 让我们看看 when I export function foo x return x x or export const foo x gt re
  • 正则表达式贪心问题 (C#)

    我有一个像 text 和 text 这样的输入字符串 我想用相应的 html 标签替换 wiki 语法 input text and text 理想的输出 h1 text and h1 text 但使用以下代码我得到以下输出 var reg
  • 获取集合时的 ​​Backbone.js 进度条

    我想在用新内容更新应用程序时显示进度条 我想最好的办法是在集合上调用 fetch 时执行此操作 我获取的内容主要是图像 视频海报等 但我只获取链接 而不是 base64 字符串或大的东西 我想做的是在获取图像链接时用进度条覆盖屏幕 渲染视图
  • 在 nohup 中使用别名

    为什么以下不起作用 alias sayHello bin echo Hello world sayHello Hello world nohup sayHello nohup appending output to nohup out no
  • authContext.AcquireTokenSilentAsync 抛出错误

    我参考了this https github com Azure Samples active directory dotnet graphapi web git 项目 该项目具有用于连接并获取有关用户配置文件的信息的代码 在运行该项目时 我
  • Java 中如何将 long 转换为 int?

    Java 中如何将 long 转换为 int 在 Java 8 中更新 Math toIntExact value 原答案 简单的类型转换应该可以做到 long l 100000 int i int l 但请注意 较大的数字 通常大于214
  • 如何更改散点图色调图例手柄

    下面这段代码使用seaborn生成的散点图如下 ax sns scatterplot x Param 1 y Param 2 hue Process style Item data df s 30 legend full 我想去掉圆圈中的颜
  • 签署程序集“<程序集名称>.dll”时出现加密失败 –“提供程序版本错误”

    我从知名提供商处购买了身份验证证书 现在我想对程序集进行强命名 然后对其进行数字签名 这是我到目前为止所做的 通过运行 sn exe p keypair pfx key snk 从 pfx 中提取公钥 选中项目属性签名选项卡上的 对程序集进
  • 如何显示 pg-search 多重搜索结果的摘录

    我已经在 Heroku 上的 Rails 应用程序中设置了 pg search query fast PgSearch multisearch query gt
  • 带有 Angular 8 自定义 webpack 配置的 svg-sprite-loader

    我正在尝试使用自定义 webpack 配置将 svg sprite loader 包 用于创建 svg sprite 与我的 Angular 8 项目一起使用 我正在使用以下自定义配置 const SpriteLoaderPlugin re
  • Prolog 罗马数字(属性语法)

    我正在做一项作业prolog questions tagged prolog扫描数字列表并应返回该列表是否是有效的罗马数字以及数字的十进制值 前任 1 roman N I N 1 true 2 当我运行我认为应该工作的程序时 十进制值总是正
  • 我可以将命名空间对象从可变对象转换为不可变对象吗?

    我从命令行参数收到一个命名空间对象 而且我不想修改它 我可以这样做吗 或者你有什么想法吗 coding utf 8 import argparse def parse args parser argparse ArgumentParser
  • 在Java中如何将数字转换为字母?

    有没有比这更好的方法将数字转换为其字母等效值 private String getCharForNumber int i char alphabet ABCDEFGHIJKLMNOPQRSTUVWXYZ toCharArray if i g
  • 知道 akka actor 何时完成

    有几个人和我一起从事一个项目 一直在试图找出解决这个问题的最佳方法 看起来这应该是经常需要的标准东西 但由于某种原因我们似乎无法得到正确的答案 如果我有一些工作要做 并且我向路由器抛出一堆消息 我如何知道所有工作何时完成 例如 如果我们正在
  • C# Memory.Span 意外慢

    在尝试新产品的同时Span
  • 树中的节点是否被视为其自己的祖先?

    我想知道计算机科学背景下对 祖先 定义的共识是什么 我问只是因为在算法简介 http en wikipedia org wiki Introduction to Algorithms 第二版 第 14 页 第259章 有算法的描述Tree
  • Mapbox-iOS-SDK 6.3.0 Pod 安装错误 403 Forbidden

    下载Mapbox示例 运行pod install 报错 403 Forbidden 为什么 请帮忙 谢谢 pod Mapbox iOS SDK gt 6 3 0 ios sdk examples 298e050be7352eb28cee6f
  • Sql中的Partition By和Clustered and Distributed By - 需要知道它们的含义以及何时使用它们

    我可以看到 在 SQL 中创建表时 我们可以使用 Partition By Clustered 和 Distributed By 子句 根据我的理解 分区会将相同键 我们在其上有分区 的数据存储在一起或更接近 可能在后台相同的结构化流中 这