MongoDB进阶篇-索引(索引概述、索引的类型、索引相关操作、索引的使用)

文章目录

  • 1. 索引概述
  • 2. 索引的类型
    • 2.1 单字段索引
    • 2.2 复合索引
    • 2.3 其他索引
      • 2.3.1 地理空间索引(Geospatial Index)
      • 2.3.2 文本索引(Text Indexes)
      • 2.3.3 哈希索引(Hashed Indexes)
  • 3. 索引相关操作
    • 3.1 查看索引
    • 3.2 创建索引
      • 3.3.1 创建单字段索引
      • 3.3.2 创建复合索引
      • 3.3.3 创建文本索引
    • 3.4 移除索引
      • 3.4.1 移除指定索引
      • 3.4.2 移除所有索引
  • 4. 索引的使用
    • 4.1 执行计划
    • 4.2 执行计划中各个字段的含义
    • 4.3 stage字段的取值及含义
    • 4.4 覆盖查询

阅读本文前可以先阅读以下文章:

  • MongoDB快速入门(MongoDB简介、MongoDB的应用场景、MongoDB中的基本概念、MongoDB的数据类型、MongoDB的安装与部署、MongoDB的常用命令)
  • MongoDB的常用命令(数据库操作、集合操作、文档操作)

1. 索引概述

MongoDB 索引的官网文档:索引-MongoDB手册


索引支持在 MongoDB 中高效执行查询。如果没有索引,MongoDB 就必须扫描集合中的每个文档以返回查询结果。如果查询存在适当的索引,MongoDB 就可以使用该索引来限制其必须扫描的文档数

索引可提高查询性能,但添加索引会影响写入操作的性能。对于写入读取率高的集合,由于每次插入操作都必须同时更新所有索引,因此会带来较高的索引成本

MongoDB 索引使用 B-Tree 数据结构(MySQL 是 B+Tree)

2. 索引的类型

2.1 单字段索引

MongoDB 支持在文档的单个字段上创建用户定义的升序索引或降序索引,称为单字段索引(Single Field Index)

对于单个字段索引和排序操作,索引键的排序顺序(即升序或降序)并不重要,因为 MongoDB 可以在任何方向上遍历索引

2.2 复合索引

MongoDB 支持多个字段的自定义索引,即复合索引(Compound Index)

复合索引中列出的字段顺序具有重要意义。例如,如果复合索引由 { user_id: 1, score: -1 } 组成,则索引首先会按 user_id 正序排序,然后在每个 user_id 的值内,再按 score 倒序排序

2.3 其他索引

2.3.1 地理空间索引(Geospatial Index)

为了支持对地理空间坐标数据的有效查询,MongoDB 提供了两种特殊的索引:返回结果时使用平面几何的二维索引和返回结果时使用球面几何的二维球面索引

2.3.2 文本索引(Text Indexes)

文本索引的特点:

  • 分词:MongoDB 在创建文本索引时会对字段内容进行分词处理,将文本分解成单词或术语(tokens)
  • 权重:可以为不同的字段指定不同的权重,以便在搜索时影响文档的相关性得分
  • 停用词:MongoDB 会忽略某些常用词(如 “the”、“and” 等),这些词被称为停用词。MongoDB 有一个内置的停用词列表,也可以自定义停用词列表
  • 语言支持:MongoDB 的文本索引支持多种语言的分词和搜索

注意事项:

  • 文本索引不存储停止词和词干。这意味着它们不会影响索引的大小
  • 文本索引不能用于文本字段中的二进制数据
  • 文本索引不能用于数组字段中的字符串元素
  • $text 查询不能与 $$$ 运算符一起使用

2.3.3 哈希索引(Hashed Indexes)

为了支持基于散列的分片,MongoDB 提供了散列索引类型,它对字段值的散列进行索引。这些索引在其范围内的值分布更加随机,但只支持相等匹配,不支持基于范围的查询

3. 索引相关操作

3.1 查看索引

查看索引的语法

db.collection.getIndexes()

查看 comment 集合中所有的索引

db.collection.getIndexes()

查询结果如下

[ { v: 2, key: { _id: 1 }, name: '_id_' } ]

结果中显示的是默认的 _id_ 索引(MongoDB 在创建集合的过程中,会在 _id 字段上创建一个唯一的索引,默认名字为 _id_,该索引可防止插入两个具有相同 _id 值的文档)

  • _id 索引是唯一索引,因此 _id 值不能重复
  • 在分片集群中,通常使用 _id 作为片键

