可信网站多少钱做网站每天更新两篇文章
web/
2025/9/26 3:39:56/
文章来源:
可信网站多少钱,做网站每天更新两篇文章,网站开发要学习什么,站长广告联盟平台全表扫描的工作是扫描高水位一下所有的数据块。 这里就有一个问题#xff0c;什么是高水位线。高水位的标志存在表头。 该数据块以后都是崭新未格式化的数据块#xff0c;高水位的目的有二。它是全表扫描的 终点#xff0c;并行插入的起点#xff01; 优化全表扫描的办法有…全表扫描的工作是扫描高水位一下所有的数据块。 这里就有一个问题什么是高水位线。高水位的标志存在表头。 该数据块以后都是崭新未格式化的数据块高水位的目的有二。它是全表扫描的 终点并行插入的起点 优化全表扫描的办法有四核心就是降低高水位 一、降低高水位二、紧密码放数据三、并行查询四、修改初始化参数 降低高水位的办法有三 一、在线回收空间二、挪动表空间三、导出和导入。 紧密码放数据办法有二 一、调整pctfree;二、使用压缩特性。
实验如下 建立大表50万左右分析表列select * from t1;的计划看代价 SQL conn scott/tiger Connected. SQL drop table t1 purge;
Table dropped.
SQL create table t1 as select * from emp where 09;
Table created.
SQL insert into t1 select * from emp;
已创建14行。
SQL insert into t1 select * from t1;
已创建14行。
SQL /
--一直斜杠直到
已创建229376行。
SQL commit; 现在我们就有了45万行左右的大表 分析表获得统计信息 analyze table T1 compute statistics;
Table analyzed.
SQL set autot trace expl SQL select * from t1;
执行计划 ---------------------------------------------------------- Plan hash value: 3617692013
-------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 458K| 14M| 544 (10)| 00:00:07 | | 1 | TABLE ACCESS FULL| T1 | 458K| 14M| 544 (10)| 00:00:07 | -------------------------------------------------------------------------- 我们看到代价为544我们围绕544进行优化降低代价
set autot off delete t1 where deptno30; commit; analyze table T1 compute statistics; select * from t1; 执行计划 ---------------------------------------------------------- Plan hash value: 3617692013
-------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 262K| 8192K| 526 (7)| 00:00:07 | | 1 | TABLE ACCESS FULL| T1 | 262K| 8192K| 526 (7)| 00:00:07 | -------------------------------------------------------------------------- 我们看到代价为526,比原来小一点因为cost是根据块内存cpu,网络综合计算的。 行少了一半但代价没有少多少因为这里高水位没有变化
一、在线回收空间 alter table t1 enable row movement; alter table t1 shrink space; analyze table T1 compute statistics; SQL select NUM_ROWS,BLOCKS,EMPTY_BLOCKS,AVG_SPACE from tabs where table_nameT1; NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_SPACE -------- ---------- ------------ ---------- 262144 1376 32 21 占用了1376个数据块。
select * from t1;
执行计划 ---------------------------------------------------------- Plan hash value: 3617692013
-------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 262K| 8192K| 275 (11)| 00:00:04 | | 1 | TABLE ACCESS FULL| T1 | 262K| 8192K| 275 (11)| 00:00:04 | -------------------------------------------------------------------------- 我们看到代价为275,比原来小了接近一半。
二、挪动表空间 SQL alter table t1 move tablespace users; 这句话也可以重新码放数据。 SQL analyze table T1 compute statistics;
表已分析。
SQL select NUM_ROWS,BLOCKS,EMPTY_BLOCKS,AVG_SPACE from tabs where table_nameT1; NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_SPACE ---------- ---------- ------------ ---------- 262144 1568 96 826 占用了1568个数据块比原来多了192个数据块这是因为高水位不是一个一个块的挪动 而是一组一组的挪动。
select * from t1; 执行计划 ---------------------------------------------------------- Plan hash value: 3617692013
-------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 262K| 8192K| 310 (10)| 00:00:04 | | 1 | TABLE ACCESS FULL| T1 | 262K| 8192K| 310 (10)| 00:00:04 | -------------------------------------------------------------------------- 代价为310比原来的275大因为浪费了一些块这些块存在于高水位下但没有数据。 但数据库全表扫描的时候还是查看了空块浪费了
三、调整pctfree SQL alter table t1 pctfree 0; Table altered. 这句话的目的是使每个数据块更加紧密的码放数据没有update,或者update行长不变的表 pctfree应该设置为0.
SQL alter table t1 move tablespace users; analyze table T1 compute statistics; select * from t1;
执行计划 ---------------------------------------------------------- Plan hash value: 3617692013
-------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 262K| 8192K| 281 (10)| 00:00:04 | | 1 | TABLE ACCESS FULL| T1 | 262K| 8192K| 281 (10)| 00:00:04 | -------------------------------------------------------------------------- 代价为281比310笑了10%因为pctfree默认为10。
四、使用压缩存储的新特性 alter table t1 compress; alter table t1 move tablespace users; analyze table T1 compute statistics; select * from t1; 执行计划 ---------------------------------------------------------- Plan hash value: 3617692013
-------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 262K| 8192K| 97 (27)| 00:00:02 | | 1 | TABLE ACCESS FULL| T1 | 262K| 8192K| 97 (27)| 00:00:02 | -------------------------------------------------------------------------- 代价为97因为压缩了数据在同一个数据块内复用了减少了存储空间。 但带来的负面影响是当我们update的时候表会暴涨比不压缩还大而且普通的 插入不能压缩只有在直接加载的时候才会有压缩的特性参考网站内的压缩表文章。
五、使用并行查询来提高全表扫描的性能。 SQL select /* full(t1) parallel(t1 16) */ * from t1;
执行计划 ---------------------------------------------------------- Plan hash value: 2494645258
----------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib |
--------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 262K| 8192K | 7 (29)| 00:00:01 | | | | | 1 | PX COORDINATOR | | | | | | | | | | 2 | PX SEND QC (RANDOM)|:TQ10000 |262K|8192K| 7 (29)| 00:00:01 | Q1,00 | P-S | QC (RAND) | | 3 | PX BLOCK ITERATOR | | 262K| 8192K | 7 (29)| 00:00:01 | Q1,00 | PCWC | | | 4 | TABLE ACCESS FULL| T1 | 262K| 8192K| 7 (29)| 00:00:01 | Q1,00 | PCWP | |
----------------------------------------------------------------------------------------------- 代价为7比原来的544小了近百倍。效果明显。
六、修改db_file_multiblock_read_count参数使每次的i/o尽量多读数据块也会提高全表扫描性能。
SQL conn / as sysdba 已连接。 SQL alter system set db_file_multiblock_read_count1;
系统已更改。
SQL startup force 重新启动数据库
SQL conn scott/tiger 已连接。 SQL set autot trace expl SQL select * from t1;
执行计划 ---------------------------------------------------------- Plan hash value: 3617692013
-------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 262K| 8192K| 419 (7)| 00:00:06 | | 1 | TABLE ACCESS FULL| T1 | 262K| 8192K| 419 (7)| 00:00:06 | --------------------------------------------------------------------------
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81985.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!