达梦sql执行计划、HINT、索引简单应用

目录

收集统计信息. 3

1. 通过DBMS_STATS包中的方法. 3

2、删除指定表的统计信息. 3

执行计划. 3

常用执行计划操作符. 4

统计指定sql执行号的所有操作符的执行时间. 5

HINT 5

并行操作:. 6

查询计划重用、结果集重用. 7

示例. 8

1、收集统计信息:. 8

3、对sql搜集统计信息. 9

2、添加索引. 9

使用优化器提示HINT:. 10

索引. 12

创建索引. 12

管理索引. 13

创建全局非分区索引. 14

创建全局分区索引. 14

创建局部索引. 15

创建聚集索引. 15

创建唯一索引. 15

索引查询. 16

重建索引. 16

删除索引. 16

查看索引信息. 16

数据库优化3个方面:

1、统计信息收集:统计信息准确,优化器选择执行计划才能真正做到最优。

2、建立合适的索引

3、DM.ini参数的优化

其他的:增加HINT,SQL改写等

收集统计信息

查看有没有收集统计信息:

select NUM_ROWS,LAST_ANALYZED,TEMPORARY from USER_TABLES where TABLE_NAME='EMP';

NUM_ROWS字段,如果没有收集通常是空

LAST_ANALYZED 代表收集的时间,如果没有收集这个字段也是空

TEMPORARY字段附带说明,N表示不是临时表临时表不需要收集

手动收集有三种可选方式

1. 通过DBMS_STATS包中的方法

(GATHER_TABLE_STATS、GATHER_INDEX_STATS 或 GATHER_SCHEMA_STATS)

DBMS_STATS.GATHER_TABLE_STATS('SYSDBA','EMP',null,100,TRUE,'FOR ALL COLUMNS SIZE AUTO');

用户、表、不是分区表名填写NULL默认也是NULL区分大小写、采样百分比、保留参数默认写TRUE、控制列的统计信息集合和直方图的创建的格式默认填写FOR ALL COLUMNS SIZE AUTO表示所有列收集

或者:效果一样

SP_TAB_STAT_INIT ('SYSDBA','EMP');

2、删除指定表的统计信息

SP_TAB_STAT_DEINIT ('SYSDBA', 'DEPT');

执行计划

explain select * from emp;

1、缩进越深的越先执行。

2、同样缩进的上面的先执行,下面的后执行。

3、上下的优先级高于内外。

 

常用执行计划操作符

CSCN2:聚集索引全表扫描

SSCN:直接使用二级索引进行扫描

SSEK2:二级索引定位

CSEK2:聚集索引数据定位

BLKUP:二次回表

DISTINCT:除重

SLCT2:查询条件过滤操作符

DSCN:动态视图表扫描

ESCN:外部表扫描

SORT2:排序

STAT:统计信息计算

PRJT2:关系的投影(project) 运算,用于选择表达式项的计算

PRJT2:投影运算,选择表达式的计算

exp_num:映射列数

is_atom:是否要求单行数据

NSET2 表示收集结果集的操作符

表连接:

HASH JOIN:HASH链接 --大表和大表关联

NEST LOOP JOIN:嵌套循环连接 --小表和大表关联

MERGE JOIN:MERGE链接

执行顺序方式(1-2-3-5 - 4-6 - 7-8-9): --有分支的上下优先级最高

e1表二级索引扫描,e表全表扫描,e1根据索引二次回表查询,嵌套循环连接(e和e1都是小表)组成新的表

d表二级索引扫描,d表根据索引二次回表查询,前两个表(e和e1)组成的小表再与d表嵌套循环

返回结果

统计指定sql执行号的所有操作符的执行时间

需要ini参数:ENABLE_MONITOR=1、MONITOR_TIME=1 和 MONITOR_SQL_EXEC=1

MONITOR_SQL_EXEC为会话级动态参数,可以设置只针对当前会话开启,不建议参数级别开启。

select SF_GET_PARA_VALUE(1,'MONITOR_SQL_EXEC');

SP_SET_PARA_VALUE(1,'MONITOR_SQL_EXEC',1);

SF_SET_SESSION_PARA_VALUE('MONITOR_SQL_EXEC',1);

SP_SET_PARA_VALUE(1,'ENABLE_MONITOR',1);

SP_SET_PARA_VALUE(1,'MONITOR_TIME',1);

ET( id_in bigint )

id_in sql执行后产生的执行号

HINT

