数据存储分区--范围分区,哈希分区,列表分区,性能调优必不可缺少的部分

oracle: 表分区>>范围分区,列表分区,散列分区/哈希分区,间隔分区,参考分区,子分区/复合分区/组合分区 分区表是将一个逻辑上的大表按照特定的规则划分为多个物理上的子表,这些子表称为分区。分区可以基于不同的维度,如时间、数值范围、字符串值等,将数据分散存储在不同的分区中,以提高数据管理的效率和查询性能,同时便于数据的维护和操作作用范围分区 range它将表中的数据根据某个列的值的范围分布到不同的分区中。通常适用于具有连续数值或时间序列的数据分区名自定义,可以用p1,p2,也可以用其他分区字段必须在表中有定义, 每个分区的区间是前闭后开, 即最小值<=区间< 最大值。 阅读详情

数据存储分区

在这里插入图片描述

前言–这个话题是关于数据库的优化部分,数据库的优化有很多种形式,数据的存储分区就是其中一种

存储分区主流的三个分法 : 范围分区,哈希分区,列表分区
每个分区都有属于自己的特点和适合的应用场景

如果不对数据库进行存储分区,当数据量大的时候,比方我想去在数据库的十万/百万条甚至更大的数据里查询一条数据,倘若数据库不存在分区,那就很损耗数据库的性能了

当然,如果存储分区的分法不合适,例如哈希分区适用于数据重复率不高的数据,而这时你却用列表分区去进行数据库的分区,那结果会导致你分区之后的效率没有提高可能反而会降低查询的效率

🆗

范围分区

使用场景 : 通过绑定自定义的列进行分区,其中最突出的就是根据时间分区,例如 : 客户下单时间,可以分月,季度,半年的形式来缩减数据的量以免在数据库查询时进行全表扫描
概念 : 按照数据表中某个值的范围进行分区,根据值的范围,决定将该数据存储在哪个分区中。
创建分区 :

create table sales
(
	acct_no NUMBER(5),
	person VARCHAR2(30),
	week_no NUMBER(2)
)
//根据week_no这一列进行分区
PARTITION BY RANGE (week_no)

(	
//	分区的区域	p1,p2,..pn		
	PARTITION P1 values less than (4) tablespace data0,
    PARTITION P2 values less than (8) tablespace data1,
	......
	PARTITION Pn values less than (99) tablespace datan
);

列表分区

使用场景 : 取一些数据库中列的值经常性重复的,例如 : 财经新闻的地域标签,每个新闻都有标签,根据用户的喜爱或者经常点击的新闻在数据库中添加新闻标签,等下次展示新闻时根据新闻标签去搜索新闻
概念 : 当数据为一系列离散的数值时,可以进行列表分区。列表分区的分区键由一个单独的列组成,进行操作时,可以直接通过所要操作的数据去查询相应 的分区。
列表分区最大的优势是可以通过分区来很方便的查找相应的数据,但是列表分区有很大的局限性,这种分区技术要求数据的重复率比较高。
缺点 : 分区与记录值是无关 的,实施难度和可维护性都比较差,而且他的数据分区可能不均匀,这时需要用到哈希分区来存储数据了。

创建分区 :

create table sales
(
	acct_no NUMBER(5),
	person VARCHAR2(30),
	week_no NUMBER(2)
)
//通过person这一列进行分区
PARTITION BY LIST (person)

(
//分区p1的值是abc
	PARTITION P1 values ('abc'),
//分区p2的值是def,adf
    PARTITION P2 values ('def','adf'),
	.......
	PARTITION Pn values ('wfs')
);

哈希分区

使用场景 : 将股票的代码等唯一性比较强的列设置为分区条件
概念 : 所谓哈希分区,首先将分区编号,之后通过哈希函数来指定分区存储数据。哈希分区一般追求的是数据在分区上均匀分布的特性。在哈希分区中,用户不必考虑自己指定一个列值或列值集合应该存在哪个分区上,数据库自动完成相应的工作。用户只需要确定哈希分区产生的分区数量,以及确定哈希分区的哈希函数进行哈希分区的操作。
由于在哈希分区中,数据都需要通过统一的哈希函数来确定存储的位置,所以当创建分区列上的数据重复率很低时,哈希分区能很好的将各个数据均匀分布在各个物理存储上。

创建分区:

create table sales
(
	acct_no NUMBER(5),
	person VARCHAR2(30),
	week_no NUMBER(2)
)
PARTITION BY hash(acct_no) partitions 4 as select * from dba_objects;

