当前位置: 首页 > 编程日记 > 正文

[20180317]12c TABLE ACCESS BY INDEX ROWID BATCHED2.txt

[20180317]12c TABLE ACCESS BY INDEX ROWID BATCHED2.txt

--//简单探究12c TABLE ACCESS BY INDEX ROWID BATCHED特性.
--//当使用12c时,执行计划出现TABLE ACCESS BY INDEX ROWID BATCHED,做一些探究.
--//本文主要探究如何使用提示或者隐含参数控制这种特性.

1.环境:

SCOTT@test01p> @ ver1
PORT_STRING                    VERSION        BANNER                                                                               CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0           12.1.0.1.0     Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0

SCOTT@test01p> show array
arraysize 200

SCOTT@test01p> create table t as select * from all_objects order by  DBMS_RANDOM.random;
Table created.

SCOTT@test01p> create index i_t_object_id on t(object_id);
Index created.

--//分析.
execute sys.dbms_stats.gather_table_stats ( OwnName => nvl('',user),TabName => 't',Estimate_Percent => NULL,Method_Opt => 'FOR ALL COLUMNS SIZE 1 ',Cascade => True ,No_Invalidate => false)

SCOTT@test01p> select rowid ,owner from t where object_id  between  1 and 10;
ROWID              OWNER
------------------ --------------------
AAAaKPAAJAAAAY7AAE SYS
AAAaKPAAJAAAAaWAAP SYS
AAAaKPAAJAAAARtAAd SYS
AAAaKPAAJAAAAK5AAw SYS
AAAaKPAAJAAAAbGAAV SYS
AAAaKPAAJAAAAIFAAK SYS
AAAaKPAAJAAAASIAAB SYS
AAAaKPAAJAAAAMIAAQ SYS
AAAaKPAAJAAAAOMAAp SYS
9 rows selected.

SCOTT@test01p> select data_object_id,object_id from dba_objects where owner=user and object_name='T';
DATA_OBJECT_ID  OBJECT_ID
-------------- ----------
        107151     107151

--//看看那些参数可以控制取消TABLE ACCESS BY INDEX ROWID BATCHED特性.

2.测试:
--//通过隐含参数_optimizer_batch_table_access_by_rowid可以改变执行计划.
SYS@test> @ hide _optimizer_batch_table_access_by_rowid
NAME                                     DESCRIPTION                              DEFAULT_VALUE SESSION_VALUE SYSTEM_VALUE
---------------------------------------- ---------------------------------------- ------------- ------------- ------------
_optimizer_batch_table_access_by_rowid   enable table access by ROWID IO batching TRUE          TRUE          TRUE

SCOTT@test01p> alter session set statistics_level=all;
Session altered.

SCOTT@test01p> select rowid ,owner from t where object_id  between  1 and 10;
ROWID              OWNER
------------------ -----
AAAaKPAAJAAAAY7AAE SYS
AAAaKPAAJAAAAaWAAP SYS
AAAaKPAAJAAAARtAAd SYS
AAAaKPAAJAAAAK5AAw SYS
AAAaKPAAJAAAAbGAAV SYS
AAAaKPAAJAAAAIFAAK SYS
AAAaKPAAJAAAASIAAB SYS
AAAaKPAAJAAAAMIAAQ SYS
AAAaKPAAJAAAAOMAAp SYS
9 rows selected.

SCOTT@test01p> @ dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID  anscphj6zbgpn, child number 0
-------------------------------------
select rowid ,owner from t where object_id  between  1 and 10
Plan hash value: 2683697726
---------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                   | Name          | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |
---------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |               |      1 |        |       |    10 (100)|          |      9 |00:00:00.01 |      12 |
|   1 |  TABLE ACCESS BY INDEX ROWID| T             |      1 |      8 |   184 |    10   (0)| 00:00:01 |      9 |00:00:00.01 |      12 |
|*  2 |   INDEX RANGE SCAN          | I_T_OBJECT_ID |      1 |      8 |       |     2   (0)| 00:00:01 |      9 |00:00:00.01 |       3 |
---------------------------------------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
   1 - SEL$1 / T@SEL$1
   2 - SEL$1 / T@SEL$1