DBA 对于数据分布是很清楚的,知道SQL语句按照哪种方法执行会最快。

在这种情况下,DBA 可以主动进行人工干预,指示优化器按照指定的方法去选择 SQL的执行计划。

人工干预优化器的方法称为 HINT。

它使优化器根据 DBA 的 HINT 提示来生成指定的执行计划。

如果优化器无法生成相应的执行计划,该 HINT 将会被忽略。

1)Hint格式

/*+ <具体的Hint内容> */

2)Hint在SQL中必须紧跟关键字SELECT、INSERT、UPDATE、DELETE或MERGE之后

{SELECT | INSERT | UPDATE | DELETE | MERGE} /*+ <具体的Hint内容> */

3)Hint中第一个星号(*)和加号(+)之间不能有空格

4)Hint中加号(+)和具体的Hint内容之间可以有空格,也可以没有空格,但通常都有空格。

5)Hint中的具体内容可以是单个Hint,也可以是多个Hint的组合,各个Hint间至少需要1个空格来彼此分隔。

6)Hint中指定具体对象时(比如指定表名或者索引名),不能带上该对象所在SCHEMA的名称,即使该SQL文本中已经有对应的SCHEMA名称。

explain select /*+ NO_INDEX(emp,EMP_IDX) */ * from sysdba.emp where EMPLOYEE_ID=100;

 

7)Hint中指定具体表名时,如果该表在对应SQL文本中有别名(alias),则应该使用该表的别名。

explain select /*+ NO_INDEX(e,EMP_IDX) */ * from emp e where e.EMPLOYEE_ID=100;

 

支持使用 HINT 的 INI 参数可通过 V$HINT_INI_INFO 动态视图查询。

select * from v$hint_ini_info where para_name='ENABLE_HASH_JOIN';

并行操作:

SELECT /*+ PARALLEL(emp 4) */ * FROM emp;

或者:多个重复hint以最后一个为准

SELECT /*+ PARALLEL(1) *//*+ PARALLEL(2) */ * FROM emp;

select SF_GET_PARA_VALUE(1,'PARALLEL_POLICY');

使用手动并行模式时,只需要在 INI 参数中设置好如下 2 个参数,然后执行并行 SQL查询语句时,需手动指定当前并行任务个数。

若不指定,将不使用并行。设置的 2 个参数如下:

PARALLEL_POLICY 2

PARALLEL_THRD_NUM 4

使用自动并行模式时,一般指定如下三个参数:

MAX_PARALLEL_DEGREE 3

PARALLEL_POLICY 1

PARALLEL_THRD_NUM 10

另外,当 PARALLEL_POLICY 为 0 时,即使有并行任务,也不支持并行。

查询计划重用、结果集重用

DBA 可以通过在 SQL 语句中设置 "RESULT_CACHE"或"NO_RESULT_CACHE" HINT手动指示查询的结果集是否缓存。如:

explain select /*+ RESULT_CACHE */ * from emp where emp.employee_id=100;

或者

explain select /*+ NO_RESULT_CACHE */ * from emp where emp.employee_id=100;

创建emp和dep各插入大量数据

 

select * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;

 

 

select /*+ RESULT_CACHE */ * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;

 

select /*+ NO_RESULT_CACHE */ * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;

本示例中结果集重用不重用本次基本没效果。

示例

查看执行计划

explain select * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;

 

全是CSCN2全表扫描,且执行计划预估值偏差很大7221行实际返回10201行

1、收集统计信息:

select NUM_ROWS,LAST_ANALYZED,TEMPORARY from USER_TABLES where TABLE_NAME='EMP';

SP_TAB_STAT_INIT ('SYSDBA','EMP');

SP_TAB_STAT_INIT ('SYSDBA','DEP');

再次执行

select * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;

 

这里基本没效果:貌似因为不是执行计划步骤问题,虽然执行计划预估值有问题,但是执行计划步骤没问题,不管是否收集统计信息均按执行计划步骤走,所以这里效果不明显。

3、对sql搜集统计信息

--先创建索引后又收集sql统计信息

SP_SQL_STAT_INIT ('select * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100');

explain select * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;

 

select * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;

 

效果显著

2、添加索引

create index emp_idx on emp(EMPLOYEE_ID);

create index dep_idx on dep(DEPARTMENT_ID);

 

效果非常明显

 

使用优化器提示HINT