哈希分区有以下特点:
1)基于分区字段的哈希值,自动将记录插入到指定分区中;
2)分区数一般是2的幂;
3)易于实施;
4)总体性能是最佳的;
5)更适于静态数据;
6)适于数据的均匀存储;
7)数据管理能力比较弱;
8)对数据值无法控制;

三种分区的比较

1)范围分区:主要特点是能根据数据的范围将不同范围的数据存储在不同的分区里。范围分区的特点决定了 它可能是在存储一些数据时必须选择的存储方式。若是按照时间范围来存储数据,范围分区是唯一合适的存储方式。
2)哈希分区:主要特点是能将数据比较均匀的分配到各个分区中,保证各个分区能比较均衡的被利用。当数据重复率高时,哈希分区将大量的数据存储在同一个分区中,这样会导致分区存储的数据不均匀,也会影响到后面数据的操作。哈希分区更适合于存储数据重复率比较低的数据。
3)列表分区:主要特点是按照字段的值来对数据进行分区。列表分区对数据的字段值进行划分,不同的字段值存储在不同的分区上。它适合于存储一些重复率比较高的数据。

在这里插入图片描述

阿里大厂面试:2亿条数据需要缓存,如何设计这个存储方案? 阿里大厂面试 阅读详情

相关推荐

千万级数据,如何做性能优化?分库分表、Oracle分区表?

通过分表分区技术,解决Oracle千万级数据性能问题

学Java,找哪吒 6065

Mysql分区 - Range分区

1、Range(范围) – 这种模式允许DBA将数据划分不同范围。例如DBA可以将一个表通过年份划分成三个分区,80年代(1980’s)的数据,90年代(1990’s)的数据以及任何在2000年(包括2000年)后的数据。 2、Hash(哈希) – 这种模式允许DBA通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。例如DBA可以建立一个对表主键进行分区的表。 3、Key(键值) – Hash模式的一种延伸,这里的Hash Key是MySQL系统产

秃头的博客 4641

如何利用VS2017创建一个简单的窗口

#如何利用VS2017创建一个简单的窗口 1、新建->Windows桌面向导 2、应用程序类型->桌面应用程序,点击确定 3、点击调试->开始调试 可建立如下图的窗口 4、可以在生成的项目文件的中找到windows17_2的应用程序,打开界面如下: 注:新建空白项目也可以,注意在解决方案资源器中添加.cpp文件,如源.cpp文件,下载代码见博文 ...

weixin_46894139的博客 2914

Oracle partition分区表(一)-----范围分区、列表分区、哈希分区

Oracle partition分区表(一)-----------范围分区、列表分区、哈希分区

qq_37432174的博客 3476

qmc5883p芯片坐标系方向定义

问题 最近一个项目用到qmc5883p, 然而确定磁力计方向的时候发现datasheet上写的不是很清楚, 并且example中还有一个设置方向的一步, 于是测试了芯片坐标方向并记录了下来; 该芯片和qmc5883L方向并不一致; 结果 qmc5883P的datasheet给出来如下说明, Y为笔者添加的; 但是这个方向是按照datasheet的example设置的结果: //Define the sign for X Y and Z axis qmc5883p_write_reg(0x2

时有限 4114

VOSviewer文献可视化006:修改节点标签文字

由VOSviewer软件生成的可视化图形所显示的文字是小写的,有时候,我们希望其所显示的数据(如国家或作者的首字母等)能够以大写的方式呈现,这时可以进行对节点标签文字的修改操作,使图形显示我们想要的一个效果。

qq_41725964的博客 6150

分区表的几种类型