Predicate Information (identified by operation id):
---------------------------------------------------
   2 - access("OBJECT_ID">=1 AND "OBJECT_ID"<=10)

--//现在执行使用TABLE ACCESS BY INDEX ROWID.顺便测试10046事件的跟踪情况.

SCOTT@test01p> alter system flush buffer_cache ;
System altered.

@ 10046on 12
select rowid ,owner from t where object_id  between  1 and 10;
@ 10046off

--//转储文件:
=====================
PARSING IN CURSOR #180365864 len=61 dep=0 uid=109 oct=3 lid=109 tim=1785413706 hv=1307950772 ad='7ff1292e768' sqlid='anscphj6zbgpn'
select rowid ,owner from t where object_id  between  1 and 10
END OF STMT
PARSE #180365864:c=62400,e=231012,p=15,cr=141,cu=0,mis=1,r=0,dep=0,og=1,plh=2683697726,tim=1785413704
EXEC #180365864:c=0,e=45,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=2683697726,tim=1785413932
WAIT #180365864: nam='SQL*Net message to client' ela= 7 driver id=1413697536 #bytes=1 p3=0 obj#=665 tim=1785414043
WAIT #180365864: nam='db file sequential read' ela= 14145 file#=9 block#=363 blocks=1 obj#=107152 tim=1785428269
WAIT #180365864: nam='db file sequential read' ela= 315 file#=9 block#=364 blocks=1 obj#=107152 tim=1785428826
WAIT #180365864: nam='db file sequential read' ela= 5921 file#=9 block#=1595 blocks=1 obj#=107151 tim=1785434811
FETCH #180365864:c=0,e=20917,p=3,cr=3,cu=0,mis=0,r=1,dep=0,og=1,plh=2683697726,tim=1785435009
WAIT #180365864: nam='SQL*Net message from client' ela= 594 driver id=1413697536 #bytes=1 p3=0 obj#=107151 tim=1785435681
WAIT #180365864: nam='db file sequential read' ela= 7635 file#=9 block#=1686 blocks=1 obj#=107151 tim=1785443416
WAIT #180365864: nam='SQL*Net message to client' ela= 5 driver id=1413697536 #bytes=1 p3=0 obj#=107151 tim=1785443628
WAIT #180365864: nam='db file sequential read' ela= 17772 file#=9 block#=1133 blocks=1 obj#=107151 tim=1785461472
WAIT #180365864: nam='db file sequential read' ela= 6360 file#=9 block#=697 blocks=1 obj#=107151 tim=1785468019
WAIT #180365864: nam='db file sequential read' ela= 276 file#=9 block#=1734 blocks=1 obj#=107151 tim=1785468533
WAIT #180365864: nam='db file sequential read' ela= 6200 file#=9 block#=517 blocks=1 obj#=107151 tim=1785474873
WAIT #180365864: nam='db file sequential read' ela= 10777 file#=9 block#=1160 blocks=1 obj#=107151 tim=1785485815
WAIT #180365864: nam='db file sequential read' ela= 11727 file#=9 block#=776 blocks=1 obj#=107151 tim=1785497741
WAIT #180365864: nam='db file sequential read' ela= 11447 file#=9 block#=908 blocks=1 obj#=107151 tim=1785509403
FETCH #180365864:c=0,e=73927,p=8,cr=9,cu=0,mis=0,r=8,dep=0,og=1,plh=2683697726,tim=1785509674
STAT #180365864 id=1 cnt=9 pid=0 pos=1 obj=107151 op='TABLE ACCESS BY INDEX ROWID T (cr=12 pr=11 pw=0 time=94758 us cost=10 size=184 card=8)'
STAT #180365864 id=2 cnt=9 pid=1 pos=1 obj=107152 op='INDEX RANGE SCAN I_T_OBJECT_ID (cr=3 pr=2 pw=0 time=14819 us cost=2 size=0 card=8)'

*** 2018-03-17 19:56:06.875
WAIT #180365864: nam='SQL*Net message from client' ela= 3228967 driver id=1413697536 #bytes=1 p3=0 obj#=107151 tim=1788738943
CLOSE #180365864:c=0,e=11,dep=0,type=0,tim=1788739114
=====================