3.2 创建索引

创建索引的语法

db.collection.createIndex(keys, options)
参数名类型描述必需
keys文档指定索引的字段和索引类型。对于文本索引,字段类型应该设置为 "text"。可以指定单个字段或多个字段
options文档索引的额外选项。这是一个可选参数,可以包含多个字段

options 参数的详细说明:

选项类型描述默认值
background布尔是否在后台创建索引。如果为 true,MongoDB 将在后台创建索引,这样就不会阻塞其他数据库操作false
unique布尔是否创建唯一索引。如果为 true,则索引字段的值必须是唯一的false
name字符串索引的名称。如果未指定,MongoDB 会自动生成一个名称自动生成
partialFilterExpression文档指定部分索引的过滤条件。只有满足条件的文档才会包含在索引中
sparse布尔是否创建稀疏索引。如果为 true,则索引只包含具有指定字段的文档,忽略没有该字段的文档false
expireAfterSeconds整数对于具有日期类型的字段,指定文档在集合中的生存时间(TTL)
storageEngine文档指定索引的存储引擎配置使用默认存储引擎配置
weights文档对于文本索引,为索引中的每个字段指定权重。权重越高,字段在文本搜索中的相关性得分越高所有字段权重相等

3.3.1 创建单字段索引

对 user_id 字段建立单字段索引

db.comment.createIndex({ user_id: 1 });

再次查看 comment 集合中所有的索引

[
  { v: 2, key: { _id: 1 }, name: '_id_' },
  { v: 2, key: { user_id: 1 }, name: 'user_id_1' }
]

3.3.2 创建复合索引

对 user_id 和 nickname 建立复合(Compound)索引

db.comment.createIndex({ userid: 1, nickname: -1 });

再次查看 comment 集合中所有的索引

[
  { v: 2, key: { _id: 1 }, name: '_id_' },
  { v: 2, key: { user_id: 1 }, name: 'user_id_1' },
  {
    v: 2,
    key: { userid: 1, nickname: -1 },
    name: 'userid_1_nickname_-1'
  }
]

3.3.3 创建文本索引

对 content 字段建立单字段索引

db.comment.createIndex({ content: "text" });

3.4 移除索引

3.4.1 移除指定索引

db.collection.dropIndex(index);

删除 comment 集合中 user_id 字段上的升序索引

db.comment.dropIndex(
    { 
        user_id: 1 
    }
);

3.4.2 移除所有索引

db.collection.dropIndexes()

删除 comment 集合中的所有索引

db.comment.dropIndexes()

_id 的字段的索引是无法删除的,只能删除非 _id 字段的索引

4. 索引的使用

4.1 执行计划

分析查询性能(Analyze Query Performance)通常使用执行计划(Explain Plan)来查看查询的情况,如查询耗费的时间、是否基于索引查询等

db.collection.find(query,options).explain(options)
参数名类型描述必需
querydocument查询选择器,用于指定查询条件
optionsdocument可选的。用于修改查询的默认行为的各种选项,如排序、限制等
explainfunction用于获取查询执行计划的详细信息是(调用时)
explainOptionsdocument可选的。用于修改解释操作的默认行为的各种选项

每个参数的详细解释:

  • query: 这是一个文档,用于定义查询条件。它可以是简单的字段等值查询,也可以是复杂的条件组合,包括逻辑运算符和正则表达式
  • options: 这是一个文档,可以包含多个键,用于控制查询的行为。常见的选项包括:
    • sort: 排序条件
    • limit: 限制返回的文档数量
    • skip: 跳过文档的数量。
    • projection: 投影,用于指定返回的字段
  • explain: 这是一个函数,当你在查询后面调用它时,MongoDB 不会返回查询结果,而是返回查询执行计划的详细信息。这有助于理解查询是如何执行的,以及如何优化查询
  • explainOptions: 这是一个文档,用于控制解释操作的输出。例如,可以指定是否返回所有阶段的执行计划或者只返回获胜计划

根据 user_id 字段查询数据

db.comment.find({ user_id: "1003" }).explain();

MongoDB 返回的结果

