oracle数据库优化报告

合集下载

数据库优化报告模板

数据库优化报告模板

数据库优化报告模板系统数据库优化报告模板版本记录1.概述本文档主要对系统实际运行过程中的数据库出现的性能问题进行分析优化2.SQL语句类优化2.1把SQL语句中使用SELECT * 的语句该成SELECT 列名,原因是:ORACLE在解析的过程中,会将' * '依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间。

2.2把SQL语句中的小写改为大写,原因是:oracle总是先解析sql语句,把小写的字母转换成大写的再执行。

2.3对于保存多条数据的SQL语句使用批处理语句保存,减少访问数据库的次数2.4联合查询优化:--No.1 tableA 100w条记录tableB 1w条记录执行速度十秒级SELECT COUNT(*) FROM tableA,tableB;--No.2 执行速度百秒级甚至更高SELECT COUNT(*) FROM tableB,tableA;因此我们选择No.2的方式。

2.5Where子句后面的条件过滤有讲究ORACLE对where子句后面的条件过滤是自下向上,从右向左扫描的,所以和From 子句一样一样的,把过滤条件排个序,按过滤数据的大小,自然就是可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾最下面,最右边,依次类推。

3.存储过程类优化3.1同步数据优化:原方案用java对于一条数据先执行select语句在数据库查出所有记录删除,再插入一条,每晚同步数据需要平均20分钟;优化方案:创建存储过程,创建临时表,批量删除原表数据,再将临时表数据插入数据库表。

每晚同步数据时间缩短为平均8分钟。

4.数据库索引优化注:总是使用索引的第一个列,如果索引是建立在多个列上, 只有在它的第一个列(leading column)被where子句引用时,优化器才会选择使用该索引. 这也是一条简单而重要的规则,当仅引用索引的第二个列时,优化器使用了全表扫描而忽略了索引。

oracle数据库性能调优

oracle数据库性能调优

oracle数据库性能调优⼀:注意WHERE⼦句中的连接顺序:ORACLE采⽤⾃下⽽上的顺序解析WHERE⼦句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最⼤数量记录的条件必须写在WHERE⼦句的末尾.尤其是“主键ID=?”这样的条件。

⼆: SELECT⼦句中避免使⽤ ‘ * ‘:ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个⼯作是通过查询数据字典完成的, 这意味着将耗费更多的时间。

简单地讲,语句执⾏的时间越短越好(尤其对于系统的终端⽤户来说)。

⽽对于查询语句,由于全表扫描读取的数据多,尤其是对于⼤型表不仅查询速度慢,⽽且对磁盘IO造成⼤的压⼒,通常都要避免,⽽避免的⽅式通常是使⽤索引Index。

三:使⽤索引的优势与代价。

优势:1)索引是表的⼀个概念部分,⽤来提⾼检索数据的效率,ORACLE使⽤了⼀个复杂的⾃平衡B-tree结构. 通常,通过索引查询数据⽐全表扫描要快. 当ORACLE找出执⾏查询和Update语句的最佳路径时, ORACLE优化器将使⽤索引. 同样在联结多个表时使⽤索引也可以提⾼效率. 2)另⼀个使⽤索引的好处是,它提供了主键(primary key)的唯⼀性验证.。

那些LONG或LONG RAW数据类型, 你可以索引⼏乎所有的列. 通常, 在⼤型表中使⽤索引特别有效. 当然,你也会发现, 在扫描⼩表时,使⽤索引同样能提⾼效率.代价:虽然使⽤索引能得到查询效率的提⾼,但是我们也必须注意到它的代价. 索引需要空间来存储,也需要定期维护, 每当有记录在表中增减或索引列被修改时, 索引本⾝也会被修改. 这意味着每条记录的INSERT , DELETE , UPDATE将为此多付出4 , 5 次的磁盘I/O . 因为索引需要额外的存储空间和处理,那些不必要的索引反⽽会使查询反应时间变慢.。

⽽且表越⼤,影响越严重。