Oracle 提供了以下几种分区类型: 范围分区(range) 哈希分区(hash) 列表分区(list) 范围-哈希复合分区(range-hash) 范围-列表复合分区(range-list) 文章目录1 范围分区(RANGE)例1:按指定要求划分例2:按时间划分例3:MAXVALUE2.哈希分区(散列分区)(HASH)例13 列表分区(LIST)例1例24 组合分区(RANGE-LIST 和...

鲨鱼胃的博客 1万+

Java 处理地理信息数据[DEM TIF文件数据获取高程]

EPSG 是一个国际标准,用于唯一标识地理坐标系和投影坐标系。

两点 1275

PostgreSQL - 高级分区表:哈希分区与复合分区

本文深入探讨了PostgreSQL中的高级分区技术,重点介绍了哈希分区和复合分区的原理与实现。哈希分区通过哈希函数均匀分布数据,适合高并发写入和等值查询场景。复合分区结合多种策略(如范围+哈希),能更灵活地处理复杂数据分布需求。文章通过实际SQL示例展示了创建分区表的方法,并分析了不同分区策略的性能特点与应用场景。这些高级分区技术能显著提升大规模数据处理的性能和管理效率。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

《C语言小游戏之贪吃蛇程序代码》

//为广大编程游戏爱好者提供一个参考的游戏源代码#include&lt;stdio.h&gt;#include&lt;conio.h&gt;#include&lt;windows.h&gt;#include&lt;time.h&gt;#define framex 5#define framey 5#define wide 20#define high 20int i,j,a[2];//将光标移动到...

qq_42052821的博客 2万+

从零玩转显示屏:手把手教你用Arduino驱动SPI屏幕(附引脚定义图)

本文提供了一份详尽的Arduino驱动SPI屏幕的入门指南。从SPI接口的核心引脚定义(如DC、RESET)与RGB接口的区别讲起,手把手指导硬件连接与软件库配置,并最终通过一个天气显示器实战项目,帮助读者掌握驱动SPI屏幕、显示RGB色彩内容的核心技能。

weixin_29189987的博客 131

MySQL分区表详解

通常情况下,同一张表的数据在物理层面都是存放在一起的。随着业务增长,当同一张表的数据量过大时,会带来管理上的不便。而分区特性可以将一张表从物理层面根据一定的规则将数据划分为多个分区,多个分区可以单独管理,甚至存放在不同的磁盘/文件系统上,提升效率。 分区表的优点: 数据可以跨磁盘/文件系统存储,适合存储大量数据。 数据的管理非常方便,以分区为单位操作数据,不会影响其他分区的正常运行。 数据查询上在某些条件可以利用分区裁剪(partition pruning)特性,将搜索范围快速定位到特性分区,提升查

最简单的方法,解决最实际的问题。 2万+

思博伦仪表打流测试使用总结

下图红框中的checkbox为选中状态时,表示该流会携带测试仪做一些分析,包括时延和乱序等信息时需要的一些字节,当改选项选中时,如配置IPv4的TCP流,最小字节长度必须为78字节;如果需要64字节的TCP流,改选项必须不选中;

陌上花开缓缓归以的博客 1463

PostgreSQL表分区终极指南:范围、列表与哈希分区实战应用

PostgreSQL表分区是数据库性能优化的核心技术之一,能够显著提升大数据量场景下的查询性能和管理效率。作为最受欢迎的开源关系型数据库,PostgreSQL提供了三种强大的分区策略:范围分区、列表分区和哈希分区。本文将为您详细解析这些分区策略的应用场景、实现方法和最佳实践,帮助您构建高性能的PostgreSQL数据库架构。💪 ## 📊 为什么需要PostgreSQL表分区? 当您的数据表

gitblog_00912的博客 495

2.4 提示词优化

我们在使用大模型的时候,同一任务使用不同表述的提示词,可能得到差异巨大的结果,因为模型的性能高度依赖输入提示词的质量。我们可以通过提示词优化来更高效地获取理想输出。

从0到1,突破自己 1010

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

GaussDB云数据库SQL应用系列—分区表管理

GaussDB云数据库是一款高性能、高可用的云原生关系型数据库,支持多种数据存储和计算引擎。其中,分区表是GaussDB云数据库的一项重要特性,在GaussDB云数据库中使用分区表,可以帮助用户提高查询性能、降低存储成本、方便数据维护等方面的问题。

Gauss松鼠会 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

数据库系统 第15节 分区

以上就是关于范围分区、列表分区和哈希分区的基本概念及其应用场景。选择合适的分区策略可以帮助优化查询性能,并简化数据管理。需要注意的是,实际应用中可能需要结合多种分区策略以达到最佳效果。接下来我会进一步讨论分区的一些高级概念和技术细节,以及如何选择合适的分区策略。范围分区适用于具有时间序列特性的数据。列表分区适用于根据某些离散值分类的数据。哈希分区适用于需要均匀分布数据的情况。子分区可以在已有的主分区基础上进一步细化数据分布。分区裁剪可以显著提高查询性能。分区维护是保持分区策略有效性的必要步骤。

hummhumm的专栏 2110

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

pgvector分区表:大数据量的分区管理策略

随着AI应用的快速发展,向量数据存储需求呈现爆炸式增长。单个pgvector表在默认配置下最多支持32TB数据,但对于超大规模向量搜索场景,这仍然可能成为瓶颈。分区表(Partitioned Table)技术通过将大表拆分为多个物理子表,为pgvector提供了处理海量向量数据的终极解决方案。 本文将深入探讨pgvector分区表的最佳实践,涵盖分区策略选择、索引优化、查询性能调优等关键环节,帮...

gitblog_01135的博客 997

达梦数据库的分区表

达梦数据库(DM Database)提供了灵活和强大的分区表功能,以更高效地管理和操作大规模数据集。分区表通过将数据分割成更小、更易管理的部分,可以显著提高查询性能、缩短维护时间、并提高系统的总体可扩展性。

文牧之的博客 2851

mysql数据库表分区设计实现

数据库单表数据量不断增大,设计表分区来提高数据库的查询效率。mysql表分区是将一个大表拆分成更小的,可管理的部分的技术,通过将数据分布在多个分区中,可以提高查询性能,简化备份和恢复操作,并允许更有效的处理大量数据。表分区可以根据不同的条件进行分割,例如按范围、列表、哈希或者键值分区。每个分区都类似于独立的子表,具有自己的存储结构和索引,这意味着可以根据查询的条件搜索特定分区,而不必要扫描政整个表。

weixin_45377154的博客 1946

MySQL 表分区:优化数据库性能的利器

在实际应用中,可以根据具体的业务需求和数据特点,选择合适的分区类型和策略,充分发挥表分区的优势。在查询时,也可以并行地在各个分区中进行查找,提高查询性能。例如,如果不同的分区存储在不同的物理磁盘上,那么写入操作可以并行进行,从而提高整体的写入性能。例如,我们可以按照时间、地域、业务类型等规则对一个大表进行分区,将不同的数据存储在不同的分区中。这样,在查询数据时,可以只查询特定的分区,而不是整个表,从而提高查询性能。这样,当我们查询某个月的订单时,只需要扫描对应的分区,而不是整个订单表,大大提高了查询性能。

我爱娃哈哈的专栏 1622

Hadoop系列(8):数据存储之数据分区及放置策略

1、分区的定义及作用定义:将表、索引或索引编排细分为更小的段,数据库对象的每一个段称为区。作用:分区操作可以并行执行;分区之间相互独立,系统可用性高;查询操作可以仅查询部分分区而不是整个数据库。2、分区方式(1)范围分区范围分区:按照数据表中某个值得范围进行分区,根据值得范围决定数据所在分区。主要特点:能够根据数据的范围,将不同范围的数据存储在不同的分区。适用:按照时间范围存储数据的系统(日志)(...

UDST 3399

数据库系统 第15节 分区续 第2篇

范围分区适用于时间序列数据,可以通过指定时间范围来优化查询性能。列表分区适用于数据可以按照离散的值进行分类的情况。哈希分区可以确保数据均匀分布在不同的分区中,适用于不需要根据特定值进行查询的情况。通过上述示例,我们可以看到不同的分区策略如何应用于具体的场景中,并如何帮助优化查询性能。接下来我将通过更多的案例来展示如何使用范围分区、列表分区和哈希分区,并提供一些实际的操作示例。范围分区适用于具有时间序列特性的数据,可以通过指定时间范围来优化查询性能。列表分区适用于数据可以按照离散的值进行分类的情况。

hummhumm的专栏 1249

Postgresql分区表

PostgreSQL分区表

Loser_you的博客 1402

达梦数据库的分区表管理

达梦数据库的分区表管理 分区表是将大表的数据分成称为分区的许多小的子集,达梦数据库的分区表有范围分区、哈希分区、列表分区、间隔分区、组合分区等等多种多样。范围分区:范围分区是对数据表中的某个值的范围进行分区,比如可以根据业务记录的创建日期进行分区,决定将该数据存储在哪个分区上。哈希分区:哈希分区是根据字段的hash值进行均匀分布,尽可能的实现各分区所散列的数据相等。列表分区:列表分区明确指定了...

jiaworld的博客 1637
上一篇: BigDecimal中除法divide()方法的详细解析,带你走进源码的world
下一篇: HashMap的核心方法put(K key,V value)方法源码详解,10分钟看完put方法源码知天知地
瓦坎达forever
博客等级 码龄7年 143粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值