{
  explainVersion: '1',
  queryPlanner: {
    namespace: 'test.comment',
    parsedQuery: {
      user_id: {
        '$eq': '1003'
      }
    },
    indexFilterSet: false,
    queryHash: 'B7F3AE51',
    planCacheKey: '8C1EE785',
    optimizationTimeMillis: 0,
    maxIndexedOrSolutionsReached: false,
    maxIndexedAndSolutionsReached: false,
    maxScansToExplodeReached: false,
    prunedSimilarIndexes: false,
    winningPlan: {
      isCached: false,
      stage: 'COLLSCAN',
      filter: {
        user_id: {
          '$eq': '1003'
        }
      },
      direction: 'forward'
    },
    rejectedPlans: []
  },
  command: {
    find: 'comment',
    filter: {
      user_id: '1003'
    },
    '$db': 'test'
  },
  serverInfo: {
    host: 'LAPTOP-G7HILK54',
    port: 27017,
    version: '8.0.3',
    gitVersion: '89d97f2744a2b9851ddfb51bdf22f687562d9b06'
  },
  serverParameters: {
    internalQueryFacetBufferSizeBytes: 104857600,
    internalQueryFacetMaxOutputDocSizeBytes: 104857600,
    internalLookupStageIntermediateDocumentMaxSizeBytes: 104857600,
    internalDocumentSourceGroupMaxMemoryBytes: 104857600,
    internalQueryMaxBlockingSortMemoryUsageBytes: 104857600,
    internalQueryProhibitBlockingMergeOnMongoS: 0,
    internalQueryMaxAddToSetBytes: 104857600,
    internalDocumentSourceSetWindowFieldsMaxMemoryBytes: 104857600,
    internalQueryFrameworkControl: 'trySbeRestricted',
    internalQueryPlannerIgnoreIndexWithCollationForRegex: 1
  },
  ok: 1
}

重点关注 winningPlan 中的 stage 字段(COLLSCAN 表示全盘扫描)

在这里插入图片描述

下面对 user_id 字段建立索引

db.comment.createIndex({ user_id: 1 });

再次查看执行计划

{
  explainVersion: '1',
  queryPlanner: {
    namespace: 'test.comment',
    parsedQuery: {
      user_id: {
        '$eq': '1003'
      }
    },
    indexFilterSet: false,
    queryHash: 'B7F3AE51',
    planCacheKey: '57E4C731',
    optimizationTimeMillis: 0,
    maxIndexedOrSolutionsReached: false,
    maxIndexedAndSolutionsReached: false,
    maxScansToExplodeReached: false,
    prunedSimilarIndexes: false,
    winningPlan: {
      isCached: false,
      stage: 'FETCH',
      inputStage: {
        stage: 'IXSCAN',
        keyPattern: {
          user_id: 1
        },
        indexName: 'user_id_1',
        isMultiKey: false,
        multiKeyPaths: {
          user_id: []
        },
        isUnique: false,
        isSparse: false,
        isPartial: false,
        indexVersion: 2,
        direction: 'forward',
        indexBounds: {
          user_id: [
            '["1003", "1003"]'
          ]
        }
      }
    },
    rejectedPlans: []
  },
  command: {
    find: 'comment',
    filter: {
      user_id: '1003'
    },
    '$db': 'test'
  },
  serverInfo: {
    host: 'LAPTOP-G7HILK54',
    port: 27017,
    version: '8.0.3',
    gitVersion: '89d97f2744a2b9851ddfb51bdf22f687562d9b06'
  },
  serverParameters: {
    internalQueryFacetBufferSizeBytes: 104857600,
    internalQueryFacetMaxOutputDocSizeBytes: 104857600,
    internalLookupStageIntermediateDocumentMaxSizeBytes: 104857600,
    internalDocumentSourceGroupMaxMemoryBytes: 104857600,
    internalQueryMaxBlockingSortMemoryUsageBytes: 104857600,
    internalQueryProhibitBlockingMergeOnMongoS: 0,
    internalQueryMaxAddToSetBytes: 104857600,
    internalDocumentSourceSetWindowFieldsMaxMemoryBytes: 104857600,
    internalQueryFrameworkControl: 'trySbeRestricted',
    internalQueryPlannerIgnoreIndexWithCollationForRegex: 1
  },
  ok: 1
}

可以发现,stage 字段已经变成了 FETCH,inputStage 属性里面的 stage 字段变成了 IXSCAN(基于索引的扫描)

在这里插入图片描述

4.2 执行计划中各个字段的含义

