有些用户会有这样的疑问,我以文件形式(不管是GDB还是Shapefile)都是有物理大小的,但是我怎么知道在ArcSDE数据库里面存储某个图层的物理大小,以及相关的索引大小? 关于ArcSDE内部的索引机制可以参考 http://blog.csdn.net/linghe301/archive/2011/03/23/
有些用户会有这样的疑问,我以文件形式(不管是GDB还是Shapefile)都是有物理大小的,但是我怎么知道在ArcSDE数据库里面存储某个图层的物理大小,以及相关的索引大小?
关于ArcSDE内部的索引机制可以参考
http://blog.csdn.net/linghe301/archive/2011/03/23/6269847.aspx
举个例子:假如我查询一个要素类名称为:FW2的图层
1:查询该图层的属性索引名称
SQL> select index_name from user_indexes where table_name='FW2';
INDEX_NAME
------------------------------
R541_SDE_ROWID_UK
SYS_IL0000085622C00027$
A372_IX1
由上面可以获得R541_SDE_ROWID_UK为属性索引名称
2:查询该属性索引的存储大小
SQL> select bytes from user_segments where segment_name='R541_SDE_ROWID_UK';
BYTES
----------
393216
SQL> select bytes/1024/1024 as property_Index_MB from user_segments where segment_name='R541_SDE_ROWID_UK';
PROPERTY_INDEX_MB
-----------------
.375
3:查询该图层的存储大小
SQL> select bytes/1024/1024 as table_MB from user_segments where segment_name='FW2';
TABLE_MB
----------
6
SQL> select bytes from user_segments where segment_name='FW2';
BYTES
----------
6291456
4:查询空间索引的存储大小
首先获得该图层的geom_id
SQL> select geom_id from sde.st_geometry_columns where table_name='FW2';
GEOM_ID
----------
440
根据该ID获得空间索引的名称,一般空间索引名称以'S$_IX1'
SQL> select bytes/1024/1024 as SpatialIndex_MB from user_segments where segment_name='S440$_IX1'
SpatialIndex_MB
----------
4
SQL> select bytes as SpatialIndex_MB from user_segments where segment_name='S440$_IX1';
SpatialIndex_MB
----------
4194304
本文原创发布php中文网,转载请注明出处,感谢您的尊重!