--//可以看到IO的等待事件全是'db file sequential read'.没有'db file parallel read'.

3.测试二:
--//使用NO_BATCH_TABLE_ACCESS_BY_ROWID提示.
SCOTT@test01p> @ sqlhint BATCH_TABLE_ACCESS_BY_ROWID
NAME                           SQL_FEATURE     CLASS                       INVERSE                        TARGET_LEVEL PROPERTY VERSION  VERSION_OUTLINE CON_ID
------------------------------ --------------- --------------------------- ------------------------------ ------------ -------- -------- --------------- ------
BATCH_TABLE_ACCESS_BY_ROWID    QKSFM_EXECUTION BATCH_TABLE_ACCESS_BY_ROWID NO_BATCH_TABLE_ACCESS_BY_ROWID            4      272 12.1.0.1 12.1.0.1             0
NO_BATCH_TABLE_ACCESS_BY_ROWID QKSFM_EXECUTION BATCH_TABLE_ACCESS_BY_ROWID BATCH_TABLE_ACCESS_BY_ROWID               4      272 12.1.0.1 12.1.0.1             0

---//重新登录,取消参数隐含参数_optimizer_batch_table_access_by_rowid设置,执行如下:

SCOTT@test01p> select /*+ NO_BATCH_TABLE_ACCESS_BY_ROWID */ rowid ,owner from t where object_id  between  1 and 10;

SCOTT@test01p> @ dpc '' outline
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID  9c0n73wph7xax, child number 0
-------------------------------------
select /*+ NO_BATCH_TABLE_ACCESS_BY_ROWID */ rowid ,owner from t where
object_id  between  1 and 10
Plan hash value: 2044526593
-----------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                           | Name          | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |
-----------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                    |               |      1 |        |       |    10 (100)|          |      9 |00:00:00.01 |      12 |
|   1 |  TABLE ACCESS BY INDEX ROWID BATCHED| T             |      1 |      8 |   184 |    10   (0)| 00:00:01 |      9 |00:00:00.01 |      12 |
|*  2 |   INDEX RANGE SCAN                  | I_T_OBJECT_ID |      1 |      8 |       |     2   (0)| 00:00:01 |      9 |00:00:00.01 |       3 |
-----------------------------------------------------------------------------------------------------------------------------------------------

Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------

   1 - SEL$1 / T@SEL$1
   2 - SEL$1 / T@SEL$1

Outline Data
-------------

  /*+
      BEGIN_OUTLINE_DATA
      IGNORE_OPTIM_EMBEDDED_HINTS
      OPTIMIZER_FEATURES_ENABLE('12.1.0.1')
      DB_VERSION('12.1.0.1')
      ALL_ROWS
      OUTLINE_LEAF(@"SEL$1")
      INDEX_RS_ASC(@"SEL$1" "T"@"SEL$1" ("T"."OBJECT_ID"))
      BATCH_TABLE_ACCESS_BY_ROWID(@"SEL$1" "T"@"SEL$1")
      END_OUTLINE_DATA
  */

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("OBJECT_ID">=1 AND "OBJECT_ID"<=10)
--//可以发现这样使用提示并不生效,实际上还是TABLE ACCESS BY INDEX ROWID BATCHED.不过看Outline Data就知道提示的方法,要写成如下:

select /*+ NO_BATCH_TABLE_ACCESS_BY_ROWID(@"SEL$1" "T"@"SEL$1") */ rowid ,owner from t where object_id  between  1 and 10;
select /*+ NO_BATCH_TABLE_ACCESS_BY_ROWID(t) */ rowid ,owner from t where object_id  between  1 and 10;

SCOTT@test01p> @ dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID  7y2913wgp3t1b, child number 0
-------------------------------------
select /*+ NO_BATCH_TABLE_ACCESS_BY_ROWID(t) */ rowid ,owner from t
where object_id  between  1 and 10

Plan hash value: 2683697726

