当前位置: 首页 > news >正文

Oracle 数据库执行计划的查看与分析技巧

目录

  • Oracle 数据库执行计划的查看与分析技巧
    • 一、什么是执行计划
    • 二、查看执行计划的方法
      • (一)使用 EXPLAIN PLAN 命令
      • (二)通过 SQL Developer 工具查看
      • (三)启用 AUTOTRACE 功能
    • 三、执行计划中的关键信息解读
      • (一)操作类型
        • 全表扫描(TABLE ACCESS FULL)
        • 索引扫描(INDEX SCAN)
        • 嵌套循环连接(NESTED LOOPS)
        • 哈希连接(HASH JOIN)
      • (二)执行顺序
      • (三)谓词信息
    • 四、分析执行计划的技巧
      • (一)关注高成本操作
      • (二)结合数据量与分布情况
      • (三)对比不同执行计划版本
    • 五、优化执行计划的案例
    • 总结

Oracle 数据库执行计划的查看与分析技巧

在 Oracle 数据库中,执行计划能够帮助我们深入了解 SQL 语句在数据库内部的执行细节,进而优化查询性能、提升系统效率。无论是数据库领域的新手,还是经验丰富的工程师,掌握执行计划的查看与分析方法都至关重要。

一、什么是执行计划

执行计划是 Oracle 数据库优化器为 SQL 语句生成的一种执行蓝图,它描述了数据库将如何检索数据以满足查询要求。简单来说,执行计划告诉我们 SQL 语句的各个步骤,例如通过哪些索引进行数据查找、表之间以何种连接方式关联、数据如何排序等操作的先后顺序。优化器会基于数据库对象的统计信息、SQL 语句的语法结构以及数据库的配置参数等因素,综合考量来生成它认为最优的执行计划。

二、查看执行计划的方法

(一)使用 EXPLAIN PLAN 命令

这是最基础、也是最常用的查看执行计划的方式之一。它的语法如下:

EXPLAIN PLAN FOR
<your_sql_statement>;SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

例如,我们有一个简单的查询语句,用于从员工表(employees)和部门表(departments)中检索特定部门的员工信息:

EXPLAIN PLAN FOR
SELECT e.employee_id, e.first_name, e.last_name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id
WHERE d.department_name = 'Sales';SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

执行上述代码后,第二句查询会以表格形式展示出详细的执行计划。其中包括各操作的 ID、操作名称(如 TABLE ACCESS FULL 表示全表扫描,INDEX RANGE SCAN 表示索引范围扫描等)、对象名称(涉及的表或索引)以及执行顺序等关键信息。

(二)通过 SQL Developer 工具查看

SQL Developer 是 Oracle 官方提供的一款功能强大的数据库开发工具。在使用它执行 SQL 语句时,可以方便地同时查看对应的执行计划。只需在执行 SQL 的窗口中,点击 “解释计划” 按钮(通常是一个带有放大镜和闪电标志的图标),工具就会在下方的面板中以可视化的树状结构展示执行计划。这种方式相较于命令行,更加直观,易于理解。各个节点展示了详细的操作信息,并且可以通过鼠标悬停查看更多细节,如谓词信息(WHERE 子句中的过滤条件)等。

(三)启用 AUTOTRACE 功能

在 SQL*Plus 环境下,我们可以启用 AUTOTRACE 来查看执行计划及相关的执行统计信息,如物理读、逻辑读、执行时间等。首先需要确保当前用户具有执行 AUTOTRACE 相关权限,并且数据库实例已正确配置。启用 AUTOTRACE 的命令如下:

SET AUTOTRACE ON;

之后执行 SQL 语句,例如:

SELECT * FROM customers WHERE customer_city = 'New York';

执行完 SQL 后,除了返回查询结果,还会输出执行计划的概要信息以及上述提到的统计信息。这对于快速评估 SQL 语句的性能开销非常有帮助。要关闭 AUTOTRACE 功能,使用:

SET AUTOTRACE OFF;

三、执行计划中的关键信息解读

(一)操作类型

全表扫描(TABLE ACCESS FULL)