字段名描述
explainVersion解释输出的版本号。
queryPlanner查询计划器的详细信息。
namespace执行查询的命名空间(数据库和集合)。
parsedQuery解析后的查询条件。
indexFilterSet是否设置了索引过滤器。
queryHash查询的哈希值。
planCacheKey用于查询缓存的键。
optimizationTimeMillis查询优化所花费的时间(毫秒)。
maxIndexedOrSolutionsReached是否达到了索引 OR 解决方案的最大数量。
maxIndexedAndSolutionsReached是否达到了索引 AND 解决方案的最大数量。
maxScansToExplodeReached是否达到了索引爆炸扫描的最大数量。
prunedSimilarIndexes是否修剪了相似的索引。
winningPlan被选中的查询计划。
isCached是否从计划缓存中检索到计划。
stage查询执行的阶段。
inputStage当前阶段的输入阶段(用于嵌套阶段)。
keyPattern索引的键模式。
indexName索引的名称。
isMultiKey索引是否是多键索引。
multiKeyPaths包含多键路径的索引字段。
isUnique索引是否是唯一索引。
isSparse索引是否是稀疏索引。
isPartial索引是否是部分索引。
indexVersion索引的版本。
direction索引扫描的方向。
indexBounds索引扫描的边界。
rejectedPlans被拒绝的查询计划列表。
command执行的命令的详细信息。
serverInfo服务器信息,包括主机名、端口、版本等。
serverParameters影响查询执行的服务器参数。
ok命令是否成功执行的标志。

4.3 stage字段的取值及含义

阶段名称描述
COLLSCAN集合扫描,即全集合扫描,没有使用索引。
IXSCAN索引扫描,使用索引来查找文档。
FETCH获取阶段,用于检索索引扫描后找到的文档的其余字段。
SHARD_MERGE在分片集群中,合并来自不同分片的查询结果。
SORT排序阶段,对结果进行排序。
LIMIT限制阶段,限制返回的文档数量。
SKIP跳过阶段,跳过指定数量的文档。
IDHACK对于 _id 的查询,MongoDB 可以使用特殊的优化。
SHARDING_FILTER在分片集群中,用于过滤掉不属于当前查询的分片数据的阶段。
PROJECTION投影阶段,只返回文档中的特定字段。
TEXT文本搜索阶段,用于文本索引的搜索。
GEONEAR地理空间查询阶段,用于查找最接近某个点的文档。
GEOFILTER地理空间过滤阶段,用于过滤地理空间查询的结果。
COUNT计数阶段,用于 count 操作。
COUNT_SCAN使用索引进行计数扫描的阶段。
COUNT_SCAN_WITH_FILTER使用索引进行计数扫描,并且应用过滤器的阶段。
DISTINCT_SCAN用于 distinct 操作的索引扫描阶段。
SUBPLAN子计划阶段,用于处理复杂查询的一部分。
IXHASH使用散列索引的阶段。
FORCED_SCAN强制进行集合扫描,即使存在索引。
COVERED索引覆盖查询,所有需要的字段都在索引中,不需要回表查询。
EOF查询结束。

4.4 覆盖查询

当查询条件和查询的投影仅包含索引字段时,MongoDB 会直接从索引返回结果,而不扫描任何文档或将文档带入内存,这些覆盖的查询非常高效(类似于 MySQL 中的覆盖索引)


db.comment.find(
  { user_id: "1003" },
  { user_id: 1, _id: 0 }
).explain();

MongoDB 返回的结果

