Oracle性能优化学习心得byLYH 本文关键词:学习心得,性能,优化,Oracle,byLYH
Oracle性能优化学习心得byLYH 本文简介:Oracle性能优化学习心得一,优化总的原则1,查看系统的使用情况2,查看SGA分配情况,结合系统具体情况进行分析。3,表的设计分析4,SQL语句分析实施要则1,查看系统的使用情况,CPU占用,内存,I/O读取等Oracle10G提供的OracleEnterpriseManager图形化工具中的AD
Oracle性能优化学习心得byLYH 本文内容:
Oracle性能优化学习心得
一,优化总的原则
1,
查看系统的使用情况
2,
查看SGA分配情况,结合系统具体情况进行分析。
3,
表的设计分析
4,
SQL语句分析
实施要则
1,
查看系统的使用情况,CPU占用,内存,I/O读取等
Oracle10G提供的Oracle
Enterprise
Manager图形化工具中的ADDM
和
SQL
Tuning
Advisor等可以方便的查看系统状况
2,
OPS上负载均衡,不同查询用不同Instance
3,
提供脚本查看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数据库进行性能调整时,应当按照一定的顺序进行,因为系统在前面步骤中进行的调整可以避免后面的一些不必要调整或者代价很大的调整。一般来说可以从两个阶段入手:
1、设计阶段:对其逻辑结构和物理结构进行优化设计,使之在满足需求条件的情况下,系统性能达到最佳,系统开销达到最小;
2、数据库运行阶段:采取操作系统级、数据库级的一些优化措施来使系统性能最佳;
㈠设计阶段:
A,数据库设计优化
较多修改较少查询的数据
和
较多查询较少修改的数据
分别对待。
a,结构优化
1,根据应用程序进行数据库设计。
即应用程序采用的是传统的C/S两层体系结构,还是B/W/D三层体系结构。不同的应用程序体系结构要求的数据库资源是不同的。
2,遵循3大范式规范化数据结构,减少不必要的冗余。
3,反规范设计,增加必要冗余,提高查询速度。
4,针对变化较少的数据,合理创建临时表和视图,需注意对临时表和视图的及时同步更新
5,在服务器端使用过程和函数,减少网络数据传输
b,I/O优化
1,
使用分区,对查询条件字段(主外键)建立索引,依据Rowid物理地址查询,减少I/O的消耗。应避免可能参与计算的字段
2,
建立合适的索引。
缺省情况下建立的索引是非群集索引,但有时它并不是最佳的;合理的索引设计要建立在对各种查询的分析和预测上。一般来说:
①.
有大量重复值、且经常有范围查询(between,>,=,REBUILD
b,避免在索引列上使用计算,判断或函数处理
3,使用聚簇(对列的选择原则同索引)。
4,使用存档功能。
5,数据缓冲,快照,视图,远程调用等,减少I/O和网络消耗
6,I/O调整
这一步是在信息系统开发之前完成的。数据库管理员可以将组成同一个表空间的数据文件放在不同的硬盘上,做到硬盘之间I/O负载均衡。在磁盘比较富裕的情况下还应该遵循以下原则:
将表和索引分开;
创造用户表空间,与系统表空间(system)分开磁盘;
创建表和索引时指定不同的表空间;
创建回滚段专用的表空间,防止空间竞争影响事务的完成;
创建临时表空间用于排序操作,尽可能的防止数据库碎片存在于多个表空间中。
7,确定数据块大小和存储参数。
由于数据库的块大小在数据库创建以后就不能在修改(除非重建数据库),因此为了减少数据链接和行迁移,又提高磁盘空间的利用率,在设计数据库时要确定合适的数据块大小和存储参数。通常我们是根据样例数据确定数据块大小,而根据业务现状和未来发展趋势确定存储参数。
㈡运行阶段:
B,系统优化
许多新手都错误的认为应该首先调整Oracle数据库,而不是先确认外部资源是否足够。实际上,如果外部环境出现瓶颈,再多的Oracle调整都是没有帮助的。
1,多处理器系统调整优化,启用并行查询。
2,减少内存交换,减少分页,使SGA(System
Globle
Area)可留驻内存。
3,优化系统I/O环境。
4,优化网络环境
C,数据库连接与网络优化
1,使用直接OLE
DB连接。
2,使用Connection
Pool(数据连接池)机制
3,优化程序设计,减少网络传输量
D,Oracle参数配置优化
Oracle参数设置,根据具体应用情况而定。
1,
SGA的分配及使用效率优化
分配给每个实例的内存,即SGA的使用效率如何,会大大影响数据库系统的性能。SGA由下列部分组成:共享池(Shared
pool)、数据块缓冲区(Db
block
buffer)、重做日志缓冲区(Log
buffer)、大池组成(Large
pool)。
2,
使用SQL*Loader
Direct
Path选项进行大量数据装载
3,
Database
Resource
Manager(DRM,数据库资源管理器)来控制用户的资源分配
4,
减少资源竞争
在Oracle中,需要采用一些机制来保证数据库对象在使用期间的稳定性和数据的一致性,如使用锁存器(latch)、锁(lock)等。因此争用和这些机制相关的资源会影响数据库的性能。为了减少这种资源竞争,可以通过调整数据库的相关初始化参数(如db_block_lru_latches、dml_locks)来减少资源的争用,优化数据库性能。
在对Oracle数据库进行优化时,需要用到许多的参数,其中有一部分参数对系统性能影响较大,这部分参数叫可变参数。可变参数按其作用可以分为两大类,一大类是起限制作用的,如OPEN_CURSORS;另一大类是影响系统性能的,如DB_BLOCK_BUFFERS。
5,可变参数优化
在对Oracle数据库进行优化时,需要用到许多的参数,其中有一部分参数对系统性能影响较大,这部分参数叫可变参数。可变参数按其作用可以分为两大类,一大类是起限制作用的,如OPEN_CURSORS;另一大类是影响系统性能的,如DB_BLOCK_BUFFERS。
在进行数据库系统性能优化时,需要熟练掌握和了解一些可变参数。本文讨论了一些对系统性能有较大影响的参数。
限制类可变参数
(1)DML_LOCKS
该参数表明多少个用户,可同时能修改多少张表。例如:有三个用户同时修改二张表,则要求表上的总数为6。若置为0,则组织队列不起作用,其性能会稍有提高。使用该参数时不能用DROP
TABLE、CREATE
INDEX或显式封锁。
(2)LICENSE_MAX_SESSION
该参数指出允许并发用户会话的最大数。若此参数为0,则不能实施并发。若并发的用户会话数已达到此极限,则只有具有RESTRICTED
SESSION权限的用户才能连接到服务器。
(3)LICENSE_MAX_USERS
该参数指出在一个数据库上可建立的最大用户数。当达到最大值时,便不能再建新用户,可改变此值以放松限制。在LICENSE_MAX_SESSION或LICENSE_MAX_USER为0时,则并发会话或任何用户都不能用。若对不同的实例,此参数不同时,则以第一个登录的数据库实例的参数为准。
(4)MAX_DUMP_FILE_SIZE
该参数指定操作系统中写跟踪文件的块的最大值。可用此值来限制跟踪文件的空间。
(5)OPEN_CURSORS
该参数指明一个用户进程能同时打开光标的最大数,它能限制每个用户进程占用的内存空间量。
(6)OPEN_LINKS
该参数指定并发连接到远程数据库的最大用户进程数。若同时引用多个数据库,则应该增大该值。例如:同时交替访问A、B和C三个数据库时,若OPEN_LINKS设置为2,则需花费等待连接时间。此参数只用于分布事务。若该参数设置为0,则不允许进行分布事务处理。
(7)PROCESS
该参数指定同时连接到Oracle服务器上的最大用户进程数。该参数值包括6个后台进程和一个登录,因此,该参数值为20,则只能有13或14个并发用户连接到服务器。
(8)ROW_LOCKING
该参数指定行封锁方式。若设置为“ALWAYS”,则在修改表时只实施行封锁。若设置为“INTENT”时,则行封锁只适用于SELECT
FOR
UPDATE,而在修改时实施表封锁。
影响系统性能类可变参数
(1)CHECKPOINT_PROCESS
该参数根据是否要求检查点而设置成TRUE或者FALSE。当所有缓冲区的信息写到磁盘时,检查点进程(CHPT)建立一个静态的点。在归档日志文件中做一个记号表示有一个检查点发生。检查点发生在归档日志转换的时候或当达到log_checkpoint_interval定义的块数的时候。当设置此参数为TRUE时,后台进程CHPT便可工作。在检查点期间内,若日志写进程(LGWR)的性能减低,则可用CHPT进程加以改善。
(2)DB_BLOCK_CHECKPOINT_BATCH
该参数的值设置得较大时,可加速检查点的完成。当指定的值比参数DB_BLOCK_CHECKPOINT_BATCH大时,其效果和指定最大值相同。
(3)DB_BLOCK_BUFFERS
该参数是在SGA中可作缓冲用的数据库块数。该参数决定SGA的大小,对数据库性能具有决定性因素。若取较大的值,则可减少I/O次数,但要求内存空间较大。每个缓冲区的大小由参数DB_BLOCK_SIZE决定。
(4)DB_BLOCK_SIZE
该参数表示Oracle数据库块的大小,以字节为单位,典型值为2048或4096。该值一旦设定则不能改变。它影响表及索引的FREELISTS参数的最大值。
(5)DB_FILES
该参数为数据库运行时可打开的数据文件最大数目。
(6)DB_FILE_MULTIBLOCK_READ_COUNT
该参数表示在顺序扫描时一次I/O操作可读的最大块数,该最大块数取决于操作系统,其值在4至16或者32是比较好。
(7)D1SCRETE_TRANSACTION_ENABLED
该参数实现一个更简单、更快的回滚机制,以改进某些事务类型的性能。
当设置为TRUE时,可改善某些类型的事务性能。
(8)LOG_ARCHIVE_BUFFER_SIZE
此参数的值依赖于操作系统,它与LOG_ARCHIVE_BUFFER
参数一起用于调整有归档日志的运行,使其运行速度尽量加快,但不能快到降低性能。仅当直接归档到磁带设备时才需要增加这些参数的值,重做日志缓冲区要等待归档日志缓冲区变得可用。
(9)
LOG_ARCHIVE_BUFFER
该参数指定用于归档的日志时的缓冲区数。
(10)
LOG_BUFFER
该参数指明分配给SGA中的日志缓冲区的字节数,该参数值较大时,可减少日志I/O的次数。对于繁忙的系统不宜采用大于或等于64K的值。缺省值—般为数据库块的4倍。
(11)LOG_CHECKPOINT_TIMEOUT
该参数指明两个检查点之间的时间间隔,若指定为0时,则说明不允许进行基于时间的检查点。
(12)LOG_CHECKPOINT_INTERVAL
该参数用来确定检查点进程的执行频率。这个数值设置成取检查点之前处理的重做缓冲区块的数量。
(13)LOG_FILES
该参数指定运行期间数据库可打开的日志文件数。若需要较大的SGA空间,而不需多个日志文件,则可减少该值。
(14)LOG_SIMULTANEOUS_COPIES
该参数是日志缓冲区副本闩锁的最大数,为同时写日志项所用。为提高性能,可设置此参数为两倍的CPU数,对单进程系统,该值多数设置为0,此时断开闩锁。
(15)LOG_SMALL_ENTRY_MAX_SIZE
该参数与LOG_SIMULTANEOUS_COPIES参数配合使用。若日志项大于此项,则在给缓冲区分配空间并获得日志复制闩锁之后,用户进程释放日志复制闩锁。
(16)OPTIMIZRER_MODE
若该参数的值为RULE,则ORACLE优化器选择基于规则的优化;若设置为COST,并且在数据字典中存在有统计信息,则优化器选择基于代价的优化方法进行优化。
(17)SEQUENCE_CACHE_ENTRIES
该参数指明在SGA中可进行高速缓存的序列数,用于直接存取。该高速缓存区是基于最近最少使用(LRU)的算法进行管理的。若此值设置得较高,则可达到较高的并发性。
(18)SEQUENCE_CACHE_HASH_BUCKETS
该参数用于加速查看高速缓冲区最近请求的最新序列的桶式地址数,每个桶式地址占8个字节。高速缓冲区以散列表排列,该参数应为质数。
(19)SERIALIZEABLE
此参数用于保证重复读的一致性。当它设置为TRUE时,查询可保证表级读一致,以防止在此查询提交之前的修改。
(20)SHARED_POOL_SIZE
该参数指定共享池的大小,其中包括共享光标及存储过程。在多用户系统中,较大的SHARED_POOL_SIZE值可改善SQL语句的执行性能,但较小的值可节省内存。
(21)SMALL_TABLE_THRESHOLD
该参数决定SGA中用于扫描的缓冲区的数目,若表的数目小于该值,则该表可整个地读入高速缓存区。若表大于该值,则立即重用该缓冲区。一般用缺省值可使性能最好。
(22)SORT_AREA_TETAINED_SIZE
这是会话内存的最大数量,用于内存排序。当从排序空间提出最后—行时,便释放该内存。若排序要较大的内存,则分配一临时段,排序便可在盘上进行。用于排序的最大总量可由SORT_AREA_SIZE指定,而不用此参数。可以分配同样大小的多个排序空间,不过一般对于复杂的查询才需要。
(23)
SORT_AREA_SIZE
该参数用于指定进行外排序(磁盘)时所需PGA内存的最大数量,以字节为单位。当排序行写入磁盘时,该内存被释放。增大该参数的值,可改进排序效率。一般不调整该参数,除非排序量很大时才调整。
(24)
SORT_SPACEMP_SIZE
该参数仅在排序量很大时才调整该参数。可用下式设置该参数,使排序能最佳地使用盘空间:
[(total_sort_bytes)/(SORT_AREA_SIZE)]十64
其中,total_sort_bytes为:
(number_of_records)*[sum_of_aver_average_column_sizes+(12*number
of(al)]
(25)SQLTRACE
该参数设置为TRUE时,便可跟踪,以获得改善性能的信息。因为跟踪会增加开销,所以一般仅在收集信息时才置为TRUE。在实际使用时,可用ALTER
SESSION命令覆盖它。
(26)TRANSACTION
该参数设置并发事务的最大数。若此值较大,则需增加SGA空间和分配的回滚段数量。缺省值大于PROCESS时,可允许递归事务。
E,SQL语句优化
不良的SQL往往来自于不恰当的索引设计、不充分的连接条件和未优化的where子句。SQL优化的实质就是在结果正确的前提下,用优化器可以识别的语句,充份利用索引,减少表扫描的I/O次数,尽量避免表搜索的发生。
1,
选用合适的Oracle优化器
2,
访问Table的方式:
全表扫描,顺率访问全部表的数据,依次读取多个物理数据块。
ROWID扫描,基于记录的物理位置信息进行扫描和检索,索引提供了快速访问ROWID的方法。
3,
共享SQL语句
不重复解析相同的SQL语句。当你执行一个SQL语句(有时被称为一个游标)时,如果它
和之前的执行过的语句完全相同,ORACLE就能很快获得已经被解析的语句以及最好的执行路径
共享的语句必须满足三个条件:
A.
字符级的比较
当前被执行的语句和共享池中的语句必须完全相同.
例如:
SELECT
FROM
TEST;
和下列每一个都不同,字母大小写和空格
SELECT
from
TEST;
Select
From
TEST;
SELECT
FROM
TEST;
B.
两个语句所指的对象必须完全相同:
例如:
用户对象名如何访问
Jacksal_limitprivate
synonym
Work_citypublic
synonym
Plant_detailpublic
synonym
Jillsal_limitprivate
synonym
Work_citypublic
synonym
Plant_detailtable
owner
考虑一下下列SQL语句能否在这两个用户之间共享.
SQL
能否共享
原因
select
max(sal_cap)
from
sal_limit;
不能
每个用户都有一个private
synonym
-
sal_limit,它们是不同的对象
select
count(*0
from
work_city
where
sdesc
like
NEW%
;
能
两个用户访问相同的对象public
synonym
-
work_city
select
a.sdesc,b.location
from
work_city
a,plant_detail
b
where
a.city_id
=
b.city_id
不能
用户jack
通过private
synonym访问plant_detail
而jill
是表的所有者,对象不同.
C.
两个SQL语句中必须使用相同的名字的绑定变量(bind
variables)
例如:第一组的两个SQL语句是相同的(可以共享),而第二组中的两个语句是不同的(即使在运行时,赋于不同的绑定变量相同的值)
a.
select
pin,name
from
people
where
pin
=
:blk1.pin;
select
pin,name
from
people
where
pin
=
:blk1.pin;
b.
select
pin,name
from
people
where
pin
=
:blk1.ot_ind;
select
pin,name
from
people
where
pin
=
:blk1.ov_ind;
4,
选择最佳查询顺序(表名顺序)
tab1表记录多,tab2表记录少
Select
count(*)
from
tab1,tab2;tab2表作为基础表
多表连接查询,以其中涉及多张表的关系表为基础表
5,
Where子句的条件连接顺序(从最后一个条件子句开始解析)
SELECT
FROM
test
t1
WHERE
25
50000
AND
JOB
=
‘MANAGER’;
大量减少查询范围的条件放在最后
6,
避免select
全查询,利用条件缩小查询范围
select
address
from
address
where
upper(name)
like
JOHN
AND
(name
like
JO%
or
name
like
jo%
or
name
like
Jo
or
name
like
jO
);
注意:upper()函数对索引字段数据的修改,引起了非索引的全检索。加入对索引列的额外条件则可强制启用索引,提高查询效率。
7,
减少访问数据库的次数
能1次select得出结果的,尽量避免用2次select
8,
使用Decode函数来减少处理时间
使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表.
例如:
SELECT
COUNT(*),SUM(SAL)
FROM
EMP
WHERE
DEPT_NO
=
0020
AND
ENAME
LIKE
‘SMITH%’;
SELECT
COUNT(*),SUM(SAL)
FROM
EMP
WHERE
DEPT_NO
=
0030
AND
ENAME
LIKE
‘SMITH%’;
你可以用DECODE函数高效地得到相同结果
SELECT
COUNT(DECODE(DEPT_NO,0020,’X’,NULL))
D0020_COUNT,COUNT(DECODE(DEPT_NO,0030,’X’,NULL))
D0030_COUNT,SUM(DECODE(DEPT_NO,0020,SAL,NULL))
D0020_SAL,SUM(DECODE(DEPT_NO,0030,SAL,NULL))
D0030_SAL
FROM
EMP
WHERE
ENAME
LIKE
‘SMITH%’;
类似的,DECODE函数也可以运用于GROUP
BY
和ORDER
BY子句中.
9,
整合简单的,无关联的数据库访问
视程序代码要求,可以把简单的查询,可以把无关联的几个表在一次select查询出来,储存起来待用。
10,
删除重复记录
DELETE
FROM
test
t
WHERE
t.ROWID
>
(SELECT
MIN(X.ROWID)
FROM
test
X
WHERE
X.id
=
t.id);
因为使用了ROWID,是最高效删除。
11,
用Truncate替代delete
不可回滚,提高了执行速度。
12,
尽量多用Commit
COMMIT所释放的资源:
a.
回滚段上用于恢复数据的信息.
b.
被程序语句获得的锁
c.
redo
log
buffer
中的空间
d.
ORACLE为管理上述3种资源中的内部花费
具体何时COMMIT,需要考虑事务完整性。
13,
计算记录条数count(XX)
对索引列执行count效率最高
14,
用where代替having
HAVING
只会在检索出所有记录之后才对结果集进行过滤.
这个处理需要排序,总计等操作.
如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销.
15,
减少对表的查询
在含有子查询的SQL语句中,要特别注意减少对表的查询.
例如:
低效
SELECT
TAB_NAME
FROM
TABLES
WHERE
TAB_NAME
=
(
SELECT
TAB_NAME
FROM
TAB_COLUMNS
WHERE
VERSION
=
604)
AND
DB_VER=
(
SELECT
DB_VER
FROM
TAB_COLUMNS
WHERE
VERSION
=
604)
高效
SELECT
TAB_NAME
FROM
TABLES
WHERE
(TAB_NAME,DB_VER)
=
(
SELECT
TAB_NAME,DB_VER)
FROM
TAB_COLUMNS
WHERE
VERSION
=
604)
Update
多个Column
例子:
低效:
UPDATE
EMP
SET
EMP_CAT
=
(SELECT
MAX(CATEGORY)
FROM
EMP_CATEGORIES),SAL_RANGE
=
(SELECT
MAX(SAL_RANGE)
FROM
EMP_CATEGORIES)
WHERE
EMP_DEPT
=
0020;
高效:
UPDATE
EMP
SET
(EMP_CAT,SAL_RANGE)
=
(SELECT
MAX(CATEGORY),MAX(SAL_RANGE)
FROM
EMP_CATEGORIES)
WHERE
EMP_DEPT
=
0020;
16,
通过内部函数提高SQL效率
使用函数处理逻辑比复杂SQL效率要高。
17,
使用表的别名
避免多表连接时,存在多个相同列名导致的错误和效率降低。
18,
用Exists代替In
在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下,使用EXISTS(或NOT
EXISTS)通常将提高查询的效率
19,
用Not
Exists代替Not
In
在子查询中,NOT
IN子句将执行一个内部的排序和合并.
无论在哪种情况下,NOT
IN都是最低效的
(因为它对子查询中的表执行了一个全表遍历).
为了避免使用NOT
IN,我们可以把它改写成外连接(Outer
Joins)或NOT
EXISTS.
20,
用表连接代替Exists
SELECT
ENAME
FROM
EMP
E
WHERE
EXISTS
(SELECT
‘X’
FROM
DEPT
WHERE
DEPT_NO
=
E.DEPT_NO
AND
DEPT_CAT
=
‘A’);
(更高效)
SELECT
ENAME
FROM
DEPT
D,EMP
E
WHERE
E.DEPT_NO
=
D.DEPT_NO
AND
DEPT_CAT
=
‘A’
;
21,
用EXISTS替换DISTINCT
当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在SELECT子句中使用DISTINCT.
一般可以考虑用EXIST替换
例如:
低效:
SELECT
DISTINCT
DEPT_NO,DEPT_NAME
FROM
DEPT
D,EMP
E
WHERE
D.DEPT_NO
=
E.DEPT_NO
高效:
SELECT
DEPT_NO,DEPT_NAME
FROM
DEPT
D
WHERE
EXISTS
(
SELECT
‘X’
FROM
EMP
E
WHERE
E.DEPT_NO
=
D.DEPT_NO);
EXISTS
使查询更为迅速,因为RDBMS核心模块将在子查询的条件一旦满足后,立刻返回结果.
22,
用>=替代>
如果DEPTNO上有一个索引,高效:
SELECT
FROM
EMP
WHERE
DEPTNO
>=4
低效:
SELECT
FROM
EMP
WHERE
DEPTNO
>3
两者的区别在于,前者DBMS将直接跳到第一个DEPT等于4的记录而后者将首先定位到DEPTNO=3的记录并且向前扫描到第一个DEPT大于3的记录.
23,
用IN来替换OR
下面的查询可以被更有效率的语句替换:
低效:
SELECT….
FROM
LOCATION
WHERE
LOC_ID
=
10
OR
LOC_ID
=
20
OR
LOC_ID
=
30
高效
SELECT…
FROM
LOCATION
WHERE
LOC_IN
IN
(10,20,30);
译者按:
这是一条简单易记的规则,但是实际的执行效果还须检验
24,
避免使用耗费资源的操作
带有DISTINCT,UNION,MINUS,INTERSECT,ORDER
BY的SQL语句会启动SQL引擎执行耗费资源的排序(SORT)功能.
DISTINCT需要一次排序操作,而其他的至少需要执行两次排序.
例如,一个UNION查询,其中每个查询都带有GROUP
BY子句,GROUP
BY会触发嵌入排序(NESTED
SORT)
;
这样,每个查询需要执行一次排序,然后在执行UNION时,又一个唯一排序(SORT
UNIQUE)操作被执行而且它只能在前面的嵌入排序结束后才能开始执行.
嵌入的排序的深度会大大影响查询的效率.
通常,带有UNION,MINUS,INTERSECT的SQL语句都可以用其他方式重写.
25,
与索引相关的优化
索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率。现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构。索引的使用要恰到好处,其使用原则如下:
●在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的字段则由优化器自动生成索引。
●在频繁进行排序或分组(即进行group
by或order
by操作)的列上建立索引。
●在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要建立索引。比如在雇员表的“性别”列上只有“男”与“女”两个不同值,因此就无必要建立索引。如果建立索引不但不会提高查询效率,反而会严重降低更新速度。
●如果待排序的列有多个,可以在这些列上建立复合索引(compound
index)。
●使用系统工具,可以在可疑的索引上进行检查。在一些数据库服务器上,索引可能失效或者因为频繁操作而使得读取效率降低,如果一个使用索引的查询不明不白地慢下来,可以试着工具检查索引的完整性,必要时进行修复。另外,当数据库表更新大量数据后,删除并重建索引可以提高查询速度。
三,ORACLE
SQL性能追踪
set
timing
on
显示操作执行时间
使用Trace追踪
set
autotrace
traceonly
/*traceonly
可以不显示SQL执行结果
使用Oracle
10G提供的ADDM
和
SQL
Tuning
Advisor
四,相关资料
Oracle官方网站www.jsfw8.com
Oracle中文论坛www.jsfw8.com.cn
其他资料参阅本人共享
篇2:金属材料性能检验、试验标准号对照表
金属材料性能检验、试验标准号对照表 本文关键词:金属材料,对照表,检验,试验,性能
金属材料性能检验、试验标准号对照表 本文简介:金属材料力学、工艺性能试验方法GB/T10623—89金属力学性能试验术语GB/T2975—82钢材力学及工艺性能试验取样规定GB/T6396-95复合钢板力学工艺性能试验方法HB5431—89金属材料力学性能数据表达准则HB5488—91金属材料应力一应变曲线测定方法GB/T6401—86铁素体奥
金属材料性能检验、试验标准号对照表 本文内容:
金属材料力学、工艺性能试验方法
GB/T10623—89
金属力学性能试验术语
GB/T
2975—82
钢材力学及工艺性能试验取样规定
GB/T
6396-95
复合钢板力学工艺性能试验方法
HB
5431—89
金属材料力学性能
数据表达准则
HB
5488—91
金属材料应力一应变曲线测定方法
GB/T6401—86
铁素体奥氏体型双相不锈钢中α相面积含量
金相测定法
GB/T
13305—91
奥氏体不锈钢中α相面积含量金相测定方法
GB/T
5225—85
金属材料定量相分析
x射线衍射K值法
GB/T
8360—87
金属点阵常数的测定方法
x射线衍射仪法
GB/T
8362—87
金属残余奥氏体定量测定
x射线衍射仪法
GB/*
5056—85
钢的临界点测定方法(膨胀法)
GB/*
5057—85
钢的连续冷却转变曲线图的测定方法(膨胀法)
GB/T
5058—82
钢的等温转变曲线图的测定方法(磁性法)
CB/T
6526—86
自熔合金粉末固一液相线温度区间的测定方法
GB/T
4160—84
钢的应变时效敏感性试验方法(夏比冲击法)
GB/T15757—95
表面缺陷
术语
GB/T
2523—90
冷轧薄钢板(带)表面粗糙度测定方法
GB/*
6061—85
轮廓法测量表面粗糙度的仪器
术语
GB/T13390—92
金属粉末比表面积的测定
氮吸附法
GB/T11107—89
金属及其化合物粉末
比表面积和粒度测定
空气透过法
GB/T1423—78
贵金属及合金密度测试方法
GB/T
8653—88
金属杨氏模量、弦线模量、切线模量和泊松比试验方法(静态法)
GB/T
4157—84
金属材料高温弹性模量测定方法
圆盘振子法
GB/T
2105—91
金属材料杨氏模量、切变模量及泊松比测定方法(动力学法)
CB/T13301—91
金属材料电阻应变灵敏系数试验方法
GB/T13012—91
钢材直流磁性能测定方法
GB
5027—85
金属薄板塑性应变比(γ值)试验方法
GB/T6397—86
金属拉伸试验试样
GB/T
228—87
金属拉伸试验法
GB/T
3076—82
金属薄板(带)拉伸试验方法
GB/T
4338—95
金属材料
高温拉伸试验
GB/T
3652—83
金属管材高温拉伸试验方法
GB/T
13239—91
金属低温拉伸试验方法
GB/T6395—86
金属高温拉伸持久试验方法
GB
5028—85
金属薄板拉伸应变硬化指数(n值)试验方法
GB
8358—86
钢丝绳破断拉伸度试验方法
HB
5280—84
铝箔拉伸试验方法
GB/T
7314—87
金属压缩试验方法
GB/T14452—93
金属弯曲力学性能试验方法
GB/T
232—88
金属弯曲试验方法
GB/T235-88
金属反复弯曲试验方法(厚度等于或小于3mm薄板及带材)
GB/T238-84
金属线材反复弯曲实验方法
GB/T4158-84
金属艾氏冲击试验方法
GB2106-80
金属夏比(V型缺口)冲击试验方法
GB/T229-94
金属夏比缺口冲击试验方法
GB/T12778-91
金属夏比冲击断口测定方法
GB4159-84
金属低温夏比冲击试验方法
GB/T1817-95
硬质合金常温冲击韧性试验方法
GB/T5125-85
有色金属冲杯试验方法
GB/T10128-88
金属室温扭转试验方法
GB/T239-84
金属线材扭转试验方法
GB/T6400-86
金属丝材和铆钉的高温剪切试验方法
GB/T
5482—93
金属材料动态撕裂试验方法
GB/T
6803—86
碳素体钢的无塑性转变温度
落锤试验方法
GB/T8363-87
碳素体钢落锤撕裂试验方法
GB/T1172-74
黑色金属硬度及强度换算值
GB/T3771-83
铜合金硬度与强度换算值
GB/T231-84
金属布氏硬度试验方法
GB/T230-91
金属洛氏硬度试验方法
GB/T1818-94
金属表面洛氏硬度试验方法
GB/T4340-84
金属维氏硬度试验方法
GB/T4341-84
金属肖氏硬度试验方法
GB/T5030-85
金属小负荷维氏硬度试验方法
GB/T4342-91
金属显维氏硬度试验方法
GB/T12444.1-90
金属磨损试验方法MM型磨损试验
GB/T12444.2-90
金属磨损试验方法环块型磨损试验
GB/T233-82
金属顶锻试验方法
GB/T242-82
金属管扩口试验方法
GB243-82
金属管缩口试验方法
GB/T244-82
金属管弯曲试验方法
GB/T245-82
金属管卷边试验方法
GB/T246-82
金属管压扁试验方法
GB/T241-90
金属管液压试验方法
GB2976-88
金属线材缠绕试验方法
HB6140.1-87
金属薄板成形性试验方法通用试验规程
HB6140.2-87
金属薄板成形性试验方法拉伸
HB6140.3-87
金属薄板成形性试验方法
HB6140.4-87
金属薄板成形性试验方法弯曲试验
HB6140.5-87
金属薄板成形性试验方法杯突试验
HB6140.6-87
金属薄板成形性试验方法锥杯试验
HB6140.7-87
金属薄板成形性试验方法扩孔试验
GB/T3075-82
金属轴向疲劳试验方法
HB5287-84
金属材料轴向加载疲劳试验方法
GB/T4337-84
金属旋转弯曲疲劳试验方法
GB/T2107-80
金属高温旋转弯曲疲劳试验方法
GB/T6660-92
金属板材热疲劳试验方法
GB/T12443-90
金属扭应力疲劳试验方法
GB/T12347-90
直径9.5mm以下钢丝绳弯曲疲劳试验方法
GB/T10622-89
金属材料滚动接触疲劳试验方法
GB/T15248-94
金属材料轴向等幅低循环疲劳试验方法
GB/T351-95
金属材料电阻系数测定方法
GB/T1424-78
贵金属及其合金电阻系数的测定方法
GB/T4339-84
金属材料热膨胀特性参数测定方法
GB/T10562-89
金属材料超低膨胀系数测定方法
光干涉
GB/T2039-80
金属拉伸蠕变试验方法
GB/T10120-88
金属应力松弛试验方法
GB/T2038-91
金属材料延性断裂JIC试验方法
GB6395-86
金属高温拉伸持久试验方法
GB/T4161-84
金属材料平面应变断裂韧度KIC试验方法
GB/T7732-87
金属板材表面裂纹断裂韧度KIC试验方法
HB5487-91
铝合金断裂韧度试验方法
GB/T2358-94
金属材料裂纹尖端张开位移试验方法
GB/*6394-86
金属平均晶粒度测定方法
GB/T1814-79
钢材断口检验法
GB/T2971-82
碳素钢和低合金断口检验方法
GB/T13302-91
钢中石墨碳显微评定方法
GB/T224-87
钢的脱碳层深度测定方法
GB/T5617-85
钢的感应淬火或火焰淬火后有效硬化层深度的测定
GB/T226-91
钢的低倍组织及缺陷酸蚀检验法
GB/T7736-87
钢的低倍组织及缺陷超声波检验法
GB/T1979-80
结构钢低倍组织缺陷评定图
GB/T13298-91
金属显微组织检验方法
GB/T13299-91
钢的显微组织评定方法
GB/T3246-82
铝及铝合金加工制品显微组织检验方法
GB/T3247-82
铝及铝合金加工制品低倍组织检验方法
GB/T10561-89
钢中非金属夹杂物显微评定方法
GB/T4335-84
低碳钢冷轧薄板铁素体晶体度测定法
8
篇3:B1级材料材料的燃烧性能等级与保温材料
B1级材料材料的燃烧性能等级与保温材料 本文关键词:材料,保温材料,燃烧,等级,性能
B1级材料材料的燃烧性能等级与保温材料 本文简介:B1级材料材料的燃烧性能等级与保温材料EPS保温板、挤塑板等外墙外保温材料可以是B1级也可以是B2级,这里的B1、B2指的是该种材料的燃烧性能等级。我国建筑材料的燃烧性能等级分为A级、B1级、B2级、B3级。A不燃材料B1难燃材料B2可燃材料B3易燃材料(国家技术监督局1997-04-04批准199
B1级材料材料的燃烧性能等级与保温材料 本文内容:
B1级材料
材料的燃烧性能等级与保温材料
EPS保温板、挤塑板等外墙外保温材料可以是B1级也可以是B2级,这里的B1、B2指的是该种材料的燃烧性能等级。我国建筑材料的燃烧性能等级分为A级、B1级、B2级、B3级。
A
不燃材料
B1
难燃材料
B2
可燃材料
B3
易燃材料(国家技术监督局1997-04-04
批准
1997-10-01
实施)
GB
8624-1997
4
不燃类材料(A
级)
4.1
A
级匀质材料
按GB/T5464
进行测试,其燃料性能应达到:
a)
炉内平均温升不超过50℃;
b)
试样平均持续燃烧时间不超过20s;
c)
试样平均质量损失率不超过50%。
4.2
A
级复合(夹芯)材料
达到下述各项要求的材料,其燃烧性能定为A
级。
a)
按GB/T8625
进行测试,每组试件的平均剩余长度≥35cm(其中任一试件的剩余长度>20cm)且每次测试的平均烟气温度峰值≤125℃,试件背面无任何燃烧现象;
b)
按GB/T8627
进行测试,其烟密度等级(SDR)≤15;
c)
按GB/T14402
和GB/T14403
进行测试,其材料热值≤4.2MJ/kg,且试件单位面积的热释放量≤16.8MJ/m2;
d)
材料燃烧烟气毒性的全不致死浓度LC0≥25mg/L。
5
可燃类材料(B
级)
5.1
B1
级材料
达到下述各项要求的材料,其燃烧性能定为B1
级。
a)
按GB/T8626
进行测试,其燃烧性能应达到GB/T8626
所规定的指标,且不允许有燃烧滴落物引燃滤纸的现象;
b)
按GB/T8625
进行测试,每组试件的平均剩余长度≥15cm(其中任一试件的剩余长度>0cm)且每次测试的平均烟气温度峰值≤200℃;
c)
按GB/T8627
进行测试,其烟密度等级(SDR)≤75。
5.2
B2
级材料
按GB/T8626
进行测试,其燃烧性能应达到GB/T8626
所规定的指标,且不允许有燃烧滴落物引燃滤纸的现象。
5.3
B3
级材料
不属于B1
和B2
级的可燃类建筑材料,其燃烧性能定为B3
级。
外墙外保温材料与燃烧性能等级
XPS挤塑聚苯乙烯保温板(B1级
B2级)
(全称挤塑聚苯乙烯泡沫板,简称挤塑板,又名XPS板,挤塑聚苯板)
XPS挤塑聚苯乙烯保温板是一种集保温、抗渗、抗压性能于一身的新型建材;其优越的性能是传统保温材料无法比拟的,适用于各类土木、道路、建筑墙体、地面、屋面等的保温。
产品特征
1、绝热保温性能优越导热系数0.029W/mK,其他保温材料无法与之相比;
2、耐久性强稳定持久的物化结构几乎不老化,其稳定性大于50年;
3、防水性好以其独特的结构加之材料本身不吸水,具有极佳的抗水性;
4、抗压强度高在密度不大于40Kg/m3的情况下抗压强度可超过350KPa;
5、良好的阻燃性可根据用户的需求生产B2型(阻燃型),B2型(自熄型)产品;
6、方便的使用性重量轻、节约运输成本,易切割、安装便捷。
产品特征
商标
XPS
EPS
型号
B1级
B2级
规格
按客户要求制定规格
产量
150立方/日
价格
420元/立方
B1级保温板EPS聚苯板
1、EPS板(又称苯板)是可发性聚苯乙烯板的简称。是有原料经过预发、熟化、成型、烘干和切割等制成。它既可制成不同密度、不同形状的泡沫制品,又可以生产出各种不同厚度的泡沫板材。广泛用于建筑、保温、包装、冷冻、日用品,工业铸造等领域。也可用于展示会场、商品橱、广告招牌及玩具之制造。目前为适应国家建筑节能要求主要应用于墙体外墙外保温、外墙内保温、地暖。
2、EPS板保温体系是由特种聚合胶泥、EPS板,耐碱玻璃纤维网格布称和饰面材料组成。集保温、防水、防火,装饰功能为一体的新型建筑构造体系。该技术将保温材料置于建筑物外墙外侧,不占用室内空间,保温效果明显,便于设计建筑外形。
3、EPS泡沫是一种热塑性材料,每立方米体积内含有300-600万个独立密闭气泡,内含空气的体积为98%以上,由于空气的热传导性很小,且又被封闭于泡沫塑料中而不能对流,所以EPS是一种隔热保温性能非常优良的材料。
用途:用于建筑内外墙保温、地热采暖、冷库、冷藏室、轻体房、低温箱、保鲜箱
产品规格(mm):
常规尺寸:1250×6000×600
1000×2000×500
常规厚度:0.5-600
技术指标
密度(kg/m3):15-30
导热系数(W/mh):0.041
抗拉强度(kg/m2):2.5-3.5
尺寸稳定性使用温度(℃):+70