这意味着数据库会读取表中的所有行来满足查询条件。当没有合适的索引可用,或者优化器认为全表扫描的成本更低时,会选择这种方式。例如,在一个数据量较小的表上进行没有过滤条件或过滤条件选择性很差的,全表扫描可能是最快的方法。但对于大表,全表扫描通常会导致大量的 I/O 操作,严重影响性能。

索引扫描(INDEX SCAN)

又分为索引唯一扫描(INDEX UNIQUE SCAN)、索引范围扫描(INDEX RANGE SCAN)等。索引唯一扫描用于查找具有唯一键值的行,比如通过主键查询单条记录。索引范围扫描则适用于基于某个范围条件的查询,如查询某个时间段内的数据,它会利用索引的有序性快速定位到符合条件的起始和结束位置,并扫描其间的索引条目。

嵌套循环连接(NESTED LOOPS)

这是一种常见的表连接方式,对于外部表的每一行,都会在内层表中查找匹配的行。它适用于连接条件选择性高、关联表数据量较小的场景。优点是能快速返回少量精确匹配的结果,但如果表数据量大,可能会产生大量的循环操作,性能急剧下降。

哈希连接(HASH JOIN)

先对一张表构建哈希表,然后利用哈希函数快速查找另一张表中匹配的行。通常在连接大数据集时表现较好,尤其是当两张表都比较大且没有合适索引的情况下,哈希连接能通过减少数据比较次数来提高连接效率。

(二)执行顺序

执行计划中的操作 ID 标识了各操作的执行顺序,通常是从缩进少的节点开始,逐步向缩进多的节点推进。数字越小,执行优先级越高。通过观察执行顺序,我们可以了解数据的流动方向,以及哪些操作是基础,哪些是后续基于前面结果的进一步处理。例如,先进行表的访问操作获取原始数据,然后可能进行过滤、连接等操作,最后进行排序或聚合等满足最终查询需求的步骤。

(三)谓词信息

谓词即 WHERE 子句中的过滤条件,在执行计划中会显示哪些谓词用于索引查找,哪些用于最终结果的过滤。如果某个谓词能够有效利用索引,说明该过滤条件具有较好的效果,可以快速缩小数据检索范围。反之,如果谓词只能在全表扫描后进行过滤,那可能需要考虑优化过滤条件或添加合适索引。例如,“WHERE column_name> 100 AND column_name < 200” 这样的范围谓词,若在索引列上,可能触发索引范围扫描;而 “WHERE function (column_name) = some_value”(函数作用于列上的条件),一般情况下会导致索引失效,引发全表扫描。

四、分析执行计划的技巧

(一)关注高成本操作

执行计划中的每个操作都有对应的成本估算,通常以 COST 值表示,包括 CPU 成本和 I/O 成本。重点关注成本较高的操作,这些往往是性能瓶颈所在。比如,当发现一个全表扫描操作的成本占比很大,且表数据量庞大时,就需要思考是否可以通过创建合适索引、优化查询条件等方式来改变执行计划,降低成本。可以通过对比不同优化方案下执行计划的成本变化,来评估优化效果。

(二)结合数据量与分布情况

了解表的实际数据量大小以及数据在索引列上的分布状况,对于准确分析执行计划至关重要。例如,一个索引在理论上看起来很完美,但如果表中的大部分数据在索引列上具有相同的值(数据倾斜),那么索引的选择性就会大打折扣,优化器可能会错误地选择使用这个低效的索引,导致性能问题。此时,可能需要考虑收集更准确的统计信息,或调整查询语句以适应数据分布特点,如增加额外的过滤条件来减少数据倾斜的影响。

(三)对比不同执行计划版本

在对 SQL 语句进行优化调整过程中,如修改索引、调整查询结构、更新数据库统计信息等操作后,重新查看并对比执行计划的变化。观察优化措施是否达到预期效果,新的执行计划中是否消除了高成本操作,数据检索路径是否更加合理。通过这种迭代式的对比分析,逐步逼近最优的查询性能。

五、优化执行计划的案例

假设我们有一个电商订单数据库,包含订单表(orders)、订单明细表(order_items)和产品表(products)。经常执行的查询是获取某个时间段内特定产品类别的订单总金额。初始查询语句如下:

SELECT p.product_category, SUM(oi.quantity * oi.unit_price) AS total_amount
FROM orders o
JOIN order_items oi ON o.order_id = oi.order_id
JOIN products p ON oi.product_id = p.product_id
WHERE o.order_date BETWEEN '2024-01-01' AND '2023-01-31'
AND p.product_category = 'Electronics'
GROUP BY p.product_category;

使用 EXPLAIN PLAN 查看执行计划后,发现存在以下问题:
对订单表(orders)进行了全表扫描,因为 order_date 列没有合适索引,导致大量不必要的 I/O 操作,查询效率低下。
在连接操作中,由于表之间的连接条件选择性不是特别高,且没有充分利用索引,嵌套循环连接的成本较高。
优化方案:
在订单表的 order_date 列上创建索引:

CREATE INDEX idx_order_date ON orders(order_date);

分析产品表(products)上 product_category 列的数据分布,发现该列数据存在一定倾斜,部分类别数据量远大于其他类别。考虑收集更精确的统计信息:

BEGINDBMS_STATS.GATHER_TABLE_STATS(ownname => 'your_schema', tabname => 'products');
END;

重新执行查询并查看执行计划,发现订单表改为使用索引范围扫描,大大减少了数据读取量;连接操作也因为统计信息的更新,优化器选择了更合适的哈希连接方式,整体查询性能提升了数倍,执行时间从原来的几十秒缩短到几秒。

总结

Oracle 数据库执行计划的查看与分析是数据库优化工作中的核心技能。通过熟练掌握多种查看执行计划的方法,深入解读其中的关键信息,并运用有效的分析技巧,我们能够精准定位 SQL 语句的性能问题,采取针对性的优化措施。从创建合适索引、优化查询语句结构,到确保准确的统计信息,每一个环节都可能成为提升数据库性能的关键。持续实践与经验积累,将帮助我们在面对复杂的数据库环境时,游刃有余地优化查询性能,保障系统高效稳定运行。

相关文章:

Oracle 数据库执行计划的查看与分析技巧

目录 Oracle 数据库执行计划的查看与分析技巧一、什么是执行计划二、查看执行计划的方法&#xff08;一&#xff09;使用 EXPLAIN PLAN 命令&#xff08;二&#xff09;通过 SQL Developer 工具查看&#xff08;三&#xff09;启用 AUTOTRACE 功能 三、执行计划中的关键信息解读…...

VMD-SSA-BiLSTM、VMD-BiLSTM、BiLSTM时间序列预测对比

VMD-SSA-BiLSTM、VMD-BiLSTM、BiLSTM时间序列预测对比 目录 VMD-SSA-BiLSTM、VMD-BiLSTM、BiLSTM时间序列预测对比预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.MATLAB实现VMD-SSA-BiLSTM、VMD-BiLSTM、BiLSTM时间序列预测对比; 2.单变量时间序列预测 就是先vmd把变…...

QGIS二次开发(地图符号库操作)

实习三 地图符号库操作 3.1 任务要求 基于QGIS&#xff0c;实现地图符号的设计/存储与显示&#xff1b;基于QGIS实现一个点、线、面shp矢量图层文件的显示。通过设置引用的符号&#xff0c;改变矢量图层的显示效果&#xff1b;可编辑地图的符号库汇中的点符号、线符号、面符号…...

wordpress网站用token登入开发过程

生成跳转token 示例&#xff1a; function generate_login_token($user_id, $secret_key) {$payload [user_id > $user_id,timestamp > time(),];$payload_json json_encode($payload);$signature hash_hmac(sha256, $payload_json, $secret_key);return base64_en…...

Uniapp在浏览器拉起导航

Uniapp在浏览器拉起导航 最近涉及到要在浏览器中拉起导航&#xff0c;对目标点进行路线规划等功能&#xff0c;踩了一些坑&#xff0c;找到了使用方法。&#xff08;浏览器拉起&#xff09; 效果展示 可以拉起三大平台及苹果导航 点击选中某个导航&#xff0c;会携带经纬度跳转…...

在 CentOS 上安装 FFmpeg

在CentOS 上安装 FFmpeg 方法一&#xff1a;在线安装 添加 EPEL 和 RPM Fusion 源&#xff1a; sudo yum install epel-release sudo yum install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm安装 FFmpeg&#xff1a; sudo yu…...