{
  explainVersion: '1',
  queryPlanner: {
    namespace: 'test.comment',
    parsedQuery: {
      user_id: {
        '$eq': '1003'
      }
    },
    indexFilterSet: false,
    queryHash: 'DC80EEEF',
    planCacheKey: 'B8237218',
    optimizationTimeMillis: 0,
    maxIndexedOrSolutionsReached: false,
    maxIndexedAndSolutionsReached: false,
    maxScansToExplodeReached: false,
    prunedSimilarIndexes: false,
    winningPlan: {
      isCached: false,
      stage: 'PROJECTION_COVERED',
      transformBy: {
        user_id: 1,
        _id: 0
      },
      inputStage: {
        stage: 'IXSCAN',
        keyPattern: {
          user_id: 1
        },
        indexName: 'user_id_1',
        isMultiKey: false,
        multiKeyPaths: {
          user_id: []
        },
        isUnique: false,
        isSparse: false,
        isPartial: false,
        indexVersion: 2,
        direction: 'forward',
        indexBounds: {
          user_id: [
            '["1003", "1003"]'
          ]
        }
      }
    },
    rejectedPlans: []
  },
  command: {
    find: 'comment',
    filter: {
      user_id: '1003'
    },
    projection: {
      user_id: 1,
      _id: 0
    },
    '$db': 'test'
  },
  serverInfo: {
    host: 'LAPTOP-G7HILK54',
    port: 27017,
    version: '8.0.3',
    gitVersion: '89d97f2744a2b9851ddfb51bdf22f687562d9b06'
  },
  serverParameters: {
    internalQueryFacetBufferSizeBytes: 104857600,
    internalQueryFacetMaxOutputDocSizeBytes: 104857600,
    internalLookupStageIntermediateDocumentMaxSizeBytes: 104857600,
    internalDocumentSourceGroupMaxMemoryBytes: 104857600,
    internalQueryMaxBlockingSortMemoryUsageBytes: 104857600,
    internalQueryProhibitBlockingMergeOnMongoS: 0,
    internalQueryMaxAddToSetBytes: 104857600,
    internalDocumentSourceSetWindowFieldsMaxMemoryBytes: 104857600,
    internalQueryFrameworkControl: 'trySbeRestricted',
    internalQueryPlannerIgnoreIndexWithCollationForRegex: 1
  },
  ok: 1
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

做一个FabricJS.cc的中文文档网站——面向markdown编程

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,用爱发电&#…

自动驾驶之激光雷达

这里写目录标题 1 什么是激光雷达2 激光雷达的关键参数3 激光雷达种类4 自动驾驶感知传感器5 激光雷达感知框架5.1 pointcloud_preprocess5.2 pointcloud_map_based_roi5.3 pointcloud_ground_detection5.4 lidar_detection5.5 lidar_detection_filter5.6 lidar_tracking 1 什么…

Label-studio-ml-backend 和YOLOV8 YOLO11自动化标注,目标检测,实例分割,图像分类,关键点估计,视频跟踪

这里写目录标题 1.目标检测 Detection2.实例分割 segment3.图像分类 classify4.关键点估计 Keypoint detection5.视频帧检测 video detect6.视频帧分类 video classify7.旋转目标检测 obb detect8.替换yolo11模型 给我点个赞吧,谢谢了附录coco80类名称 笔记本 华为m…

Laravel对接SLS日志服务

Laravel对接SLS日志服务&#xff08;写入和读取&#xff09; 1、下载阿里云的sdk #通过composer下载 composer require alibabacloud/aliyun-log-php-sdk#对应的git仓库 https://github.com/aliyun/aliyun-log-php-sdk2、创建sdk请求的service <?phpnamespace App\Ser…

uniapp接入高德地图

下面代码兼容安卓APP和H5 高德地图官网&#xff1a;我的应用 | 高德控制台 &#xff0c;绑定服务选择《Web端(JS API)》 /utils/map.js 需要设置你自己的key和安全密钥 export function myAMap() {return new Promise(function(resolve, reject) {if (typeof window.onLoadM…

初识WGCLOUD - 监测磁盘空间还能使用多久

WGCLOUD是一款免费开源的运维监控软件&#xff0c;性能优秀&#xff0c;部署简单&#xff0c;轻巧使用&#xff0c;支持大部分的Linux和Windows、安卓、MacOS等平台安装部署 最近发布的新版本 v3.5.4&#xff0c;WGCLOUD新增了可以自动计算每个磁盘剩余空间的可使用天数&#x…

【Xbim+C#】创建圆盘扫掠IfcSweptDiskSolid

基础回顾 https://blog.csdn.net/liqian_ken/article/details/143867404 https://blog.csdn.net/liqian_ken/article/details/114851319 效果图 代码示例 在前文基础上&#xff0c;增加一个工具方法&#xff1a; public static IfcProductDefinitionShape CreateDiskSolidSha…

数据结构 ——— 堆排序算法的实现

目录 前言 向下调整算法&#xff08;默认建大堆&#xff09; 堆排序算法的实现&#xff08;默认升序&#xff09; 前言 在之前几章学习了如何用向上调整算法和向下调整算法对数组进行建大/小堆数据结构 ——— 向上/向下调整算法将数组调整为升/降序_对数组进行降序排序代码…

图像预处理之图像滤波

目录 图像滤波概览 均值滤波&#xff08;Mean Filter&#xff09; 中值滤波&#xff08;Median Filter&#xff09; 高斯滤波&#xff08;Gaussian Filter&#xff09; 双边滤波&#xff08;Bilateral Filter&#xff09; 方框滤波&#xff08;Box Filter&#xff09; S…

Qt-多元素控件

Qt中的多元素控件 Qt提供的多元素控件有&#xff1a; 这里的多元素控件都是两两一对的。 xxWidget和xxView的一个比较简单的理解就是&#xff1a; xxView是更底层的实现&#xff0c; xxWidget是基于xxView封装来的。 可以说&#xff0c;xxView使用起来比较麻烦&#xff0c;但…

<Sqlite><websocket>使用Sqlite与websocket,实现网页端对数据库的【读写增删】操作

前言 本文是在websocket进行通讯的基础,添加数据库进行数据的存储,数据库软件使用的是sqlite。 环境配置 系统:windows 平台:visual studio code 语言:javascript、html 库:nodejs、sqlite 概述 此前,我们实现在利用websocket和socket,将网页端与下位控制器如PLC进行…

Unreal从入门到精通之如何绘制用于VR的3DUI交互的手柄射线

文章目录 前言实现方式MenuLaser实现步骤1.Laser和Cursor2.移植函数3.启动逻辑4.检测射线和UI的碰撞5.激活手柄射线6.更新手柄射线位置7.隐藏手柄射线8.添加手柄的Trigger监听完整节点如下:效果图前言 之前我写过一篇文章《Unreal5从入门到精通之如何在VR中使用3DUI》,其中讲…

主IP地址与从IP地址:深入解析与应用探讨

在互联网的浩瀚世界中&#xff0c;每台联网设备都需要一个独特的身份标识——IP地址。随着网络技术的不断发展&#xff0c;IP地址的角色日益重要&#xff0c;而“主IP地址”与“从IP地址”的概念也逐渐进入人们的视野。这两个术语虽然看似简单&#xff0c;实则蕴含着丰富的网络…

【Linux】文件IO的系统接口 | 文件标识符

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 主厨&#xff1a;邪王真眼 主厨的主页&#xff1a;Chef‘s blog 所属专栏&#xff1a;青果大战linux 总有光环在陨落&#xff0c;总有新星在闪烁 最近真的任务拉满了&…

时序论文23|ICML24谷歌开源零样本时序大模型TimesFM

论文标题&#xff1a;A DECODER - ONLY FOUNDATION MODEL FOR TIME - SERIES FORECASTING 论文链接&#xff1a;https://arxiv.org/abs/2310.10688 论文链接&#xff1a;https://github.com/google-research/timesfm 前言 谷歌这篇时间序列大模型很早之前就在关注&#xff…

OpenAI 助力数据分析中的模式识别与趋势预测

数据分析师的日常工作中&#xff0c;发现数据中的隐藏模式和预测未来趋势是非常重要的一环。借助 OpenAI 的强大语言模型&#xff08;如 GPT-4&#xff09;&#xff0c;我们可以轻松完成这些任务&#xff0c;无需深厚的编程基础&#xff0c;也能快速上手。 在本文中&#xff0…

基于深度学习的点云分割网络及点云分割数据集

点云分割是根据空间、几何和纹理等特征对点云进行划分&#xff0c;使得同一划分内的点云拥有相似的特征。点云的有效分割是许多应用的前提&#xff0c;例如在三维重建领域&#xff0c;需要对场景内的物体首先进行分类处理&#xff0c;然后才能进行后期的识别和重建。 传统的点…

快速图像识别:落叶植物叶片分类

1.背景意义 研究背景与意义 随着全球生态环境的变化&#xff0c;植物的多样性及其在生态系统中的重要性日益受到关注。植物叶片的分类不仅是植物学研究的基础&#xff0c;也是生态监测、农业管理和生物多样性保护的重要环节。传统的植物分类方法依赖于人工观察和专家知识&…

MySQL 没有数据闪回?看 zCloud 如何补齐MySQL数据恢复能力

ENMOTECH 上一篇文章为大家介绍了某金融科技企业通过 zCloud 多元数据库智能管理平台的告警中心“警警”有条地管理告警并进行敏捷处置的实践案例。本篇跟大家继续分享该案例客户如何利用 zCloud 备份恢复模块下的Binlog解析功能补齐 MySQL 数据恢复能力&#xff0c;让运维人员…

transformer.js(四): 模型接口介绍

前面的文章底层架构及性能优化指南介绍了transformer.js的架构和优化策略&#xff0c;在本文中&#xff0c;将详细介绍 transformer.js 的模型接口&#xff0c;帮助你了解如何在 JavaScript 环境中使用这些强大的工具。 推荐阅读 ansformer.js&#xff08;二&#xff09;&…