zoukankan      html  css  js  c++  java
  • SDE的性能取决于

    自:http://bbs.esrichina-bj.cn/ESRI/thread-16241-1-1.html SDE的性能取决于: 首先操作系统的性能;其次是Oracle的性能,再次是SDE的性能。 第一:操作系统,无非是内存、CPU、带宽等。 可以有待提高的地方:第一、硬件升级; 第二、磁盘速度,用RAID集中存储会比服务器硬盘速度快。 第三、做LB,负载均衡。比如可以用Orcle RAC。 第二:Oracle的性能 Oracle可以调优的地方就太多了,有时数据库服务器本身硬件很好,但是oracle的参数设置不够好,Oracle也不能很好地发挥服务器的硬件性能。 我本身对Oracle只是入门水平,也就简单地给点建议: 2.1、OS的参数设置 内核参数名       说明 bufpages       对buffer空间不按静态分配,采用动态分配,使bufpages值随nbuf一起对buffer空间进行动态分配。 create_fastlinks      对HFS文件系统允许快速符号链接, dbc_max_pct       加大最大动态buffer空间所占物理内存的百分比,以满足应用系统的读写命中率的需要。 dbc_min_pct       设置最小动态buffer空间所占物理内存的百分比 desfree       提高开始交换操作的最低空闲内存下限,保障系统的稳定性,防止出现不可预见的系统崩溃(Crash)。 fs_async       允许进行磁盘异步操作,提高CPU和磁盘的利用率 lotsfree       提高系统解除换页操作的空闲内存的上限值,保证应用程序有足够的可用内存空间。 maxdsiz       针对系统数据量大的特点,加大最大数据段的大小,保证应用的需要。(32位) Maxdsiz_64bit      maximumprocess data segment size for 64_bit Maxssiz       加大最大堆栈段的大小。(32_bit) maxssiz_64bit      加大最大堆栈段的大小(64_bit) Maxtsiz       提高最大代码段大小,满足应用要求 maxtsiz_64bit      原值过大,应调小 Minfree       提高停止交换操作的自由内存的上限 Shmem       允许进行内存共享,以提高内存的利用率。 Shmmax       设置最大共享内存段的大小,完全满足目前的需要。 Timeslice       由于系统的瓶颈主要反映在磁盘I/O上,因此 降低时间片的大小,一方面可避免因磁盘I/O不畅造成CPU的等待,从而提高了CPU的综合利用率。另一方面减少了进程的阻塞量。 unlockable_mem      提高了不可锁内存的大小,使可用于换页和交换的内存空间扩大,用以满足系统对内存管理的要求。 2.2、Oracle的竞争 让我们来回顾一下设置对象存储参数的一些常见规则: A、经常将pctused设置为可以接收一条新行。对于不能接受一行的freeblocks对于我们来说是没有用的。如果这样做,将会令Oracle的性能变慢,因为Oracle将在扩展表来得到一个空的块之前,企图读取5个"dead"的freeblock。 B、表格中chained rows的出现意味着pctfree太低或者是db_block_size太少。在很多情况下,RAW和LONGRAW列都很巨大,以至超过了Oracle的最大块的大小,这时chained rows是不可以避免的。 C、如果一个表有同时插入的SQL语句,那么它需要有同时删除的语句。运行单一个一个清除的工作将会把全部的空闲块放到一个freelist中,而没有其它包含有任何空闲块的freelists出现。 D、freelist参数应该设置为表格同时更新的最大值。例如,如果在任何时候,某个表最多有20个用户执行插入的操作,那么该表的参数应该设置为freelists=20。 应 记住的是freelist groups参数的值只是对于Oracle Parallel Server和Real ApplicationClusters才是有用的。对于这类Oracle,freelist groups应该设置为访问该表格的Oracle ParallelServer实例的数目。 2.3、其他常用参数 1)、包括SGA区(系统全局区):系统全局区(SGA)是一个分配给Oracle 的包含一个 Oracle实例的数据库的控制信息内存段。 主要包括数据库高速缓存(the database buffer cache), 重演日志缓存(the redo log buffer), 共享池(the shared pool), 数据字典缓存(the data dictionary cache)以及其它各方面的信息 2)、db_block_buffers(数据高速缓冲区)访问过的数据都放在这一片内存区域,该参数越大,Oracle在内存中找到相同数据的可能性就越大,也即加快了查询速度。 3)、share_pool_size (SQL共享缓冲池):该参数是库高速缓存和数据字典的高速缓存。 4)、Log_buffer (重演日志缓冲区) 5)、sort_area_size(排序区) 6)、processes (同时连接的进程数) 7)、 db_block_size(数据库块大小):Oracle默认块为2KB,太小了,因为如果我们有一个8KB的数据,则2KB块的数据库要读4次盘,才 能读完,而8KB块的数据库只要1次就读完了,大大减少了I/O操作。数据库安装完成后,就不能再改变db_block_size的值了,只能重新建立数 据库并且建库时,要选择手工安装数据库。 8)、open_links (同时打开的链接数) 9)、dml_locks 10)、open_cursors (打开光标数) 11)、dbwr_io_slaves (后台写进程数) 第三 就是SDE的性能 3.1、ESRI要求安装SDE for Oracle时的一些推荐参数设置。 A、Control files 对于Oracle来说至少需要有三份Control Files。分布在物理分离的磁盘上。 B、Redo logs ESRI要求Oracle数据库至少有3份redo logs。ESRI 建议不要使用NONARCHIVELOG作为默认的log类别. C、SYSTEM tablespace 把system表空间存储在一个低-中等活动的磁盘上。不要用System表空间作为数据存储空间, 同时也不要用SDE表空间存储空间数据。 D、Undo tablespace 对于多版本地理数据库来说,需要增大undo_pool的大小;或者新建一个独立的roolback tablespace。 E、Temp tablespace 把temp空间和一些高IO的表空间放在一起。 3.2、数据文件位置 A、 redo log 文件  -- 独立的磁盘 B、 undo tablespace 与redo log 文件分离 频繁的操作 C、 system tablespace 中-低 IO操作,与其他高IO的文件放置在一起. D、 按照预定的IO程度,放置ArcSDE的Table 和INDEX表空间. E、 Spatial Index Table 根本不读取table 只读取Index. 3.3、创建SDE过程中的参数 1.       设置oracle的db_block_size为 16kb; 2.       创建业务表的存储表空间,和index的存储表空间,注意 一定一定 要分离 index表空间 和table 表空间到不同的物理磁盘上; 3.       修改dbtune.sde参数; 4.       SDE 用户的的log文件,如果设置sessionlogpoolsize大于0的话,就会创建sde的log 文件。 5.       设置oracle的memory 首先 内存不能swap ; 其次 SGA不能超过RAM的2/3 .High degree of paging 是GPA过大的结果; 6.       Swap space (Virtual Memory) Swap space至少是3-4倍于RAM. 7.       Redo log buffer 如果cpu少于4个,则设置512kb*cpu个数,否则设置128kb*cpu个数 测试:Select name,value from v$sysstat where name in(‘redoentries’,’redo log space requests’) 如果比值大于1:5000 则需要增加redo logbuffer 的数值.        Shared pool 一般设置16Mb 可以适应大多数的应用。esri 推荐设置成128MB 或 200MB.        Buffer cache SGA_memory = RAM *0.66 Buffer_cache = (SGA_memory-(share_pool size +log_buffersize))*0.9 Db_block_buffer = Buffer_cache/ Db_block_size; Esri 推荐至少是16kb        设置PGA空间 设置 workarea_size_policy =auto Pga_aggregate_target = RAM *0.16        如果数据库服务器只运行一个instance 设置 pre_sage_pga=true;        可选择:安装oracle startup trigger $SDEHOME/tools/oracle arcsde_database_startup.sql 清除由于系统        创建ArcSDE数据库时一定要用OLTP 模板,不能使用数据仓库模板。 8、更新 sde featrue class 的stastistics 在catalog 中 右键 analyze 分析 图层; Command line : Sdetable –o update_dbms_stats – t –m compute –u –p 3.4、Dbtune.sde 的参数 默认情况下 index表空间 与table表空间相同。 修改的话,直接修改,再导入即可。 如 对于一个 feature class 的存储参数为: B_STORAGE         "PCTFREE 0INITRANS 4" #               TABLESPACE  <default business table tablespacename> 修改成 B_STORAGE         "PCTFREE 0INITRANS 4" TABLESPACE   ndextablespace 对于一个 feature class 来说,导入ArcSDE数据库后,会产生3个table 和7个index。至于这些表的结构和日后的使用,我在这里不做太多介绍。但是对于图象显示来讲,S表的大小起到了至关重要的作用。   3.4、空间索引的重建 我们知道SDE存储空间图形的方式为,Binery方式直接存储。 这样对于一个 S 表,里面以feature ID 为序列,存储着构成这个Feature ID 的所有切割图形。 这里面涉及到的一个问题就是 这个所谓的(Grid Size)切割比例,到底用多大的比例来切割存储才能达到最好的数据库效果。 先简单说明一下,这个分隔比例的影响: 如果分隔比例过大,如5000*5000,则一快图象中会存储着多个记录。 缺点1:这样以记录为序的S表,会存储着许多的冗余信息。因为每一个Feature Class均存储了这个图象。 缺点2:在desktop之类客户端软件访问数据库时,有时只需要显示一条记录(放大到记录),此时ArcSDE必须把一个大的图形读取出来,再按照该记录的大小进行裁减。也消耗性能。 如果分隔比例过小,如50*50 则同一个feature class中的记录会有很多个图象组成。 缺点1:分隔比例小,导致每个记录均由多个图象组成,大大增加了数据库存储的记录数,增大了存储空间。 缺点2:分隔比例小,在显示一个记录时,需要读取多条记录,再拼接在一起进行显示。 综上所讲,无论过大,或者过小 都会影响存储和性能。 在使用ArcCatalog或者SDE 命令行导入数据时,ArcCatalog或SDE会自动计算出一个合适的分隔存储比例。这个默认的比例一般情况下会比较合适,但因为ArcSDE支持三级分隔比例。如果只使用一个默认的分隔比例,ArcSDE性能不会最佳。 在以下的情况下,会产生问题: A、feature class 中的所有记录大小不一致时。B、大范围的记录时(如河流、道路、边框) 首先,如果记录大小不一,计算出来的分隔比例总是不能达到最优。 另外,对于大范围的记录,默认分隔比例过小。会导致 Feature Class is read-only mode。图层不再可读。 通过ArcCatalog可以修改Grid Size 的大小。 在《arcsde configuration guide for oracle 》 中详细介绍了 gridsize的设置和调整。另外, 《The Role of Grid Size Optimization in ArcSDE PerformanceTuning》 http://gis.esri.com/library/userconf/proc05/papers/pap1858.pdf 也会有所帮助。 完。 ps。说起来简单,做起来很难。我做过的尝试有: 1、由RAID代替服务器硬盘; 2、设置LDAP、dbblock-size 等esri推荐的oracle参数; 3、分离table 和index 表空间; 4、重新设置grid size。 另外,如果使用ArcIMS的话,可以用application server 集群和 多spatial server来提高性能。
  • 相关阅读:
    malloc 函数
    如何在Ubuntu 20.04上启用SSH
    E :仓库***没有Release文件
    Invocation of init method failed; nested exception is org.hibernate.HibernateException: could not instantiate RegionFactory [org.hibernate.cache.impl
    发送方IP地址与路由器
    计算机系统到底是个什么东东
    批量创建10个系统帐号,并设置密码(密码为随机数,要求字符和数字等混合(第一种)
    mysql主从复制
    mysql主从复制和读写分离
    系统命令大全
  • 原文地址:https://www.cnblogs.com/adodo1/p/4327214.html
Copyright © 2011-2022 走看看