需要注意的是:如果 HINT 的语法没有写对或指定的值不正确,DM 并不会报错,而是直接忽略 HINT 继续执行。

支持 HINT 的INI 参数分为两类:

一是 HINT_TYPE 为"OPT",表示分析阶段使用的参数;

二是HINT_TYPE为"EXEC",表示运行阶段使用的参数,运行阶段使用的参数对于视图无效。

explain select * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;

 

不使用hash join连接

explain select /*+ ENABLE_HASH_JOIN(0) */ * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;

 

EXPLAIN SELECT /*+ ENABLE_HASH_JOIN(1) */ * FROM T1,T2 WHERE T1.C1 = T2.D1; --这个还是next loop嵌套循环啊

使用了 HINT,指明在执行此 SQL 时参数 ENABLE_HASH_JOIN 被置为 1。

SELECT /*+ INDEX(T1, IDX_T1_ID) */ * FROM T1 ;

SELECT /*+ INDEX(A IDX_T1_NAME)*/ * FROM T1 A WHERE ID > 2011 AND NAME < 'XXX' ORDER BY NAME;

explain select /*+ NO_INDEX(EMP,EMP_IDX) */ * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;

 

EXPLAIN SELECT /*+ USE_HASH(T1,T2) */ * FROM T1,T2 WHERE T1.C1 = T2.D1; --这个才是使用hash连接

EXPLAIN SELECT /*+ NO_USE_HASH(T1,T2) */ * FROM T1, T2 WHERE T1.C1 = T2.D1; --不使用hash连接

explain select /*+ NO_USE_HASH(emp,dep) */ * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100; --这个没效果

 

--强制两个表间使用嵌套循环连接

EXPLAIN SELECT /*+ USE_NL(A, B) */ * FROM T1 A, T2 B WHERE A.C1 = B.D1;

explain select /*+ USE_NL(emp,dep) */ * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;

 

NO_USE_NL 强制两个表间不能使用嵌套循环连接

USE_NL_WITH_INDEX 当连接情况为左表+右表索引时,强制两个表间使用索引连接

EXPLAIN SELECT /*+ USE_NL_WITH_INDEX(T1, IDX_T1_C1) */ * FROM T1, T2 WHERE T1.C1 = T2.D1;

NO_USE_NL_WITH_INDEX 当连接情况为左表+右表索引时,强制两个表间不能使用索引连接

USE_MERGE强制两个表间使用归并连接。归并连接所用的两个列都必须是索引列。

NO_USE_MERGE强制两个表间不能使用归并连接

等。

貌似还可以直接指定dm.ini文件中的参数

select * from v$hint_ini_info where para_name='VIEW_PULLUP_FLAG';

 

explain select /*+ VIEW_PULLUP_FLAG(3) */ * from v_emp;

 

索引

创建索引

create index emp_idx on emp(employee_id);

select name,id,subtype$ from sysobjects where subtype$='INDEX' and name='EMP_IDX';

索引占用空间(页数)

select index_used_space(33555482);

索引使用页数

select index_used_pages(33555482);

指定聚集索引键:--每张表中只允许有一个聚集索引

1. CLUSTER PRIMARY KEY:指定列为聚集索引键,并同时指定为主键,称为聚集主键;

2. CLUSTER KEY:指定列为聚集索引键,但是是非唯一的;

3. CLUSTER UNIQUE KEY:指定列为聚集索引键,并且是唯一的。

查询主键(聚簇索引键并删除修改)

SELECT CONSTRAINT_NAME,TABLE_NAME FROM ALL_CONSTRAINTS WHERE CONSTRAINT_TYPE='P' and TABLE_NAME='EMP1';

alter table emp1 drop constraint "CONS134218794"; --主键可以直接删,聚集主键不能直接删,需要再创建一个聚集主键而使其变为非聚集主键后再删。(create cluster index name_dept on dept(name); )

 

 

create cluster index emp_c_idx on emp1(employee_name);

--创建聚集主键后上面创建的聚集索引 自动删除了

--创建聚集索引后上面创建的聚集主键 没有自动删除,但是可以执行手动删除了

 

管理索引

索引分类:

物理存储角度

聚集索引:表数据存储在 B 树叶子节点上,定位索引可直接在B树中找到数据。每一个表有且只有一个聚集索引。同一张表创建另一个聚集索引时,前一个貌似会被自动删除。

非聚集索引:二级索引列和聚集索引列共同存储在B 树叶子节点上。如果查找索引键值以外的数据,则需要回到一级索引中进行查找。每一个表可以有多个非聚集索引。