影刀进阶指令 | liblib反推 (SD AI绘图反推)

文章目录 影刀进阶指令 | liblib反推 (SD AI绘图反推)一. 需求二. 流程三. 实现3.1 流程概览3.2 流程步骤讲解1\. 获取png地址2\. 打开页面3\. 上传png文件4\. 获取png的prompt信息 四. 运维 影刀进阶指令 | liblib反推 (SD AI绘图反推) 先看看我们要实现的功能&#xff0c;li…...

WebStorm 创建一个Vue项目

一、下载并安装WebStorm 步骤一 步骤二 选择激活方式 激活码&#xff1a; I2A0QUY8VU-eyJsaWNlbnNlSWQiOiJJMkEwUVVZOFZVIiwibGljZW5zZWVOYW1lIjoiVU5JVkVSU0lEQURFIEVTVEFEVUFMIERFIENBTVBJTkFTIiwiYXNzaWduZWVOYW1lIjoiVGFvYmFv77yaSkVU5YWo5a625qG25rAIOa0uW3peS9nOWupC…...

回归预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络多输入单输出回归预测

回归预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现CNN-LSTM卷积长短期记忆神经网络多输入单输出回归…...

rust windwos 两个edit框

use winapi::shared::minwindef::LOWORD; use windows::{core::*,Win32::{Foundation::*,Graphics::Gdi::{BeginPaint, EndPaint, PAINTSTRUCT},System::LibraryLoader::GetModuleHandleA,UI::WindowsAndMessaging::*,}, };// 两个全局静态变量&#xff0c;用于保存 Edit 控件的…...

ArcGIS计算矢量要素集中每一个面的遥感影像平均值、最大值等统计指标

本文介绍在ArcMap软件中&#xff0c;基于矢量面要素集&#xff0c;计算在其中每一个面区域内&#xff0c;遥感影像的像元个数、平均值、总和等统计值&#xff0c;并将统计信息附加到矢量图层的属性表中的方法。 首先&#xff0c;明确一下本文的需求。现在有一个矢量面要素集&am…...

JavaScript高级程序设计基础(十一)

上接语言基础&#xff1a;JavaScript高级程序设计基础&#xff08;十) 五、集合引用类型 5.1 object 此处简单介绍object&#xff0c;object由两种方式可以创造&#xff1a;由构造函数new Object(),或者对象字面量。如果想要修改对象的值可以用点语法&#xff0c;如object.na…...

【服务器学习专栏 1.2 -- 带外管理】

请阅读 嵌入式学习必备专栏 文章目录 Overview服务器带外管理BMC 介绍BMC 特点BMC 工作原理 Overview 从技术的角度&#xff0c;网络管理可分为带外管理&#xff08;out-of-band&#xff09;和带内管理&#xff08;in-band&#xff09;两种管理模式。 带内管理&#xff0c;是指…...

《Vue3 二》Vue 的模板语法

在 React 中&#xff0c;想要编写 HTML&#xff0c;是使用 JSX&#xff0c;之后通过 Babel 将 JSX 编译成 React.createElement 函数调用&#xff1b;在 Vue 中&#xff0c;也支持 JSX 的开发模式&#xff0c;但大多数情况下都是使用基于 HTML 的模板语法&#xff0c;在模板中允…...

手机租赁平台开发全攻略打造高效便捷的租赁服务系统

内容概要 手机租赁平台开发&#xff0c;简单说就是让用户能轻松租赁各类手机的高效系统。这一平台不仅帮助那些想要临时使用高端手机的人们节省了不少资金&#xff0c;还为商家开辟了新的收入渠道。随着智能手机的普及&#xff0c;很多人并不需要长期拥有一部手机&#xff0c;…...

【Ext.js 初步入门】Ext.js 作用以及用法 概述

一、Ext.js的作用 首先我们需要了解类似Ext.js以及easyui类似产品的作用是什么。 我的理解是就是相当于一个组件库&#xff0c;它与bootstrap类似产品的区别在于&#xff0c;bootstrap与ext.js和easyui面向的问题不同&#xff0c;bootstrap面向的问题样式&#xff0c;ext.js和…...

基于源码剖析:深度解读JVM底层运行机制

