Oracle 表分区

1.概述

        分区表就是将表在物理存储层面分成多个小的片段,这些片段即称为分区,每个分区保存表的一部分数据,表的分区对上层应用是完全透明的,从应用的角度来看,表在逻辑上依然是一个整体。

目的:提高大表的查询效率

概念:将一个表划分为多个分区表,"分而治之"

优缺点
   优点:

  •     '改善查询性能': 分区对象的查询仅搜索自己关系的分区
  •     '增强可用性':    如果某个分区出现故障,其它分区的数据仍然可用
  •     '维护方便':       如果某个分区出现故障,仅修复该分区即可
  •     '均衡I/O':         将不同的分区放置不同的磁盘,以均衡 I/O,改善整个系统性能

   缺点:

  •     已经存在的表无法直接转化为分区表 -- 不过有很多间接方法,如:重定义表

适用情况
 

  • 表的大小超过2G
  • 表中有大量的历史数据,数据存在明显的时间顺序
  • 表的存储必须分散在不同的存储设备上

2. 基础分区策略

根据不同的应用场景,你可以为表选择不同的分区策略,Oracle提供的基础分区策略有:

  • 范围分区(Range Partition)
  • 哈希分区(Hash Partition)
  • 列表分区(List partition)
  • 间隔分区(Interval partition

2.1 范围分区(Range Partition)

        范围分区根据预先定义的范围来划分分区,范围分区最适合管理类似且有明显顺序的数据,根据数据的顺序可以很容易划定分区范围。范围分区最典型的应用场景就是按时间对数据进行分区,所以其经常使用时间类型的分区键

        

  •  每一个分区都必须有一个VALUES LESS THEN子句,它指定了一个不包括在该分区中的上限值。分区键的任何值等于或者大于这个上限值的记录都会被加入到下一个高一些的分区中。
  • 所有分区,除了第一个,都会有一个隐式的下限值,这个值就是此分区的前一个分区的上限值。
  •  在最高的分区中,MAXVALUE被定义。MAXVALUE代表了一个不确定的值。这个值高于其它分区中的任何分区键的值,也可以理解为高于任何分区中指定的VALUE LESS THEN的值,同时包括空值。
建表语句:
create table material_transactions ( 
transaction_id number primary key,
item_id number(8) not null,
item_description varchar2(300),
transaction_date date not null 
) 
partition by range (transaction_id) ( 
partition part_01 values less than(30000000) tablespace ma_tra01,
partition part_02 values less than(60000000) tablespace ma_tra02, 
partition part_03 values less than(maxvalue) tablespace ma_tra03); 

2.2间隔分区(Interval partition

        间隔分区是范围分区的一个扩展,它也是通过范围来划分分区,唯一的区别是:间隔分区可以在相应分区数据插入时自动创建分区,省去了普通范围分区手动创建分区的操作。

        如果不是需要创建不规则的范围分区,那么更推荐使用间隔分区来替代范围分区,你只需要指定一个分区间隔及初始分区,后续的分区创建将由Oracle自动完成。

numtoyminterval(n,'year|month'):主要设置年和月的间隔
numtodsinterval(n,'day|hour|minuts|second'):设置天,小时,分钟,秒之间的间隔

  • create table inv_part (id number,name varchar2(32),create_time date)
  • partition by range(create_time) interval (numtoyminterval(1, 'MONTH'))     -- 指定分区间隔
  • ( partition p1 values less than (to_date('2023-02-01', 'yyyy-mm-dd')));

2.3.3.列表分区

        该分区的特点是某列的值只有几个,基于这样的特点我们可以采用列表分区。。列表分区可以让你自定义数据的组织方式,例如按照地域来分类数据

CREATE TABLE PROBLEM_TICKETS(PROBLEM_ID   NUMBER(7) NOT NULL PRIMARY KEY,
DESCRIPTION  VARCHAR2(2000), CUSTOMER_ID  NUMBER(7) NOT NULL,DATE_ENTERED DATE NOT NULL, STATUS       VARCHAR2(20))PARTITION BY LIST (STATUS)
(PARTITION PROB_ACTIVE   VALUES ('ACTIVE') TABLESPACE PROB_TS01,
PARTITION PROB_INACTIVE VALUES ('INACTIVE') TABLESPACE PROB_TS02)

2.2.4 哈希分区(Hash Partition

        这类分区是在列值上使用散列算法,以确定将行放入哪个分区中。当列的值没有合适的条件时,建议使用散列分区。散列分区为通过指定分区编号来均匀分布数据的一种分区类型,因为通过在I/O设备上进行散列分区,使得这些分区大小一致。

  • 选取分区键时尽量选取唯一列(Unique)或列中有大量唯一值(Almost Unique)的列。
  • 创建哈希分区时,分区的数量尽量是2的幂,例如2,4,8,16等。

create table hash_part1 (id number,name varchar2(32))partition by hash(id)(partition p1 tablespace tbs1,partition p2 tablespace tbs2);

3.复杂分区

3.1复合分区Composite Partition

        在基础分区的策略上,对每个分区再一次应用分区策略。例如,在基础的范围分区基础上,还可以对每个分区再次应用范围分区,即每个分区又被划分为若干个子分区。类似于中国可以划分为很多省(分区),每个省又可以划分为很多市(子分区)。

在使用复合分区时,3种基础分区策略可以随意组合

  • 范围-范围分区
  • 范围-哈希分区
  • 范围-列表分区

子分区是通过原来分区策略上通过新增 subpartition子句来定义的,下面我们以范围分区(间隔分区)为基础分区,演示三种子分区的创建方式.

create table 表名(..........)partition by range|list|hash(主分区列名)subpartition by range|list|hash(子分区列名)(partition 主分区名1 [values less than(上限)]|[values (值)] [tablespace 表空间名](subpartition 子分区名1 [values less than(上限)]|[values (值)] [tablespace 表空间名],subpartition 子分区名2 [values less than(上限)]|[values (值)] [tablespace 表空间名],.....),partition 主分区名2 [values less than(上限)]|[values (值)][tablespace 表空间名](subpartition 子分区名1 [values less than(上限)]|[values (值)] [tablespace 表空间名],subpartition 子分区名2 [values less than(上限)]|[values (值)] [tablespace 表空间名],.....),........);
--范围-散列分区
create table material_transactions_test  (
transaction_id number primary key,
item_id number(8) not null,
item_description varchar2(300), 
transaction_date date ) 
partition by range(transaction_date) subpartition by hash(transaction_id) 
subpartitions 3 store in (ma_tra01,ma_tra02,ma_tra03) (
partition part_01 values less than(to_date('2006-01-01','yyyy-mm-dd')), 
partition part_02 values less than(to_date('2010-01-01','yyyy-mm-dd')), 
partition part_03 values less than(maxvalue) ); --范围,列表分区
CREATE TABLE SALES
(PRODUCT_ID VARCHAR2(5),SALES_DATE DATE,SALES_COST NUMBER(10),STATUS VARCHAR2(20))
PARTITION BY RANGE(SALES_DATE) SUBPARTITION BY LIST (STATUS)
(
PARTITION P1 VALUES LESS THAN(TO_DATE('2003-01-01','YYYY-MM-DD'))TABLESPACE rptfact2009(SUBPARTITION P1SUB1 VALUES ('ACTIVE') TABLESPACE rptfact2009,SUBPARTITION P1SUB2 VALUES ('INACTIVE') TABLESPACE rptfact2009),PARTITION P2 VALUES LESS THAN (TO_DATE('2003-03-01','YYYY-MM-DD')) TABLESPACE rptfact2009
(SUBPARTITION P2SUB1 VALUES ('ACTIVE') TABLESPACE rptfact2009,SUBPARTITION P2SUB2 VALUES ('INACTIVE') TABLESPACE rptfact2009)
)--间隔-范围分区create table comp_part2 (
id number,name varchar2(32),age number,create_time date)
partition by range(create_time) interval (numtoyminterval(1, 'MONTH'))  -- 范围分区(间隔分区)
subpartition by range(age)     -- 子分区通过年龄进行划分
subpartition template    -- 定义子分区模板
(subpartition p_children    values less than (12),subpartition p_adolescent values less than (30),subpartition p_adult         values less than (60),subpartition p_elder         values less than (100)
)
(partition p1 values less than  (to_date('2023-02-01', 'yyyy-mm-dd')));

3.2 引用分区(Reference Partition) 了解

        引用分区是一种基于主-外键引用关系的分区策略,如果两张表上定义了外键引用,即两张表存在父-子关系(Parent-Child Realtionship),那么基于这种主键-外键引用关系,可以使子表继承主表的分区策略。

        引用分区特别适合在需要自动维护子表,或者两表频繁连接查询的场景,因为他们的分区策略是相同的,两表连接通常会被转换为分区连接(partition-wise join),大大缩小连接的结果集。

create table parent_table (id number primary key,name varchar2(32),create_time date)
partition by range(create_time)
interval (numtoyminterval(1, 'MONTH')) (
 partition p1 values less than  (to_date('2023-02-01', 'yyyy-mm-dd')));

create table child_table (id number primary key,parent_id number not null,  -- 定义外键的列要非空
sex varchar2(32),
constraint parent_id_fk foreign key (parent_id) references parent_table(id))  -- 定义外键约束
partition by reference (parent_id_fk);

4.分区操作

4.1 新增分区

        手动新增分区,不同的分区类型操作稍微有些不同。注意间隔分区和引用分区的分区都是自动创建的,因此它们无法手动新增分区。

        范围分区可以使用alter table … add partition 手动新增分区,注意仅可以在范围分区最大范围的上面新增分区,如果已经定义了最大值分区(maxvalue)或者想要在中间插入一个分区,则只可以使用分裂分区来完成

新增主分区:
alter table 表名 add partition 分区名[values less than(上限)]|[values(值)] [tablespace 表空间];

        哈希分区直接alter table … add partition 即可,你可以指定分区名,也可以不指定分区名,数据会重新在各分区中进行分布,可能需要一些时间:

--添加分区
ALTER  TABLE list_table ADD PARTITION par4 VALUES('湖北');

列表分区直接 alter table … add partition 新增一个分区定义:

 --添加散列分区
ALTER  TABLE hash_table1 ADD PARTITION par4;

新增子分区:
 语法:alter  table 表名 modify partition 主分区名 add subpartition 子分区名 [values less than(上限)]|[values(值)] [tablespace 表空间];
 --在主分区par1中添加一个子分区
 ALTER TABLE sales_t1 MODIFY PARTITION par1 ADD SUBPARTITION par1_sub4 VALUES('湖北');

4.2 删除分区

        使用 alter table … drop partition 可以删除指定的分区,对于范围分区、间隔分区,列表分区,直接指定要删除的分区名即可,间隔分区虽然无法显式新增分区,但是可以显式删除:

  • 1.散列分区不允许删除。
  • 2.删除某一个分区则分区中的数据也会被删除。
  • 3.删除分区的时候一张表中至少要留有一个分区,如果要删除表中的所有的分区,则直接drop表。

4.3 换分区

        置换分区指可以用一个非分区表与分区表的某个分区/子分区进行置换(数据段交换)。利用置换分区可以快速将数据载入或者移出分区表,且置换分区操作没有类型限制,所有的分区策略都可以使用此特性。

要置换分区,首先你要创建一个与分区表结构一样的非分区表,我们以前面的范围分区表members作为示例

  • select table_name, partition_name, tablespace_name from user_tab_partitions where table_name='MEMBERS';

        创建一个与members结构一样的表,并插入几条测试数据,我们计划置换members分区p2,但是第二条数据我们插入一条违反该分区规则(create_time <'2023-03-01')的数据。

create table mem_ext (
id number,
name varchar2(32),
create_time date);insert into mem_ext values (3, 'exchanged_data', date '2023-02-01');
insert into mem_ext values (4, 'exchanged_data', date '2023-03-01');
commit;

将mem_ext表与members表的p2分区进行置换:如果置换的分区中有不符合分区规则的数据(第二条),可以用 without validation 子句跳过数据验证(仅更新数据字典)。

alter table members exchange partition p2 with table mem_ext;    -- 由于预先插入违反分区规则的数据导致报错alter table members exchange partition p2 with table mem_ext without validation;

        我们可以在建表的时候开启行移动(row movement),或者手动打开,这样当分区键被更新且需要移动分区时,Oracle会自动将数据移动到正确的分区:

update members set create_time='2023-03-03 00:00:00' where id=3;  -- 更新分区键会导致切换分区,报错alter table members enable row movement;update members set create_time='2023-03-03 00:00:00' where id=3;  -- 分区键更新后,数据会被移动到正确的分区

4.4 合并分区

        利用 alter table 的 merge partition/subpartion 子句,你可以将两个分区合并成一个。合并分区仅适用于范围、间隔、列表分区类型,哈希和引用分区不适用。对于范围分区,你只能将相邻两个的分区进行合并,且只能合并到边界高的分区;合并分区时,建议带上update indexes来更新索引,或合并后重建

  • alter table 表名 merge partitions|subpartitions 分区1,分区2 into partition|subpartition 分区2;
  • alter table members merge partitions p1, p2 into partition p2 update indexes;

        间隔分区限制同范围分区,你也只能合并相邻的分区,而且合并还回会导致所有低于合并分区的间隔分区都转换为范围分区,合并分区的上沿就是范围分区和间隔分区的分界点,以下面的interval_part表示例,每月1个分区,我们插入数据让3、7、8,11月的间隔分区创建出来

create table interval_part (id number,name varchar2(32),create_time date)
partition by range(create_time)
interval (numtoyminterval(1, 'MONTH'))
(partition p1 values less than (to_date('2023-01-01', 'yyyy-mm-dd'))
);insert into interval_part values(1,'abc', date '2023-03-10');
insert into interval_part values(1,'abc', date '2023-07-10');
insert into interval_part values(1,'abc', date '2023-08-10');
insert into interval_part values(1,'abc', date '2023-11-10');
commit;
--可以看到我们插入数据触发的新建分区属于间隔分区(interval=YES):

select table_name, partition_name, interval from user_tab_partitions where table_name='INTERVAL_PART';

下面将相邻的7,8月分区进行合并(SYS_448, SYS_P449):

  • alter table interval_part merge partitions for (to_date('2023-07-10', 'yyyy-mm-dd')), for(to_date('2023-08-10', 'yyyy-mm-dd')) ;
  • select table_name, partition_name, interval from user_tab_partitions where table_name='INTERVAL_PART';

可以看到7,8月分区SYS_448, SYS_P449消失了,生成了一个新的分区SYS_P451,原先边界范围在合并分区之下的3月分区(SYS_P447)也被转换成了范围分区(interval=NO),而合并分区之上11月的分区(SYS_P450)依然是间隔分区(interval=YES)。

        列表分区由于分区之间没有顺序,因此你可以合并任意两个分区,合并后的分区包含两个分区的所有数据,

create table list_part (
id number,
name varchar2(32))
partition by list(name)
(
partition p1 values ('a', 'b'),
partition p2 values('c', 'd'),
partition p3 values('e', 'f')
);
select table_name, partition_name from user_tab_partitions where table_name='LIST_PART';alter table list_part merge partitions p1,p3 into partition p_merged;select table_name, partition_name from user_tab_partitions where table_name='LIST_PART';

4.5 拆分分区

        当某个分区过大时,你可能想要将它分裂成2个分区。拆分分区是合并分区的逆向操作,和合并分区的限制一样,分裂分区也仅适用于范围、间隔、列表分区类型,哈希和引用分区不适用。

        分裂范围分区,我们需要指定一个分裂点(包含在分区内),整个分区将以这个分裂点为边界拆分为2个分区,分裂点会作为第一个分区的上限(不包含),下面示例将范围分区p2拆分为p1和p2:

 alter table 表名 split partition 分区名 at(拆分上限)|values(值) into (partition 新分区名,partition 旧分区名)

  • alter table members split partition p2 at (to_date('2023-02-01', 'yyyy-mm-dd')) into (partition p1, partition p2) update indexes;

        分裂间隔分区和分裂范围分区类似,我们也需要指定一个分裂点。且分裂间隔分区和和合并间隔分区一样,也会导致所有低于被分裂分区上限的间隔分区都转换为范围分区,被分裂分区的上限即范围分区和间隔分区的分界点。我们将上面示例的最后一个间隔分区 - 11月的分区(SYS_P450)从11月15号分裂为2个分区:

select table_name, partition_name, interval from user_tab_partitions where table_name='INTERVAL_PART';alter table interval_part split partition for(date '2023-11-10') at (date '2023-11-15') update indexes;select table_name, partition_name, interval from user_tab_partitions where table_name='INTERVAL_PART';

分区SYS_P450分裂成了SYS_P467和SYS_P468,同时低于原分区上限的所有分区都会被转换为范围分区(interval=NO)。分裂列表分区,你需要指定需要分裂出去的值,这些指定的值会分配到第一个分区,原分区剩余的值会分配到第二个分区。

4.6 移动分区

        移动分区可以让你随意将某个分区移动其他表空间,这种情况通常用在需要将分区迁移到另一个存储设备上。同时也可以顺便对分区进行一些其他操作,例如压缩。所有类型的分区策略都支持移动分区。(降低水位)

  • alter table interval_part move partition p1 tablespace tbs1 update indexes compress;

移动分区实际是在新目的地新建一个分区,并将原分区删除(drop),即使目的地是相同的表空间也是如此。

4.7 截断分区

        需要彻底清除某个分区数据时,你可以用 alter table … truncate partition … 来彻底清除该分区的数据(所有分区策略都适用)

  • alter table interval_part truncate partition p2 update indexes;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/5179.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信息收集。

信息收集 接着使用cs进行信息收集 发现域内管理员账号。 然后查看pc信息&#xff0c; 查看进程。 发现域为god.org 尝试定位域控。 提权 使用cs的功能进行权限提权 成功获取管理员权限。 hash抓取 接着抓hash 成功抓到管理员账号、密码。 接着进行横向传递 成功获取AD和…

React的数据Mock实现

在前后端分类的开发模式下&#xff0c;前端可以在没有实际后端接口的支持下先进行接口数据的模拟&#xff0c;进行正常的业务功能开发 1. 常见的Mock方式 2. json-server实现Mock 实现步骤&#xff1a; 项目中安装json-server npm i -D json-server准备一个json文件 {"…

计算机毕业设计python基于django框架的网上拍卖系统

创新点&#xff1a;本系统采用英国式拍卖和荷兰式拍卖两种模式&#xff0c;英国式拍卖也叫升价拍卖。这是最普遍的一种拍卖方式。拍卖人设定一个底价&#xff0c;竞买人相继给出更高的价格&#xff0c;最终出价最高者胜出&#xff0c;并支付最高价。这种形式在电影中非常常见&a…

PHP源码_新ui潮乎盲盒_h5源码

运行截图 源码贡献 https://githubs.xyz/boot?app40 数据库部份表 -- -- 表的结构 la_box_mark --CREATE TABLE la_box_mark (id int(10) UNSIGNED NOT NULL,icon varchar(191) COLLATE utf8_unicode_ci DEFAULT ,bg_thumb varchar(191) COLLATE utf8_unicode_ci DEFAULT N…

react props传参

props是父子传参的常用方法。 一、主要功能 1.传参 定义&#xff1a;父级组件向子级组件传递参数。 2.验证数据类型格式 定义&#xff1a;可以指定父组件传递过来数据为指定类型。 3.设置默认值 定义&#xff1a;在参数未使用时&#xff0c;直接默认为指定值。 二、实例代…

c++详解栈和队列——及模拟实现stack——queue——例题

初来乍到&#xff0c;望大家点点赞&#xff0c;点点关注&#xff0c;谢谢各位看官老爷 个人主页 在c语言中我们已经模拟实现过栈和队列了&#xff0c;对其底层结构有了基本的认识 栈和队列的详讲 文章目录 目录 文章目录 前言 一、了解栈和队列是什么&#xff1f; ​编辑​编辑…

【信号与系统杂谈 - 1】为什么拉普拉斯变换有收敛域而傅里叶变换没有

这个问题是我在推导傅里叶变换的时移特性公式和拉普拉斯变换的延时特性公式时发现的&#xff08;即拉氏变换总是需要考虑收敛域的原因&#xff09; 援引知乎上的回答解释

【Linux系统编程】第十一弹---编辑器vim使用

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、vim的基本概念 2、vim的基本操作 3、vim插入模式命令集 4、vim正常(命令)模式命令集 5、vim末行模式命令集 6、vim操作…

支持向量机回归(概念+实例)

目录 前言 一、基本概念 1. 支持向量机回归的原理 2. 支持向量机回归的工作方式 3. 支持向量机回归的优缺点 4. 支持向量机回归的应用 二、实例 前言 支持向量机&#xff08;Support Vector Machine&#xff0c;SVM&#xff09;是一种强大的机器学习算法&#xff0c;最初…

数据结构与算法(Java版) | 详解十大经典排序算法之一:插入排序

接下来&#xff0c;我来给大家讲解第三种排序算法&#xff0c;即插入排序。 基本介绍 首先&#xff0c;我们来看下插入排序的基本介绍。 插入排序&#xff0c;其属内部排序法&#xff0c;是对于欲排序的元素以插入的方式来找寻该元素的适当位置&#xff0c;以便最终达到排序…

2024年十五届蓝桥杯省赛大学B组真题(Java完整版)

2024年十五届蓝桥杯省赛大学B组真题&#xff08;Java&#xff09; 前言&#xff1a; 赛后一直犹豫要不要对比赛进行复盘出个题解&#xff0c;拖到了现在&#xff0c;终于也是等到比赛结果出来&#xff0c;看到没有辜负个人期望成功取得省一&#xff0c;决定在国赛前对省赛进行…

根据txt文件绘制词云 -- python

根据一段文字绘制词云&#xff0c;我们有两种方法 &#xff0c;一种是登录专业的绘图网站http://yciyun.com/ 不过&#xff0c;貌似这个网站需要会员才可以体验&#xff0c;他只是给出了一些形状图案的词云&#xff0c;虽然看起来很精美&#xff0c;但是他不能让我们自己随意更…

第三节课,功能2:开发后端用户的管理接口5min(用户的查询/状态更改)【4】【9开始--本人】

一、代码任务 【录个屏】 二、写代码 2.1 代码文件位置 2.2 代码如下&#xff1a; 2.3 官方文档&#xff1a; 网址&#xff1a; 逻辑删除 | MyBatis-Plus (baomidou.com) 三、代码有bug&#xff0c;没有鉴权&#xff0c;表里添加一个字段。role 管理员 3.1 判断操作的人&am…

Slave SQL线程与PXB FTWRL死锁问题分析

1. 问题背景 2.27号凌晨生产环境MySQL备库在执行备份期间出现因FLUSH TABLES WITH READ LOCK未释放导致备库复制延时拉大&#xff0c;慢日志内看持锁接近25分钟未释放。 版本&#xff1a; MySQL 5.7.21PXB 2.4.18 慢查询日志&#xff1a; 备份脚本中的备份命令&#xff1a;…

spring boot 基础案例【3】构建RESTful API与单元测试

教程1 案例教程 案例仓库 在线编程 教程2 基础教程 教程仓库 在线编程 本案例所在的仓库 本案例所在的文档 进入正文 1.文件目录 1. Chapter21Application.java 地址&#xff1a;chapter2-1/src/main/java/com/didispace/chapter21/Chapter21Application.java package com.d…

Flink checkpoint 源码分析- Flink Checkpoint 触发流程分析

序言 最近因为工作需要在阅读flink checkpoint处理机制&#xff0c;学习的过程中记录下来&#xff0c;并分享给大家。也算是学习并记录。 目前公司使用的flink版本为1.11。因此以下的分析都是基于1.11版本来的。 在分享前可以简单对flink checkpoint机制做一个大致的了解。 …

人工智慧时代的引擎:揭开机器人核心零部件的奥秘

机器人核心零部件技术现状及趋势 工业机器人是我国制造业的“顶冠明珠”&#xff0c;在机器人核心零部件的研发制造上&#xff0c;我国在很多方面已经接近国际顶尖水平&#xff0c;但一些核心技术仍无法满足复杂高端领域应用需求&#xff0c;如精密减速器的传动精度与寿命间竞争…

深度学习的瓶颈是什么!

深度学习主要的瓶颈&#xff1a; 数据依赖与标注问题&#xff1a;深度学习模型通常需要大量的标注数据来进行训练。然而&#xff0c;获取大量的标注数据不仅成本高昂&#xff0c;而且在某些领域&#xff08;如医疗、金融等&#xff09;中可能难以获取足够的标注数据。此外&…

人脸识别开源算法库和开源数据库

目录 1. 人脸识别开源算法库 1.1 OpenCV人脸识别模块 1.2 Dlib人脸识别模块 1.3 SeetaFace6 1.4 DeepFace 1.5 InsightFace 2. 人脸识别开源数据库 2.1 CelebA 2.2 LFW 2.3 MegaFace 2.4 Glint360K 2.5 WebFace260M 人脸识别 (Face Recognition) 是一种基于人的面部…

无人机反制:雷达探测+信号干扰器技术详解

固定翼无人机、旋翼无人机等&#xff0c;可折叠式无机、DIY无人机等。黑飞&#xff0c;监管困难给航空业带来了诸多隐患&#xff1b;给恐怖袭击及间谍侦察带来新的方式、引发了各国地区政府的忧虑&#xff0c;在中国存在的问题更加严峻。 反无人飞行器防御系统(AUDS)&#xff0…