使⽤索引需要注意的地⽅:1、避免在索引列上使⽤NOT , 我们要避免在索引列上使⽤NOT, NOT会产⽣在和在索引列上使⽤函数相同的影响. 当ORACLE”遇到”NOT,他就会停⽌使⽤索引转⽽执⾏全表扫描.2、避免在索引列上使⽤计算.WHERE⼦句中,如果索引列是函数的⼀部分.优化器将不使⽤索引⽽使⽤全表扫描.举例:代码如下:低效:SELECT … FROM DEPT WHERE SAL * 12 > 25000;⾼效:SELECT … FROM DEPT WHERE SAL > 25000/12;3、避免在索引列上使⽤IS NULL和IS NOT NULL避免在索引中使⽤任何可以为空的列,ORACLE性能上将⽆法使⽤该索引.对于单列索引,如果列包含空值,索引中将不存在此记录. 对于复合索引,如果每个列都为空,索引中同样不存在此记录. 如果⾄少有⼀个列不为空,则记录存在于索引中.举例: 如果唯⼀性索引建⽴在表的A列和B列上, 并且表中存在⼀条记录的A,B值为(123,null) , ORACLE将不接受下⼀条具有相同A,B值(123,null)的记录(插⼊). 然⽽如果所有的索引列都为空,ORACLE将认为整个键值为空⽽空不等于空. 因此你可以插⼊1000 条具有相同键值的记录,当然它们都是空! 因为空值不存在于索引列中,所以WHERE⼦句中对索引列进⾏空值⽐较将使ORACLE停⽤该索引.代码如下:低效:(索引失效) SELECT … FROM DEPARTMENT WHERE DEPT_CODE IS NOT NULL;⾼效:(索引有效) SELECT … FROM DEPARTMENT WHERE DEPT_CODE >=0;4、注意通配符%的影响使⽤通配符的情况下Oracle可能会停⽤该索引。

Oracle性能优化学习心得

Oracle性能优化学习心得

Oracle性能优化学习心得一,优化总的原那么1,查看系统的利用情形2,查看SGA分派情形,结合系统具体情形进行分析。

3,表的设计分析4,SQL语句分析实施要那么1,查看系统的利用情形,CPU占用,内存,I/O读取等Oracle10G提供的Oracle Enterprise Manager图形化工具中的ADDM 和 SQL Tuning Advisor等能够方便的查看系统状况2,OPS上负载均衡,不同查询用不同Instance3,提供脚本查看SGA利用情形4,分析SQL执行情形(trace及其他工具)实施细节1,外部调整:咱们应该记住Oracle并非是单独运行的。

因此咱们将查看一下通过调整Oracle效劳器以取得高的性能。

2,Row re-sequencing以减少磁盘I/O:咱们应该知道Oracle调优最重要的目标是减少I/O。

3,Oracle SQL调整。

Oracle SQL调整是Oracle调整中最重要的领域之一,只要通过一些简单的SQL调优规那么就能够够大幅度地提升SQL语句的性能,这是一点都不奇怪的。

4,调整Oracle排序:排序关于Oracle性能也是有专门大阻碍的。

5,调整Oracle的竞争:表和索引的参数设置关于UPDATE和INSERT的性能有专门大的阻碍。

二,调优分类:对Oracle数据库进行性能调整时,应当依照必然的顺序进行,因为系统在前面步骤中进行的调整能够幸免后面的一些没必要要调整或代价专门大的调整。

一样来讲能够从两个时期入手:一、设计时期:对其逻辑结构和物理结构进行优化设计,使之在知足需求条件的情形下,系统性能达到最正确,系统开销达到最小;二、数据库运行时期:采取操作系统级、数据库级的一些优化方法来使系统性能最正确;㈠设计时期:A,数据库设计优化较多修改较少查询的数据和较多查询较少修改的数据别离对待。

a,结构优化1,依照应用程序进行数据库设计。

即应用程序采纳的是传统的C/S两层体系结构,仍是B/W/D三层体系结构。

最详尽的AWR报告详细分析

最详尽的AWR报告详细分析

最详尽的AWR报告详细分析AWR报告是Oracle数据库性能分析的重要工具之一,通过分析AWR 报告,可以深入了解数据库的性能状况,找出潜在的性能问题,并进行相应的优化。