每日禅语 佛说&#xff0c;给你修路的&#xff0c;是你自己&#xff1b;埋葬你的&#xff0c;也是你自己&#xff1b;帮助你的&#xff0c;是你自己&#xff1b;毁灭你的&#xff0c;也是你自己&#xff1b;成就你的&#xff0c;自然还是你自己。所以佛说&#xff1a;自作自受&…...

redis延迟队列

Redis延迟队列 Redis延迟队列是基于Redis构建的消息队列&#xff0c;用来处理需延迟执行的任务。 基本原理 它借助Redis的有序集合&#xff08;Sorted Set&#xff09;数据结构达成目的。会把任务及其执行时间分别当成成员与分值存进有序集合&#xff0c;由于执行时间作为分值&…...

GDPU Vue前端框架开发 期末赛道出勇士篇(更新ing)

记住&#xff0c;年底陪你跨年的不会仅是方便面跟你的闺蜜&#xff0c;还有孑的笔记。 选择题 1.下列选项用于设置Vue.js页面视图的元素是&#xff08;&#xff09;。 A. Template B. script C. style D. title 2.下列选项中能够定义Vuejs根实例对象的元素是&#xff08;&…...

WordPress TutorLMS插件 SQL注入漏洞复现(CVE-2024-10400)(附脚本)

0x01 产品描述: ‌Tutor LMS‌是一个功能强大的...

小程序配置文件 —— 14 全局配置 - tabbar配置

全局配置 - tabBar配置 tabBar 字段&#xff1a;定义小程序顶部、底部 tab 栏&#xff0c;用以实现页面之间的快速切换&#xff1b;可以通过 tabBar 配置项指定 tab 栏的表现&#xff0c;以及 tab 切换时显示的对应页面&#xff1b; 在上面图中&#xff0c;标注了一些 tabBar …...

基于python+Django+mysql文档格式转换工具系统设计与实现

博主介绍&#xff1a;黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者&#xff0c;CSDN博客专家&#xff0c;在线教育专家&#xff0c;CSDN钻石讲师&#xff1b;专注大学生毕业设计教育、辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…...

异步线程池中,ThreadPoolTaskExecutor和ThreadPoolExecutor有什么区别?

异步线程池中&#xff0c;org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor和java.util.concurrent.ThreadPoolExecutor有什么区别&#xff1f; org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor 和 java.util.concurrent.ThreadPoolExec…...

【机器学习】SVM支持向量机(二)

介绍 支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一种监督学习模型&#xff0c;广泛应用于分类和回归分析。SVM 的核心思想是通过找到一个最优的超平面来划分不同类别的数据点&#xff0c;并且尽可能地最大化离该超平面最近的数据点&#xff08;支持向量…...

基于NodeMCU的物联网电灯控制系统设计

最终效果 基于NodeMCU的物联网电灯控制系统设计 小程序关灯 上图展现了小程序关灯过程的数据传输过程&#xff1a;用户下达关灯指令→小程序下发关灯指令→MQTT服务器接收关灯指令→下位机接收与处理关灯指令。 项目介绍 该项目是“物联网实验室监测控制系统设计&#xff08;…...

源码安装redis后配置redis开机自启动

initd风格 #!/bin/sh ### BEGIN INIT INFO # Provides: redis # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/stop Redis server ### END…...

WebRTC服务质量(11)- Pacer机制(03) IntervalBudget

WebRTC服务质量&#xff08;01&#xff09;- Qos概述 WebRTC服务质量&#xff08;02&#xff09;- RTP协议 WebRTC服务质量&#xff08;03&#xff09;- RTCP协议 WebRTC服务质量&#xff08;04&#xff09;- 重传机制&#xff08;01) RTX NACK概述 WebRTC服务质量&#xff08;…...

22.跳过报错(最简) C#例子

这是一个跳过报错的例子&#xff0c;如果代码出错了会自动跳过&#xff0c;代码正确了就正常执行。 然而这不是一种推荐的做法&#xff0c;正确的做法应该是使用bool类型的值去检测代码运行结果&#xff0c;然后分支判断&#xff0c;在代码内部解决错误。 这只是一种好玩的做…...

windows 本地node版本快速升级