---------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                   | Name          | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |
---------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |               |      1 |        |       |    10 (100)|          |      9 |00:00:00.01 |      12 |
|   1 |  TABLE ACCESS BY INDEX ROWID| T             |      1 |      8 |   184 |    10   (0)| 00:00:01 |      9 |00:00:00.01 |      12 |
|*  2 |   INDEX RANGE SCAN          | I_T_OBJECT_ID |      1 |      8 |       |     2   (0)| 00:00:01 |      9 |00:00:00.01 |       3 |
---------------------------------------------------------------------------------------------------------------------------------------

Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------

   1 - SEL$1 / T@SEL$1
   2 - SEL$1 / T@SEL$1

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("OBJECT_ID">=1 AND "OBJECT_ID"<=10)

--//执行计划变为TABLE ACCESS BY INDEX ROWID.

--//顺便更正我以前一个错误的观点,一直以为执行计划选择TABLE ACCESS BY INDEX ROWID BATCHED逻辑读会减少,实际上不会变化,
--//因为输出的结果集顺序没有发生变化.可以看到最后的逻辑读都是一样的12.
--//我以前错误的理解确定读取扫描的数据块,然后输出满足条件的结果.实际上还是按照索引的顺序读取键值以及rowid,再读取数据块.
--//TABLE ACCESS BY INDEX ROWID BATCHED仅仅变成了db file parallel read,而且读取的数据块是按照顺序读取,并且是不连续的块,
--//最大127块(当然数据块不在缓存的情况下).

--//在看看如下例子:

SCOTT@test01p> select /*+ index(t)  */ rowid ,owner,object_id from t where object_id  between  1 and 520;
..

PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID  53r6yurs7jnk8, child number 0
-------------------------------------
select /*+ index(t)  */ rowid ,owner,object_id from t where object_id between  1 and 520
Plan hash value: 2044526593
-----------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                           | Name          | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |
-----------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                    |               |      1 |        |       |   437 (100)|          |    474 |00:00:00.01 |     479 |
|   1 |  TABLE ACCESS BY INDEX ROWID BATCHED| T             |      1 |    435 | 10005 |   437   (0)| 00:00:01 |    474 |00:00:00.01 |     479 |
|*  2 |   INDEX RANGE SCAN                  | I_T_OBJECT_ID |      1 |    435 |       |     2   (0)| 00:00:01 |    474 |00:00:00.01 |       5 |
-----------------------------------------------------------------------------------------------------------------------------------------------

SCOTT@test01p> select /*+ index(t) NO_BATCH_TABLE_ACCESS_BY_ROWID(t) */ rowid ,owner,object_id from t where object_id  between  1 and 520;
...
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID  3kf824wz4rdk5, child number 0
-------------------------------------
select /*+ index(t) NO_BATCH_TABLE_ACCESS_BY_ROWID(t) */ rowid ,owner,object_id from t where object_id  between  1 and 520
Plan hash value: 2683697726
---------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                   | Name          | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |
---------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |               |      1 |        |       |   437 (100)|          |    474 |00:00:00.01 |     479 |
|   1 |  TABLE ACCESS BY INDEX ROWID| T             |      1 |    435 | 10005 |   437   (0)| 00:00:01 |    474 |00:00:00.01 |     479 |
|*  2 |   INDEX RANGE SCAN          | I_T_OBJECT_ID |      1 |    435 |       |     2   (0)| 00:00:01 |    474 |00:00:00.01 |       5 |
---------------------------------------------------------------------------------------------------------------------------------------

--//可以发现逻辑读479.两种情况都是一样的.只有参数array以及索引的群集因子才可能改变逻辑读的数量.这里的数据太离散,改变array效果不会太大.

SCOTT@test01p> set array 300
SCOTT@test01p> select /*+ index(t)  */ rowid ,owner,object_id from t where object_id  between  1 and 520;
..

Plan hash value: 2044526593
-----------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                           | Name          | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |
-----------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                    |               |      1 |        |       |   437 (100)|          |    474 |00:00:00.01 |     478 |
|   1 |  TABLE ACCESS BY INDEX ROWID BATCHED| T             |      1 |    435 | 10005 |   437   (0)| 00:00:01 |    474 |00:00:00.01 |     478 |
|*  2 |   INDEX RANGE SCAN                  | I_T_OBJECT_ID |      1 |    435 |       |     2   (0)| 00:00:01 |    474 |00:00:00.01 |       4 |
-----------------------------------------------------------------------------------------------------------------------------------------------