AWR报告的分析可以从以下几个方面展开:1.数据库整体性能分析:从报告的概览部分可以看到数据库的整体负载情况,包括数据库的总体活动情况、平均负载、各个SQL语句的执行情况等。

通过分析这些指标,可以了解数据库在特定时间段内的性能表现。

2.高负载SQL分析:在SQL执行统计部分可以看到数据库中执行次数最多、响应时间最长的SQL语句。

对于这些高负载的SQL语句,可以结合AWR报告中的其他部分,如锁等待、I/O统计等,进一步分析其性能瓶颈所在,并优化相应的SQL语句。

3.数据库操作的瓶颈分析:AWR报告中提供了详细的数据库操作统计信息,包括CPU消耗、物理读写、逻辑读写等。

通过分析这些指标,可以找出数据库操作的瓶颈所在,如频繁的物理读写、高CPU消耗等,并通过优化解决相应的问题。

4.内存和I/O调优分析:AWR报告中提供了数据库缓冲区、PGA、SGA 等内存相关的统计信息,以及磁盘I/O统计信息。

通过分析这些指标,可以确定数据库是否存在内存不足或磁盘I/O过高的问题,并通过调整相应的配置参数进行优化。

5.统计信息和索引优化分析:AWR报告中可以看到数据库的统计信息和索引相关的指标,如表和索引的统计信息、索引扫描情况等。

通过分析这些指标,可以找出缺失统计信息或无效索引的问题,并及时进行更新和优化。

6.并发和锁等待分析:AWR报告中提供了数据库的并发操作和锁等待信息。

通过分析这些指标,可以找出数据库中的并发问题和锁等待的瓶颈所在,并通过调整相关的事务隔离级别、锁粒度等进行优化。

除了AWR报告本身的分析,还可以结合数据库的实际情况和应用需求,进行进一步的优化和调整。

总之,通过详细分析AWR报告,可以全面了解数据库的性能状况,找出潜在的性能问题,并进行相应的优化和改进。

ORACLEAWR报告详细分析

ORACLEAWR报告详细分析

ORACLEAWR报告详细分析ORACLE AWR(Automatic Workload Repository)报告是ORACLE数据库的性能诊断和优化工具之一、它采集并保存了数据库实例的性能指标数据,例如CPU利用率、内存利用率、I/O活动等。

在实际工作中,分析AWR报告可以帮助我们了解数据库实例的性能瓶颈,并提供相应的优化建议。

AWR报告通常包含多个部分,包括实例活动统计、系统事件统计、SQL统计、I/O统计、SGA统计等。

下面将详细分析AWR报告的各个部分,并提供相应的优化建议。

1.实例活动统计:实例活动统计提供了数据库实例整体的活动情况,包括CPU利用率、用户连接数、用户等待等。

通过分析这些数据,可以判断数据库实例是否存在性能瓶颈,并从中找出问题的原因。

优化建议:-如果CPU利用率较高,可能是由于SQL语句执行效率低导致的,可以通过优化SQL语句来减少CPU负载。

-如果用户等待较多,可能是由于一些资源的瓶颈导致的,可以通过增加相应资源的容量来提高性能。

2.系统事件统计:系统事件统计列出了数据库实例中发生的各种事件的次数和等待时间。

通过分析这些数据,可以判断数据库实例中是否存在事件等待较高的情况,以及可能导致事件等待的原因。

优化建议:-如果一些事件的等待时间较高,可以通过增加相应资源的容量或者调整相关参数来减少等待时间。

-如果类事件的总等待时间较高,可能需要对相关资源进行优化或者增加容量。

3.SQL统计:SQL统计列出了数据库中执行次数较高的SQL语句的统计信息,包括执行次数、平均执行时间、Buffer gets、Disk reads等。

通过分析这些数据,可以找出执行效率较低的SQL语句,并进行优化。

优化建议:-对于执行时间较长的SQL语句,可以通过重写或者调整查询计划来提高执行效率。

-对于频繁执行的SQL语句,可以通过增加缓存或者优化索引来减少IO操作。