文章目录 前言一、前置条件二、使用步骤1.查看node 安装位置2.下载指定的node 版本3.下载后进行解压缩4. 删除覆盖原来的node文件夹内容5. 验证 总结 前言 Node.js 是一个开源、跨平台的JavaScript运行时环境&#xff0c;它允许开发者在服务器端运行JavaScript代码。Node.js 基…...

windows安装mongodb

一.安装包准备 1.服务端下载 https://www.mongodb.com/try/download/communitya 按需选择&#xff0c;我们这里选择社区版 直接点download浏览器下载可能比较慢&#xff0c;可以尝试copy link后用三方下载软件&#xff0c;会快很多。 2.命令行客户端下载 https://www.mong…...

一文读懂混合专家模型(MoE)

一文读懂混合专家模型&#xff08;MoE&#xff09; 概述 混合专家模型&#xff08;Mixture of Experts&#xff0c;MoE&#xff09;是一种机器学习和深度学习中的模型架构&#xff0c;它通过多个“专家”子模型来处理不同类型的输入数据或任务。在MoE模型中&#xff0c;输入数…...

自然语言处理(NLP)中的事件检测和事件抽取

事件检测和事件抽取是自然语言处理&#xff08;NLP&#xff09;中的两个重要任务&#xff0c;主要用于从文本中识别和提取事件及其相关信息。这两个任务在信息检索、情报分析、新闻摘要等应用中具有重要意义。 事件检测&#xff08;Event Detection&#xff09; 事件检测的目…...

深度学习:基于MindSpore NLP的数据并行训练

什么是数据并行&#xff1f; 数据并行&#xff08;Data Parallelism, DP&#xff09;的核心思想是将大规模的数据集分割成若干个较小的数据子集&#xff0c;并将这些子集分配到不同的 NPU 计算节点上&#xff0c;每个节点运行相同的模型副本&#xff0c;但处理不同的数据子集。…...

unity NAudio 获取电脑是否静音

测试&#xff0c;这两个办法都可以 打包出来也可以hu 想获取电脑是否静音出现编辑器模式下正常 打包出来失败 需要把 Api Compatibility Level改成.NET 4.x...

SemiDrive E3 MCAL 开发系列(6)– Icu 模块的使用

一、 概述 本文将会介绍 SemiDrive E3 MCAL Icu 模块的简介以及基本配置&#xff0c;其中还会涉及到 Xtrg 模块的配置。此外会结合实际操作的介绍&#xff0c;帮助新手快速了解并掌握这个模块的使用&#xff0c;文中的 MCAL 是基于 PTG3.0 的版本&#xff0c;开发板是官方的 …...

leetCode322.零钱兑换

题目&#xff1a; 给你一个整数数组coins,表示不同面额的硬币&#xff1b;以及一个整数amount,表示总金额。 计算并返回可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额&#xff0c;返回-1。 你可以认为每种硬币的数量是无限的。 示例1&#xff1…...

【Python】什么是元组(Tuple)?

什么是元组&#xff08;Tuple&#xff09;&#xff1f; 元组&#xff08;Tuple&#xff09;是 Python 中的一种 不可变 的数据结构&#xff0c;用于存储多个元素。它类似于列表&#xff08;List&#xff09;&#xff0c;但与列表不同的是&#xff0c;元组一旦创建&#xff0c;…...

zentao ubuntu上安装

#下载ZenTaoPMS-21.2-zbox_amd64.tar.gz&#xff08;https://www.zentao.net/downloads.html&#xff09; https://dl.zentao.net/zentao/21.2/ZenTaoPMS-21.2-zbox_amd64.tar.gzcd /opt tar -zxvf ZenTaoPMS-21.2-zbox_amd64.tar.gz#启动 /opt/zbox/zbox start /opt/zbox/zbox…...

文档解析丨高效准确的PDF解析工具,赋能企业非结构化数据治理

在数据为王的时代浪潮中&#xff0c;企业数据治理已成为组织优化运营、提高竞争力的关键。随着数字化进程的加速&#xff0c;企业所积累的数据量呈爆炸式增长&#xff0c;数据类型也愈发多样化&#xff0c;这些数据构成了现代企业数据资产的重要组成部分。 然而&#xff0c;传…...

Unity 实现Canvas显示3D物体