create cluster index EMP1 on t1(EMPLOYEE_NAME); --聚集索引

create index s1 on EMP1(EMPLOYEE_ID); --非聚集索引

==

select name,id,subtype$ from sysobjects where subtype$='INDEX' and name='EMP_C_IDX';

SELECT CONSTRAINT_NAME,TABLE_NAME FROM ALL_CONSTRAINTS WHERE CONSTRAINT_TYPE='P' and TABLE_NAME='EMP1'; --聚集索引不是约束,这里查不到,之前创建主键或者聚集主键时是约束

==

功能角度分类

可分为唯一索引、函数索引、位图索引、位图连接索引、全文索引、空间索引、数组索引、普通索引。

虚实角度分类

分为虚索引和实索引。

虚索引:创建 PRIMARY KEY 主键约束或 UNIQUE 唯一约束时,系统会自动创建一个相关的唯一索引。因为不需要用户创建,因此称为虚索引。

实索引:虚索引以外的索引均为实索引。

索引键值个数分类:

单列索引和复合索引。

分区的角度进行分类:

全局索引和局部索引。全局索引和局部索引均为二级索引,专门用于水平分区表中。

全局索引 (GLOBAL) 是以整张表的数据为对象而建立的索引。全局索引的日常维护成本高于局部索引。

全局索引具体分为两种:全局非分区索引全局分区索引。指定了<PARTITION 子句>的索引即为分区索引。只有 DMDPC 功能支持分区索引。

创建全局非分区索引

create index part_dept_idx on dept_part(id) global;

explain select * from dept_part where id = 2; --全局分区索引查询

explain select * from dept_part partition (p2022) where id = 2; --直接对分区子表查询,则使用全局本地索引

创建全局分区索引

create index part_dept_idx_f on dept_part(name) global partition by range(name)

(

partition p1 values less than (100) storage(on TS_HR_IDX),

partition p2 values less than (maxvalue) storage(on TS_HR_IDX)

);

explain select * from dept_part where name = 'dd'; //当数据量很大时

explain select * from dept_part index part_dept_idx_f where name = 'dd'; //或直接指定全局索引

explain select * from DEPT_PART partition (p2022) where name = 'dd'; //直接对分区子表查询,则使用全局本地索引

局部索引:局部索引是在分区表的每个分区上创建的索引。

未指定 GLOBAL 关键字创建的索引即为局部索引。局部索引暂时不支持分区。创建局部索时,会在水平分区表的主表上创建局部索引和在每个子表上创建一个子表局部索引。索引数据存储在子表局部索引上。

创建局部索引

必须缺省 GLOBAL 关键字

create index idx1 on dept_part(name)

storage(on TS_HR_IDX);

在 WHERE 中指定索引列,可使用索引 idx1 查询

explain select * from t1 where name = 'dd';

直接对分区子表查询,则使用子表局部索引

explain select * from DEPT_PART partition (p2022) where name = 'dd';

创建聚集索引

create cluster index clu_emp_name on emp(ename);

若指定索引键,表中数据都会根据指定索引键排序。

建表后,DM8 也可以用创建新聚集索引的方式来重建表数据,并按新的聚集索引排序。

新建聚集索引会重建这个表以及其所有索引,代价非常大的操作。

创建唯一索引

create unique index dept_unique_index on dept(dname);

位图索引:

针对含有大量相同值的列而创建。

索引查询

SELECT CONSTRAINT_NAME,INDEX_NAME,TABLE_NAME FROM ALL_CONSTRAINTS WHERE CONSTRAINT_NAME= 'CONS134218800';

SELECT CONSTRAINT_NAME,INDEX_NAME,TABLE_NAME FROM ALL_CONSTRAINTS WHERE CONSTRAINT_TYPE='P' and TABLE_NAME='EMP2';

SELECT INDEX_NAME,UNIQUENESS FROM ALL_INDEXES WHERE INDEX_NAME='INDEX33555495';

重建索引

当一个表经过大量的增删改操作后,表的数据在物理文件中可能存在大量碎片,从而影响访问速度。

sp_rebuild_index(schema_name varchar(256),index_id int);

select name,id,subtype$ from sysobjects where subtype$='INDEX' and name='EMP_IDX';

sp_rebuild_index('SYSDBA',33555482);

删除索引

DROP INDEX IF EXISTS emp_ename;