4.I/O统计:I/O统计提供了数据库实例中各种I/O活动的统计信息,包括每个表空间的读写次数、平均读写时间等。

浅谈ORACLE数据库性能的优化

浅谈ORACLE数据库性能的优化
最终 决定了 O AC E 数据库 的性能。递返回时间和数据传输速度 判断系绕 } 生能。对一个效率很低 的系统 ,用户可能会感 觉到它是一个很好的传递返回时间的系统,反之,一组 用户也可 能对一个效率很高的信息系统不满意 。如何对 系统的性 能进行分析,使 O A L 数据库运行在最佳 R CE
线字典能够反映出 O C E 动态运行 睛况 。可 以得知 A R L O C E 数据库使用的 C U 时 间, A R L P 操作系统用户状态
( 下转第 5页 )
④调整数据库参数。 应用程序的执行最终将归结为
数据库 中 S QL 语 句执 行 。数据 库操作 的重要部分 由
维普资讯
系统服务时间 + 用户等 待时间。因此 ,获得满意 的
用户响应 时间有两条途径 :一是减少系统服务时间,即
提高数据库吞吐量:二是减少用户等待 时间,即减少访 问同一数据库 资源 的冲突 。
@S L语句跟踪工具。S L语言跟踪工具可以记 Q Q
录 S QL 语句的执行情况 。在 O C E 会话开始时 。 A R L
字典缓冲区组成。 共享 S QL 区是存放用户 S QL命令的 区域 。数据字 典缓冲 区是存放数据库运行动态信息的。
③E L I P A s L语句优化命令。 Ⅺ AN L N- O 作为一 个程序开发者 。需要决定一个查询执行计划的效率 ,使
用 E P A L N 语句就可 得到一条 查询 的执 行计 X L NPA
行过程 中优化配置的。根据数据库的运行状况 。不仅可 调整数据库系统的全局 区 (GA)的大小。还可以调整 S 程序全局区的大小。其 中 S A 主要 由数据缓冲区、 日 G
S L语句跟踪文件调整应用程序的性能。 Q

ORACLE性能AWR报告的使用和分析

ORACLE性能AWR报告的使用和分析

ORACLE性能诊断AWR报告的使用和分析为满足业务的运行要求,高性能要求是目前IT系统普遍面临的最棘手问题,尤其是客户面对着目前越来越庞大系统和数据,系统整合、数据大集中似乎成了趋势。

针对系统性能优化的诊断和分析,数据库方向又是其中的重要一环,本文将针对ORACLE中常用的性能诊断工具AWR报告,进行分析说明。

一、ORACLE性能诊断工具ORACLE数据库的性能的诊断工具有很多种,在9i之前主要通过手工进行采集分析,例如使用动态视图和Statspack报告来获取数据库性能状态信息,10g以后ORACLE数据库的性能诊断和改进建议越来越自动化,不过能够熟悉并掌握ORACLE的相关性能诊断工具的使用,仍对性能问题的准确和有效处理提供有利的帮助。

以下是ORACLE中常用的一些分析工具。

●动态性能视图动态性能视图是ORACLE中最常用,也是最简单的一种工具。

无论何种性能问题,都能在动态性能视图中找到线索,不过仅10g中动态性能视图就高达几百个,每个视图都包括很多诊断信息,想在众多的视图中找到问题的根源,也是一件费力的事情。

一般常用的动态性能视图有:v$session、v$session_wait、v$process、v$sql、v$lock、v$latch、v$sysstat、v$system_event、v$sgastat。

●Statspack报告statspack 是Oracle 9i 之前使用的一个数据库收集工具,收集了数据库全面信息,包括负载概览、前五个等待事件、高速缓存的大小、共享池中SQL语句、表空间和文件I/O、库高速缓存、SGA统计等。

●AWR和ADDM报告AWR是10g以后提供的一个新工具,Oracle 建议用户用这个取代Statspack,它采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题,并自动生成ADDM (自动数据库诊断监控)报告,为用户提供数据库性能诊断分析建议。

oracle数据库级别优化分析工具介绍

oracle数据库级别优化分析工具介绍