新建一个UI相机&#xff0c;选择渲染层为UI 将主相机的渲染层去掉UI层 、 将Canvas的RenderMode设置为Screen Space - Camera,将RenderCamera设置为UI相机 新建3D物体的UI父物体&#xff0c;并将3D物体的层级设置为UI层 适当的放缩3DObjParent&#xff0c;让3D物体能显示出来…...

OpenAI 12天发布会:AI革命的里程碑@附35页PDF文件下载

在人工智能的浪潮中&#xff0c;OpenAI的12天发布会无疑是2024年科技界的一场盛宴。从12月5日开始&#xff0c;OpenAI连续12天每天发布一个新应用或功能&#xff0c;标志着AI技术的又一次飞跃。本文将梳理这些激动人心的发布&#xff0c;带你一探究竟。 OpenAI发布会概览 Ope…...

cellphoneDB进行CCI以及可视化

除了cellchat&#xff0c;在单细胞转录组或者空间组的分析中&#xff0c;cellphoneDB也是一个常用的细胞通讯软件&#xff0c;这个数据库更注重配受体关系&#xff0c;对于有明确先验知识的配受体研究比较友好。 但值得注意的是&#xff0c;它的数据库只包括人的基因名称信息&…...

Facebook 上的社群文化:连接与共享

随着社交媒体的普及&#xff0c;Facebook作为全球最大的社交平台之一&#xff0c;不仅改变了人们的沟通方式&#xff0c;还塑造了独特的社群文化。在Facebook上&#xff0c;用户可以轻松地与朋友、家人保持联系&#xff0c;同时也能加入兴趣相投的群组、参与讨论和共享内容。社…...

数据库的概念和操作

目录 1、数据库的概念和操作 1.1 物理数据库 1. SQL SERVER 2014的三种文件类型 2. 数据库文件组 1.2 逻辑数据库 2、数据库的操作 2.1 T-SQL的语法格式 2.2 创建数据库 2.3 修改数据库 2.4 删除数据库 3、数据库的附加和分离 1、数据库的概念和操作 1.1 物理数据库…...

word运行时错误‘-2147221164(80040154)’ 没有注册类的解决办法

目录 问题描述解决方案 问题描述 解决方案 打开C盘找到路径C:\Users\Administrator\AppData\Roaming\Microsoft\Word\STARTUP或者在everything中搜索“Microsoft\Word\STARTUP”删除NEWebWordAddin.dotm文件即可正确打开word。...

Oracle数据库高级应用与优化策略

Oracle数据库高级应用与优化策略 在数据驱动的时代,Oracle数据库作为企业级数据库管理的佼佼者,以其强大的数据处理能力、高可用性和安全性,在众多行业领域中扮演着不可或缺的角色。本文旨在深入探讨Oracle数据库的高级应用与优化策略,通过具体代码使用案例,帮助开发者和…...

笔记:使用python对飞书用户活跃度统计的一个尝试

说明 一个python练习 代码 import json import time import openpyxl from openpyxl import load_workbook from datetime import datetime, timedelta import lark_oapi as lark from lark_oapi.api.admin.v1 import *def data_r(start_date, end_date):r_data []client la…...

讲解substr函数

substr JavaScript 中的 substr语法示例注意 PHP 中的 substr语法示例 Python 中的等价方法语法示例 其他语言Java 补充 substr 是编程中用于截取字符串的一个方法或函数&#xff0c;其功能是从一个字符串中提取出一部分子字符串。不同的编程语言中&#xff0c;这个功能的实现方…...

宏任务和微任务的区别

在 JavaScript 的异步编程模型中&#xff0c;宏任务&#xff08;Macro Task&#xff09;和微任务&#xff08;Micro Task&#xff09;是事件循环&#xff08;Event Loop&#xff09;机制中的两个重要概念。它们用于管理异步操作的执行顺序。 1. 宏任务 (Macro Task) 宏任务是较…...

设计模式介绍

设计模式是软件开发中常见问题的经典解决方案。它们是经过验证的、可重用的设计经验&#xff0c;可以帮助程序员构建可维护、可扩展和可靠的对象导向软件。 设计模式通常分为三大类&#xff1a;创建型、结构型和行为型。以下是每种类型中一些常见的设计模式&#xff0c…...