集簇

简介:
集簇是一组表的集合,这些表有一个共同的列。对表进行集簇时需要注意下面的原则:
 对于应用程序连接语句中经常用在一起访问的表可以考虑创建集簇;
 那些很少进行连接的表不要创建聚合;
 如果应用程序经常对某个表进行全表扫描也不要创建集簇;
 如果经常选择主表和子表,则要创建集簇;
 如果表中具有相同的键值,但是这些键值占空间超过1个或2个数据块时,不宜创建
集簇;
 如果各个键值对应的行差异太大就不宜创建集簇。
例1。下面语句创建一个集簇(cluster)名字为 personnel,它带的索引键列(cluster key column)
为department_number。一个集簇大小是512字节:

CREATE CLUSTER personnel
( department_number NUMBER(2) )
SIZE 512
STORAGE (INITIAL 100K NEXT 50K);
例2。加表到建立好的集簇里去。这里将emp和dept表加到personnel集簇中:
dept tables to the cluster:
CREATE TABLE emp
(empno NUMBER PRIMARY KEY,
ename VARCHAR2(10) NOT NULL
CHECK (ename = UPPER(ename)),
job VARCHAR2(9),
mgr NUMBER REFERENCES scott.emp(empno),
hiredate DATE
CHECK (hiredate < TO_DATE (’08-14-1998’, ’MM-DD-YYYY’)),
sal NUMBER(10,2) CHECK (sal > 500),
comm NUMBER(9,0) DEFAULT NULL,
deptno NUMBER(2) NOT NULL )
CLUSTER personnel (deptno);
CREATE TABLE dept
(deptno NUMBER(2),
dname VARCHAR2(9),
loc VARCHAR2(9))
CLUSTER personnel (deptno);
例3. 下面语句在集簇键personnel上创建一个集簇索引(cluster index)
CREATE INDEX idx_personnel ON CLUSTER personnel;
当创建完集簇索引(cluster index)后,就可以往emp和dept表中插入数据了。


Hash 簇
哈希集簇(Hash Clusters)也是一种类似于集簇表的方法。但在等价查询中比一般的索引表
或索引集簇(index cluster)还要好。
哈希集簇由一个哈希函数对每行的键值来使用表数据。所有行的相同键值在硬盘中被存放在
一起。
何时创建Hash 簇
是否创建哈希集簇,主要考虑下面原则:
 对那些在使用中经常被访问的列,并且这些列经常使用等式的一组表可以创建哈希聚
合。
 对于非定的集簇键,如果空间能容纳下将来所存放的所有行才能创建哈希集簇。
 如果空间不足,不要考虑创建哈希集簇。
 如果在应用经常采用全表扫描,则不要创建哈希集簇。
 那些经常被修改集簇键值的表不宜创建哈希集簇。

 创建Hash 簇
使用CREATE CLUSTER 语句再后面加 HASHKEYS 保留字就可以创建哈希集簇。见下面例子:
例1.创建哈希集簇(Hash Cluster ) :
下面语句创建一个哈希集簇名字为personnel ,集簇键列为department_number,哈希键值最大
为500字节;每个键值为512字节:
CREATE CLUSTER personnel
( department_number NUMBER )
SIZE 512 HASHKEYS 500
STORAGE (INITIAL 100K NEXT 50K);
这个例子忽略了 HASH IS 子句,这样Oracle就使用内部哈希函数来创建这个集簇。
例2.创建哈希集簇(Hash Cluster ) :
下面语句创建一个哈希集簇名字为personnel ,集簇键列由home_area_code和home_prefix组
成,并且为这两个列使用了哈希函数:
CREATE CLUSTER personnel
( home_area_code NUMBER,
home_prefix NUMBER )
HASHKEYS 20
HASH IS MOD(home_area_code + home_prefix, 101);
目录
相关文章
|
机器学习/深度学习 关系型数据库 Python
纯Python实现鸢尾属植物数据集神经网络模型
本文以Python代码完成整个鸾尾花图像分类任务,没有调用任何的数据包,适合新手阅读理解,并动手实践体验下机器学习方法的大致流程。
19599 3
|
机器学习/深度学习 计算机视觉
基于Deep Learning 的视频识别技术
人工智能处理视频的技术
28055 0
|
8天前
|
人工智能 自然语言处理 API
深入浅出LangChain与智能Agent:构建下一代AI助手
LangChain为大型语言模型提供了一种全新的搭建和集成方式,通过这个强大的框架,我们可以将复杂的技术任务简化,让创意和创新更加易于实现。本文从LangChain是什么到LangChain的实际案例到智能体的快速发展做了全面的讲解。
279529 50
深入浅出LangChain与智能Agent:构建下一代AI助手
|
9天前
|
设计模式 人工智能 JSON
一文掌握大模型提示词技巧:从战略到战术
本文将用通俗易懂的语言,带你从战略(宏观)和战术(微观)两个层次掌握大模型提示词的常见技巧,真正做到理论和实践相结合,占领 AI 运用的先机。
237781 4
|
9天前
|
NoSQL Cloud Native Redis
Redis核心开发者的新征程:阿里云与Valkey社区的技术融合与创新
阿里云瑶池数据库团队后续将持续参与Valkey社区,如过往在Redis社区一样耕耘,为开源社区作出持续贡献。
Redis核心开发者的新征程:阿里云与Valkey社区的技术融合与创新
|
8天前
|
关系型数据库 分布式数据库 数据库
PolarDB闪电助攻,《香肠派对》百亿好友关系实现毫秒级查询
PolarDB分布式版助力《香肠派对》实现百亿好友关系20万QPS的毫秒级查询。
PolarDB闪电助攻,《香肠派对》百亿好友关系实现毫秒级查询
|
2天前
|
机器人 Linux API
基于Ollama+AnythingLLM轻松打造本地大模型知识库
Ollama是开源工具,简化了在本地运行大型语言模型(ile优化模型运行,支持GPU使用和热加载。它轻量、易用,可在Mac和Linux上通过Docker快速部署。AnythingLLM是Mintplex Labs的文档聊天机器人,支持多用户、多种文档格式,提供对话和查询模式,内置向量数据库,可高效管理大模型和文档。它也是开源的,能与Ollama结合使用,提供安全、低成本的LLM体验。这两款工具旨在促进本地高效利用和管理LLMs。
64070 19
|
10天前
|
消息中间件 Cloud Native Serverless
RocketMQ 事件驱动:云时代的事件驱动有啥不同?
本文深入探讨了云时代 EDA 的新内涵及它在云时代再次流行的主要驱动力,包括技术驱动力和商业驱动力,随后重点介绍了 RocketMQ 5.0 推出的子产品 EventBridge,并通过几个云时代事件驱动的典型案例,进一步叙述了云时代事件驱动的常见场景和最佳实践。
222405 2
|
7天前
|
物联网 PyTorch 测试技术
手把手教你捏一个自己的Agent
Modelscope AgentFabric是一个基于ModelScope-Agent的交互式智能体应用,用于方便地创建针对各种现实应用量身定制智能体,目前已经在生产级别落地。
|
10天前
|
弹性计算 安全 API
访问控制(RAM)|云上安全使用AccessKey的最佳实践
集中管控AK/SK的生命周期,可以极大降低AK/SK管理和使用成本,同时通过加密和轮转的方式,保证AK/SK的安全使用,本次分享为您介绍产品原理,以及具体的使用步骤。
101883 3