oracle数据库级别优化分析工具介绍当我们对数据库优化诊断时,需要收集相应的信息以供参考,从个人的使用经验来说,这种统计数据分为两大类一类是数据库级别的统计信息二类是os级别的统计信息下面就分别介绍在不一致的级别下,常用什么工具来收集信息帮助优化诊断首先是oracle数据库级别优化分析工具介绍目录:1.statspack2.ASH3.AWR4.ORACLE EXPLAIN PLAN的总结(查询sql的执行计划)a.autotraceb.explain的使用1.statspacka。

安装sql> sqlplus "/ as sysdba"SQL> select file_name from dba_data_files;SQL> create tablespace perfstat datafile 'e:\oracle\oradata\skate\perfstat.d bf' size 2000m;sql> @ORACLE_HOME\rdbms\admin\spcreate.sqlb。

使用SQL> conn perfstat/passwd收集统计信息sql> execute statspack.snap或者SQL> exec statspack.SNAP(i_snap_level =>5);生成报告sql> @ORACLE_HOME\rdbms\admin\spreport.sql定时收集信息有两种方式,一种是oracle job,一种是os的crontab,我比较习惯用o s级别的crontab设定其每个小时自动收集一次采样的jobdeclareVariable job number ;begindbms_job.submit(:job, "statspack.snap;" ,trunc( sysdate + 1/24 , 'hh24' ), "trunc(sysdate+1/24,'hh24')" );commit ;end ;/查看job使用情况SQL> select job,schema_user,next_date,interval,what from user_jobs自动停止采样jobdeclareVariable job number ;begindbms_job.submit(:job, "dbms_job.broken(44,true);" ,trunc( sysdate + 1 ), "null" );commit ;end ;/清空所有stats统计信息表里的数据sql> @ORACLE_HOME\rdbms\admin\sptrunc.sqlsnapshot的level,这能够通过EXEC STATSPACK.MODIFY_STATSPACK_PARAME TER(i_snap_level=N)来修改,N能够为0,5,6,7,10,缺省为5。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

oracle数据库
优化报告
目录
1、概述 (3)
2、数据库优化部分 (3)
2.1、环境优化 (3)
2.1.1 统计信息收集被关闭 (3)
2.1.2 部分索引失效 (4)
2.2、设计优化 (4)
2.2.1 设计类问题概述 (4)
2.2.2 设计类问题优化建议 (5)
2.3、SQL优化 (5)
2.3.1 SQL_ID= 7gf3typgc469a (5)
2.3.2 SQL_ID= bdcfdz26x5hm9 (6)
3、数据库优化总结 (7)
1、概述
随着应用软件用户负载的增加和愈来愈复杂的应用环境,操作系统的各项性能参数、数据库的使用效率、用户的响应速度、系统的安全运行等性能问题逐渐成为系统必须考虑的指标之一。

性能测试以及优化通常通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试,用来检测系统是否达到用户提出的性能指标,及时发现系统中存在的瓶颈,最后起到优化系统的目的。

随着需求不断增加,特别是复杂逻辑的需求,一旦出现高并发量时,也将可能导致数据库主机无法承载,因此数据库优化亟待解决。

2、数据库优化部分
从2018年1月份开始跟踪及分析,发现托管区数据库在环境、设计及SQL三方面,都存在不少问题。

在SQL类优化中,本地化代码编写和设计不良,是比较明显的问题。

下面将分成环境、设计、SQL优化三类进行持续分析,并给出相关建议、整改方案、整改进度。

2.1、环境优化
2.1.1 被关闭
zonghe托管区数据库统计信息未自动收集,如果未打开收集,会对系统性能造成较大的影响。

需要开启统计信息
开启方法如下:
--执行
BEGIN
dbms_auto_task_admin.enable(client_name => 'auto optimizer statscollection',
operation=> NULL,
window_name =>NULL);
END;
2.1.2 部分索引失效
需要将索引进行删除。

删除命令参考如下:
drop index index_name;
2.2、设计优化
2.2.2 设计类问题优化建议
1、对于表的创建开发人员需要与业务人员确认后再定义
2、经常与其他表进行连接的表,在连接字段上应该建立索引
3、索引应该建在选择性高的字段上。