--//仅仅减少1个.而且在INDEX RANGE SCAN操作,减少到4个.

--//重新建立表按照object_id导入:
SCOTT@test01p> create table tx as select * from t order by object_id;
Table created.

SCOTT@test01p> create index i_tx_object_id on tx(object_id);
Index created.

--//分析略.
SCOTT@test01p> set array 200
SCOTT@test01p> show array
arraysize 200

SCOTT@test01p> select /*+ index(t)  */ rowid ,owner,object_id from tx where object_id  between  1 and 520;

Plan hash value: 475430699
------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                           | Name           | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |
------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                    |                |      1 |        |       |    10 (100)|          |    474 |00:00:00.01 |      15 |
|   1 |  TABLE ACCESS BY INDEX ROWID BATCHED| TX             |      1 |    435 | 10005 |    10   (0)| 00:00:01 |    474 |00:00:00.01 |      15 |
|*  2 |   INDEX RANGE SCAN                  | I_TX_OBJECT_ID |      1 |    435 |       |     2   (0)| 00:00:01 |    474 |00:00:00.01 |       5 |
------------------------------------------------------------------------------------------------------------------------------------------------

转载于:https://www.cnblogs.com/lfree/p/8599115.html

相关文章:

Angularjs集成第三方js插件之Uploadify

有时候需要用一些第三方插件&#xff0c;比如datepicker&#xff0c;slider&#xff0c;或者tree等。以前的做法是直接通过jquery取得某个元素&#xff0c;然后调用某个方法即可。但在angularjs中&#xff0c;不能直接这么写&#xff0c;必须写在directive中。 开源项目Angular…

备考12月份电子学会青少年编程能力等级测试(图形化)的公益训练营即将开营

一、考试安排 考试方式 考试形式&#xff1a;在线居家考试&#xff08;全国&#xff09;报名时间&#xff1a;9月26日08:00 ~ 11月23日16:00退费截止时间&#xff1a;11月23日16:00准考证下载时间&#xff1a;11月30日 ~ 考前1天 考前集中测试时间 12月9日&#xff08;周四…

mysql left join超时,MySQL 行锁超时排查方法优化

一、大纲#### 20191219 10:10:10,234 | com.alibaba.druid.filter.logging.Log4jFilter.statementLogError(Log4jFilter.java:152) | ERROR | {conn-10593, pstmt-38675}executeerror.updatexxxsetxxx ? , xxx ?whereRowGuid ?com.mysql.jdbc.exceptions.jdbc4.MySQLTra…

【优秀作业】蚁群优化算法

蚁群优化算法 一&#xff0e;概述 生物学家发现&#xff0c;自然界中的蚁群觅食是一种群体性行为&#xff0c;并非单只蚂蚁自行寻找食物源。蚂蚁在寻找食物源时&#xff0c;会在其经过的路径上释放一种信息素&#xff0c;并能够感知其它蚂蚁释放的信息素。信息素浓度的大小表…

RPC-原理及RPC实例分析

还有就是&#xff1a;RPC支持的BIO,NIO的理解 (1)BIO: Blocking IO;同步阻塞&#xff1b; (2)NIO:Non-Blocking IO&#xff0c; 同步非阻塞; 参考&#xff1a;IO多路复用,同步&#xff0c;异步&#xff0c;阻塞和非阻塞 区别 在学校期间大家都写过不少程序&#xff0c;比如写个…

hdu 4608 I-number

http://acm.hdu.edu.cn/showproblem.php?pid4608 直接暴力 代码&#xff1a; #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<cmath> #include<set> #include<map> #include<stack> #inc…

php tab标签,JavaScript代码分享:tab标签的切换

本文实例讲述了js实现点击切换TAB标签。分享给大家供大家参考。具体如下&#xff1a;这里演示的选项卡效果代码&#xff0c;无jq,纯JS来实现&#xff0c;灰色风格&#xff0c;没有怎么美化&#xff0c;或许看上去比较普通&#xff0c;不过兼容性和操作起来挺舒服的&#xff0c;…