不能直接删除与已启用的 UNIQUE KEY 键或 PRIMARY KEY 键约束相关的索引。要删除一个与约束相关的索引,必须停用或删除该约束本身。

ALTER TABLE emp DROP CONSTRAINT pk_emp_name;

删除 emp 表的聚集索引

DROP INDEX clu_emp_name;

删除表就自动删除了所有与其相关的索引。

查看索引信息

INDEXDEF(INDEX_ID int, PREFLAG int); --PREFLAG 表示返回信息中是否增加模式名前缀。

select name,id,subtype$ from sysobjects where subtype$='INDEX' and name='EMP_IDX';

SELECT INDEXDEF(33555482,0);

select * from SYSINDEXES where id=33555482;

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

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

相关文章

上手vue2的学习笔记5之在vue2项目中调用elment-ui

前言 上手vue2的学习笔记4之搭建vue环境 参考链接&#xff1a;vue2.0项目引入element-ui 一、安装elment-ui 进入搭建的vue项目中 cd vue_bing_test 安装 element npm i element-ui二、引入elment-ui elment官方教程 将main.js改成如下内容&#xff1a; import Vue fro…

Proxy代理前后,Httpheader 的变化

Vite.config 配置Proxy服务器, 解决Rest API 访问SpringBoot接口时&#xff0c;跨域的Session一致性。 import { defineConfig, loadEnv } from viteexport default defineConfig({server: {proxy: {/rest: {target: loadEnv(, process.cwd()).VITE_API_URL,changeOrigin: tru…

argparse 模块参数

官方文档&#xff1a;https://docs.python.org/3.7/library/argparse.html 示例 def parse_config():parser argparse.ArgumentParser(descriptionarg parser) # 创建一个 ​​ArgumentParser​​ 对象(parser)parser.add_argument(--cfg_file, typestr, defaultNone, hel…

[相遇 Bug] - ImportError: numpy.core.multiarray failed to import

背景: 因为最近在看点云模型, 在自己的环境上部署该项目: https://github.com/open-mmlab/OpenPCDet/tree/master 执行命令: 这里执行github项目给的demo.py文件, 命令格式如下: python demo.py --cfg_file cfgs/kitti_models/pointpillar.yaml --ckpt xxx/pointpillar_772…

WPF Prims框架详解

文章目录 前言Prism基本使用Prism选择&#xff0c;DryIoc还是UnityPrism基本框架搭建Prism动态更新View和ViewModel对应关系参数动态更新函数动态绑定 prism新建项目模板region使用事例测试是否限制空间 消息订阅如何使用消息订阅使用建议 路由导航对话框/弹窗功能实现代码 前言…

Element分页组件自定义样式

样式效果 页面代码 <el-paginationsize-change"handleSizeChange"current-change"handleCurrentChange":current-page"page.page":page-sizes"[10, 20, 30, 40]":page-size"page.size"layout"total, sizes, prev, …

HTML <map> 标签

实例 带有可点击区域的图像映射: <img src="planets.jpg" border="0" usemap="#planetmap" alt="Planets" /><map name="planetmap" id="planetmap"><area shape="circle" coords=&q…

Spring Boot 中的 @Field 注解详解

Spring Boot 中的 Field 注解详解 引言 Spring Boot 是目前 Java 生态圈中最受欢迎的 Web 应用开发框架之一&#xff0c;它提供了很多优秀的功能和工具&#xff0c;可以帮助开发者快速构建高效、可靠的 Web 应用程序。其中一个重要的功能就是数据绑定和验证&#xff0c;Sprin…

(阿里云)STM32L+BC20+MQTT协议传输温湿度,ADC,电压,GPS数据到阿里云物联网平台

1、材料准备 准备以下材料 2、设备连接 2.1 插入物联网卡 首先把BC20核心板从开发板上拆下来 然后将物联卡放置在BC20核心板内 物联卡放置完成将BC20核心板重新插入到开发板内&#xff08;注意不要弄错方向&#xff09; 同时接入天线 2.2 连接ST-Link仿真器 用3条杜邦线接…

DP485替代MAX485 RS485/RS422 收发器芯片

DP485E 是一款 5V 供电、半双工、低功耗、低摆率&#xff0c;完全满足 TIA/EIA-485 标准要求的 RS-485收发器。DP485E 工作电压范围为 4.75~5.25V&#xff0c;具备失效安全&#xff08;fail-safe&#xff09;、过温保护、限流保护、过压保护&#xff0c;控制端口热插拔输入等功…