例如:表示性别的数据列,由于只有男女两种值,就属于选择性低
4、SELECT子句中避免使用' * ':ORACLE在解析的过程中,会将' * '依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间
5、sql语句用大写的:因为oracle总是先解析sql语句,把小写的字母转换成大写的再执行。

另外,在java代码中尽量少用连接符“+”连接字符串!
6、用EXISTS替代IN、用NOT EXISTS替代NOT IN:在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下,使用EXISTS(或NOT EXISTS)通常将提高查询的效率。

在子查询中,NOT IN子句将执行一个内部的排序和合并。

无论在哪种情况下,NOT IN都是最低效的(因为它对子查询中的表执行了一个全表遍历)。

为了避免使用NOT IN ,我们可以把它改写成外连接(Outer Joins)或NOT EXISTS。

2.3、SQL优化
2.3.1 SQL_ID= 7gf3typgc469a
SQL的100%的数据库时间在CPU、I/O和集群等待,此delete语句消耗大量的CPU资源和产生大量的IO。

delete from CASE_RESULT_INFO where t_time < to_date('2018-04-01','yyyy-mm-dd')
分析排查:
1、表中一共1千万条数据
2、运行时间过长
3、表为普通表,未根据时间t_time分区
修改意见:
根据时间字段t_time按照每个月一个分区的方式来创建一个范围分区
partition by range(t_time)
(
partition table_name_2018_1 values less than(to_date('01/01/2018','dd/mm/yyyy')),
partition table_name_2018_2 values less than(to_date('01/01/2018','dd/mm/yyyy')),
partition table_name_2018_3 values less than(to_date('01/01/2018','dd/mm/yyyy')),
partition table_name_2018_4 values less than(to_date('01/01/2018','dd/mm/yyyy')),
partition table_name_2018_5 values less than(to_date('01/01/2018','dd/mm/yyyy')),
partition table_name_2018_6 values less than(to_date('01/01/2018','dd/mm/yyyy')),
partition table_name_2018_7 values less than(to_date('01/01/2018','dd/mm/yyyy')),
partition table_name_2018_8 values less than(to_date('01/01/2018','dd/mm/yyyy')),
partition table_name_2018_9 values less than(to_date('01/01/2018','dd/mm/yyyy')),
partition table_name_2018_10 values less than(to_date('01/01/2018','dd/mm/yyyy')),
partition table_name_2018_11 values less than(to_date('01/01/2018','dd/mm/yyyy')),
partition table_name_2018_12 values less than(to_date('01/01/2018','dd/mm/yyyy'))
);
这样按照月份删除数据的时候,我们可以:
alter table table_name truncate partition table_name_2018_1;
2.3.2 SQL_ID= bdcfdz26x5hm9
该语句仅节点+1在7天内就执行+255130+次,平均每次2.2+秒,两节点合计7天执行50多万次
select key_word
from cust_zj_declaration a
where REASON_SUB_TYPE is not null
and IS_RECOMMEND_CLERK = 1
and rownum <=10
order by CLERK SORT;
分析排查:
1、CUST_ZJ_DECLARATION表记录有100万条
2、IS_RECOMMEND_CLERK的类型为varchar2类型
3、IS_RECOMMEND_CLERK列有索引
修改意见:
将IS_RECOMMEND_CLERK列的V ARCHAR2类型修改为NUMBER型,因为里面只放0和1两个取值,其中=1仅返回10条以内,0几乎返回所有记录。

适合用索引!IS_RECOMMEND_CLERK列有索引,只是因为是V ARCHAR2类型的,产生了类型转换,用不到索引。

如果实在无法修改类型,则只有将and IS_RECOMMEND_CLERK = 1改为and IS_RECOMMEND_CLERK='1'
3、数据库优化总结
本次针对数据库在环境、设计及SQL的三方面优化建议,更多的是给出一些合理化的建议和意见,毕竟是生产库,所以在得到甲方领导与厂商ISV的许可,并且我们在测试库中做过测试,而且制定回退计划的情况下才能对生产数据库和系统进行优化操作。

相关文档
最新文档