问题描述
嗨,汤姆,
我有一个关于使用哈希分区时分区数量选择的问题。
我有下表用于存储文档
该表将容纳tb的文档。
此表不会与其他表合并。
我们决定通过哈希对该表进行分区,其中分区键列为 “NIU”,因为该表将始终被该列过滤。
NIU是患者的唯一标识符,但在表中不是唯一的,因为我们将为同一患者提供多个文档。
大约有1000万个不同的值,这将随着时间的推移而增长,但与文档数量相比是相当静态的。
该表本身将容纳数亿行。
我的问题驻留在要选择的分区数量中。什么会影响要选择的分区数量?
会不会只有每个分区的大小?
分区数量非常大是否有任何缺点,是否会增加任何开销?
非常感谢。
西里尔
我有一个关于使用哈希分区时分区数量选择的问题。
我有下表用于存储文档
CREATE TABLE "DOCUMENT"
( "DOCUMENT_ID" NUMBER(38,0),
"CREATED_BY" VARCHAR2(30 BYTE),
"CREATED_DATE" TIMESTAMP (6),
"DOCUMENT" CLOB,
"DOCUMENT_PRODUCTION_DATE" TIMESTAMP (6) WITH TIME ZONE,
"DOCUMENT_SIZE" NUMBER(10,0),
"DOCUMENT_TYPE" VARCHAR2(20 BYTE),
"ENTITY_IDENTIFIER" VARCHAR2(200 BYTE),
"MEDIA_TYPE" VARCHAR2(60 BYTE),
"PART_NUMBER" VARCHAR2(200 BYTE),
"NIU" VARCHAR2(50 BYTE),
"REQUEST_NUMBER" VARCHAR2(200 BYTE),
"SENDER_EXTENSION" VARCHAR2(21 BYTE),
"SENDER_ROOT" VARCHAR2(240 BYTE),
"TRACKING_ID" VARCHAR2(36 BYTE)
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "CLINICAL_DATA"
LOB ("DOCUMENT") STORE AS SECUREFILE (
TABLESPACE "CLINICAL_LOB" ENABLE STORAGE IN ROW CHUNK 8192
NOCACHE LOGGING NOCOMPRESS KEEP_DUPLICATES
STORAGE(INITIAL 106496 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT))该表将容纳tb的文档。
此表不会与其他表合并。
我们决定通过哈希对该表进行分区,其中分区键列为 “NIU”,因为该表将始终被该列过滤。
NIU是患者的唯一标识符,但在表中不是唯一的,因为我们将为同一患者提供多个文档。
大约有1000万个不同的值,这将随着时间的推移而增长,但与文档数量相比是相当静态的。
该表本身将容纳数亿行。
我的问题驻留在要选择的分区数量中。什么会影响要选择的分区数量?
会不会只有每个分区的大小?
分区数量非常大是否有任何缺点,是否会增加任何开销?
非常感谢。
西里尔
专家解答
一些需要考虑的事情
1) 是否需要对其进行分区?您是否担心整体尺寸,还是在对患者数据进行扫描后有效?也许主键为 (NIU,DOCUMENT_ID) 的IOT会为您提供每个患者很好的聚类数据。(每行的平均大小在这里也可能是一个因素)
2) 文件 (即clob) 的尺寸是多少?您将始终与文档一起检查患者数据,还是仅与其他元数据一起检查?(即,与内联或外联存储该文档有关)
3) 哈希分区应为2的幂。如果不进行大量的仔细测试,我会犹豫是否要大量进入 (例如) “数千个” 分区。当一个对象由这么多段组成时,考虑一下您为该对象浮动了多少字典元数据,其中一些或全部可能需要在解析查询时加载/读取/处理。例如1000分区x 10列x (说) 每列200直方图桶...那是很多东西。
希望这有所帮助。
1) 是否需要对其进行分区?您是否担心整体尺寸,还是在对患者数据进行扫描后有效?也许主键为 (NIU,DOCUMENT_ID) 的IOT会为您提供每个患者很好的聚类数据。(每行的平均大小在这里也可能是一个因素)
2) 文件 (即clob) 的尺寸是多少?您将始终与文档一起检查患者数据,还是仅与其他元数据一起检查?(即,与内联或外联存储该文档有关)
3) 哈希分区应为2的幂。如果不进行大量的仔细测试,我会犹豫是否要大量进入 (例如) “数千个” 分区。当一个对象由这么多段组成时,考虑一下您为该对象浮动了多少字典元数据,其中一些或全部可能需要在解析查询时加载/读取/处理。例如1000分区x 10列x (说) 每列200直方图桶...那是很多东西。
希望这有所帮助。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