飞行动力学 - 第10节-空间机动性、稳定性与操纵性概述 之 基础点摘要

飞行动力学 - 第10节-空间机动性、稳定性与操纵性概述 之 基础点摘要 1. 协调盘旋性能计算流程2. 一般盘旋2.1 动力学方程2.2 角点速度2.3 典型战斗机盘旋曲线 3. 空间机动能力4. 飞行动力学&#xff1a;飞行性能稳定性与操纵性5. 稳定性定义6. 飞行品质6.1 品质等级6.2 品质评…

从字节出来的测试总监,让我们用这份《测试用例规范》,再也没加班过。

经常看到无论是刚入职场的新人&#xff0c;还是工作了一段时间的老人&#xff0c;都会对编写测试用例感到困扰&#xff1f;例如&#xff1a; 固然&#xff0c;编写一份好的测试用例需要&#xff1a;充分的需求分析能力 理论及经验加持&#xff0c;作为测试职场摸爬打滚的老人&…

数据科学分析全流程步骤

知识图谱以结构化的“知识”来存储与表示海量数据&#xff0c;作为承载底层海量知识并支持上层智能应用的重要载体&#xff0c;它在智能时代中扮演了极其重要的角色。然而&#xff0c;由于知识图谱高度结构化的特点&#xff0c;我们常常需要构建结构化查询语句&#xff08;SPAR…

使用 jmeter 进行审批类接口并发测试

目录 前言&#xff1a; 背景&#xff1a; 难点&#xff1a; 场景 a&#xff1a; 场景 b&#xff1a; 前言&#xff1a; 使用JMeter进行审批类接口的并发测试是一种有效的方法&#xff0c;可以模拟多个用户同时对接口进行审批操作&#xff0c;以评估系统在高负载情况下的性…

LLM - DataCollatorForLanguageModeling 样本生成 by transformers

目录 一.引言 二.生成样本 By API 1.样本处理样式 2.DataCollatorForLanguageModeling 2.1 样本准备 2.2 API 生成 三.生成样本 By DIY 1.样本准备 2.data_colloator 实现 3.使用自定义 data_colloator 四.总结 一.引言 前面我们讲了 Baichuan7B 的 lora 微调步骤&a…

Qt添加第三方字体

最近开发项目时&#xff0c;据说不能用系统自带的微软雅黑字体&#xff0c;于是找一个开源的字体&#xff0c;思源黑体&#xff0c;这个是google和Adobe公司合力开发的可以免费使用。本篇记录一下Qt使用第三方字体的方式。字体从下载之家下载http://www.downza.cn/soft/266042.…

uniapp实现路由跳转拦截

场景&#xff1a;系统可以不登录就可以访问浏览商城&#xff0c;一些菜单&#xff08;购买、添加修改用户信息、添加地址、修改密码等&#xff09;需要进行登录才能操作。 思路&#xff1a; 1.新建公共js文件进行路由拦截&#xff0c;添加白名单。&#xff08;白名单菜单不需…

【压力传感器】LPS22DFTR、LPS33KTR 绝对 压力,ADP5131 排气式压力计 50kPa 6-DIP

LPS22DFTR MEMS纳米压力传感器是一款超紧凑型压阻式绝对压力传感器&#xff0c;可用作数字输出气压计。LPS22DF的功耗更低&#xff0c;与上一代产品相比压力噪声更低。该器件包括一个传感元件和一个IC接口&#xff0c;通过I2C、MIPI I3CSM或SPI接口从传感元件向应用程序进行通信…

【操作系统】几种基本页面置换算法的基本思想和流程图

目录 一、概述二、最佳置换算法&#xff08;OPT&#xff09;三、先进先出置换算法&#xff08;FIFO&#xff09;四、最近最久未使用置换算法&#xff08;LRU&#xff09;五、三种页面置换算法优缺点对比六、运行结果七、总结 一、概述 在地址映射过程中&#xff0c;若在页面中发…

在After Effects 加速渲染的 21个技巧,记得收藏!

如何减少After Effects 渲染时间&#xff1f; 1.升级内存 减少渲染时间的一种有效方法是升级 RAM&#xff08;随机存取存储器&#xff09;。RAM 在渲染过程中起着至关重要的作用&#xff0c;因为它存储并快速访问渲染任务所需的数据。增加系统中的 RAM 量可提供更多的数据存储…