二进制,十进制,十六进制

生活中其实很多地方的计数方法都多少有点不同进制的影子。 比如我们最常用的10进制&#xff0c;其实起源于人有10个指头。如果我们的祖先始终没有摆脱手脚不分的境况&#xff0c;我想我们现在一定是在使用20进制。 至于二进制……没有袜子称为0只袜子&#xff0c;有一只袜子称为…

D3.js系列——初步使用、选择元素与绑定数据

D3 的全称是&#xff08;Data-Driven Documents&#xff09;&#xff0c;顾名思义可以知道是一个被数据驱动的文档。听名字有点抽象&#xff0c;说简单一点&#xff0c;其实就是一个 JavaScript 的函数库&#xff0c;使用它主要是用来做数据可视化的。 D3 提供了各种简单易用的…

秦州:西瓜书 + 南瓜书 吃瓜系列 12. 聚类

Datawhale南瓜书是经典机器学习教材《机器学习》&#xff08;西瓜书&#xff09;的公式推导解析指南&#xff0c;旨在让在学习西瓜书的过程中&#xff0c;再也没有难推的公式&#xff0c;学好机器学习。 航路开辟者&#xff1a;谢文睿、秦州开源内容&#xff1a;https://githu…

php 5/0,PHP 5.5.0 released.该怎么解决

当前位置:我的异常网 PHP PHP 5.5.0 released.该怎么解决PHP 5.5.0 released.该怎么解决www.myexceptions.net 网友分享于&#xff1a;2013-08-02 浏览&#xff1a;12次PHP 5.5.0 released.The PHP development team is proud to announce the immediate availability of PH…

Windows下SVN权限配置过程详解

本节讲解一下Windows下SVN权限配置说明&#xff0c;针对的是一个目录下多库的情况&#xff0c;下面是具体的介绍&#xff0c;希望通过本文的学习&#xff0c;你能够对SVN权限配置问题有更加深刻的认识。 1、本文档适用于对Subvesion的自带服务svnserve进行权限配置&#xff0c;…

胡小明:大数据应用方向思考

一、警惕大数据过热 1.1 过热产生盲目性 国内大数据的宣传早已过热&#xff0c;很多区县级政府也在考虑成立大数据局&#xff0c;政府对大数据热几乎没有抵抗力&#xff0c;企业没有紧跟就对了&#xff0c;在大数据高潮中反省政府的大数据行为、冷静一下头脑是有益的&#xff0…

Datawhale组队学习周报(第040周)

本周报总结了从 11月15日至11月21日&#xff0c;Datawhale组队学习的运行情况&#xff0c;我们一直秉承“与学习者一起成长的理念”&#xff0c;希望这个活动能够让更多的学习者受益。 第 31 期组队学习已经与大家见面了&#xff0c;这次组队学习一共 11 门开源课程&#xff0…

matlab 无序数对,MATLAB中sort函数对矩阵数进行排序

(1)Bsort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,当A为二维时,对数组每一列进行排序.eg: A[1,5,3],则sort(A)[1,3,5]A[1,5,3;2,4,1],则sort(A)[1,4,1;2,5,3](2)Bsort(A,dim),对数组按指定方向进行升序排序,dim 1,表示对每一列进行排序,,dim2表示对每一行进行排序…

云智易获上海CIO联盟“年度物联网云平台技术创新奖”

6月23日&#xff0c;云智易作为国内领先物联网云平台&#xff0c;受邀出席“跨界融合 聚势谋远”上海CIO联盟峰会。本次大会汇聚了全球各地各行业300位精英翘楚&#xff0c;共话未来发展趋势。 在本次大会中&#xff0c;云智易物联云平台凭借强大的技术实力、成熟的平台架构、…

d3d导致cairo不正常

最近要把cairo集成到项目中,却发现cairo不能工作了 折腾了两天才找到了原因:cairo的一个trick导致浮点数计算错误: http://blog.163.com/lvan100yeah/blog/static/6811721420131191434556/ 给d3dcreate加上D3DCREATE_FPU_PRESERVE之后一切正常 如果我直接调cairo的代码就能早点…

青少年编程竞赛交流群周报(第038周)

2021年11月21日&#xff08;周日&#xff09;晚20:00我们在青少年编程竞赛交流群开展了第三十八期直播活动。 一、直播内容 我们直播活动的主要内容如下&#xff1a; 讲解了上次测试中小朋友们做错的题目 Scratch青少年编程能力等级测试模拟题&#xff08;四级&#xff09;。…

php的遍历方法,PHP数组遍历方法总结

在PHP中数组分为两类&#xff1a; 数字索引数组和关联数组。其中数字索引数组和C语言中的数组一样&#xff0c;下标是为0&#xff0c;1&#xff0c;2…而关联数组下标可能是任意类型&#xff0c;与其它语言中的hash&#xff0c;map等结构相似。下面介绍PHP中遍历关联数组的三种…

二、Silverlight中使用MVVM(二)——提高

在第一篇文章中的示例中&#xff0c;我们已经简单的了解了应用MVVM模式的流程&#xff0c;我的本意是你已经了解了一点MVVM的概念&#xff0c;然后又没有一个较好的例子学习&#xff0c;可以跟着我一起学习MVVM模式&#xff0c;所以这个部分&#xff0c;都是没有理论知识的&…

中国电子学会青少年编程能力等级测试图形化四级编程题:太空大战

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100&#xff0c;小马老…

Pycharm开发环境设置与熟悉。

练习基本输入输出&#xff1a; print(你好,{}..format(name)) print(sys.argv) 库的使用方法&#xff1a; import ... from ... import ... 条件语句&#xff1a; if (abs(pos()))<1: break 循环语句&#xff1a; for i in range(5): while True: 函数定义&#xff1a; def …

oracle 默认表空间 10g,Oracle10g 表空间管理

1.表空间分类&#xff1a;(1)临时表空间&#xff1a;存放临时数据(2)数据表空间&#xff1a;又称为用户表空间&#xff0c;用来存放永久数据(不删除永久存在)(3)日志表空间&#xff1a;用来存放日志信息一般情况下&#xff0c;用户使用时只需要创建数据表空间即可&#xff0c;根…

POJ1022 Packing Unit 4D Cubes

题目来源&#xff1a;http://poj.org/problem?id1022 题目大意&#xff1a; 有一些4维的单位体积的立方体盒子&#xff0c;每个立方体有8个面。要用一个大的4为盒子将它们包起来&#xff0c;求最小的大盒子体积。 输入&#xff1a;第一行为测试用例数。每个用例的第一行为单位…

中国电子学会青少年编程能力等级测试图形化三级编程题:海底寻宝

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100&#xff0c;小马老…

用Ajax请求服务器的图片,并显示在浏览器中(转)

前言 一直在数据库里面存的都是图片在服务器的地址&#xff0c;然后再到浏览器中显示&#xff0c;但是发现两个问题 第一&#xff1a;为了安全起见&#xff0c;js是无法读取本地的图片的&#xff0c;不然你写一个js&#xff0c;岂不是可以获取任何人电脑里面的文件了。 第二&am…

pb设置Oracle事务的隔离级别,Oracle的事务隔离级别

ANSI/ISO SQL规定了四种事务隔离级别&#xff0c;分别是&#xff1a;read uncommitted,read committed,repeatable read,serializableORACE提供了SQ92标准中的read committed和seriaizabe&#xff0c;同时提供了非SQ92标准的read-ony。read committed&#xff1a;这是ORACE缺省…

inux php pdo mysql 扩展

今天在本机部署了一个pdo项目&#xff0c;发现一些问题&#xff0c;真没想到pdo mysql&#xff0c;不容易装啊&#xff0c;哈哈&#xff0c;我说的不容易&#xff0c;是因为php5.3以前版本&#xff0c;yum源里面根本没有。部署后就报&#xff0c;Undefined class constant MYSQ…

Maven项目Spring Boot启动

1. pom.xml中增加配置 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.0.RELEASE</version></parent><dependencies><dependency><gr…

中国电子学会青少年编程能力等级测试图形化四级模拟题

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100&#xff0c;小马老…