中国联通北六省融合项目应用性能与安全开发建议v(编辑修改稿)内容摘要:
建议 14 数据不能被恢复 .因此很少的资源被调用 ,执行时间也会很短 . . 降低数据库竞争优化 ( 建议) 尽量多使用 COMMIT 只要有可能 ,在程序中尽量多使用 COMMIT, 这样程序的性能得到提高 ,需求也会因为 COMMIT 所释放的资源而减少 . COMMIT 所释放的资源 : 回滚段上用于恢复数据的信息。 被程序语句获得的锁 redo log buffer 中的空间 ORACLE 为管理上述 3 种资源中的内部花费 . 用 Where子句替换 HAVING子句 (建议) 避免使用 HAVING 子句 , HAVING 只会在检索出所有记录之后才对结果集进行过滤 . 这个处理需要排序 ,总计等操作 . 如果能通过 WHERE子句限制记录的数目 ,那就能减少这方面的开销 . 例如 : 低效 : SELECT REGION, AVG(LOG_SIZE) FROM LOCATION GROUP BY REGION HAVING REGION != ‘SYDNEY39。 AND REGION != ‘PERTH39。 高效 SELECT REGION, AVG(LOG_SIZE) FROM LOCATION WHERE REGION != ‘SYDNEY39。 AND REGION != ‘PERTH39。 GROUP BY REGION 北六融合项目应用性能与安全开发建议 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 北六融合项目应用性能与安全开发建议 16 SET (EMP_CAT, SAL_RANGE) = (SELECT MAX(CATEGORY) , MAX(SAL_RANGE) FROM EMP_CATEGORIES) WHERE EMP_DEPT = 0020。 . 通过内部函数提高 SQL效率 (建议 ) SELECT ,COUNT(*) FROM HISTORY_TYPE T,EMP E,EMP_HISTORY H WHERE = AND = GROUP BY ,。 通过调用下面的函数可以提高效率 . FUNCTION LOOKUP_HIST_TYPE(TYP IN NUMBER) RETURN VARCHAR2 AS TDESC VARCHAR2(30)。 CURSOR C1 IS SELECT TYPE_DESC FROM HISTORY_TYPE WHERE HIST_TYPE = TYP。 BEGIN OPEN C1。 FETCH C1 INTO TDESC。 CLOSE C1。 RETURN (NVL(TDESC,39。 ?39。 ))。 END。 北六融合项目应用性能与安全开发建议 17 FUNCTION LOOKUP_EMP(EMP IN NUMBER) RETURN VARCHAR2 AS ENAME VARCHAR2 (30)。 CURSOR C1 IS SELECT ENAME FROM EMP WHERE EMPNO=EMP。 BEGIN OPEN C1。 FETCH C1 INTO ENAME。 CLOSE C1。 RETURN (NVL(ENAME,39。 ?39。 ))。 END。 SELECT ,LOOKUP_EMP(), ,LOOKUP_HIST_TYPE(),COUNT(*) FROM EMP_HISTORY H GROUP BY ,。 . 使用表的别名 (Alias)(严格执行 ) 当在 SQL 语句中连接多个表时 , 请使用表的别名并把别名前缀于每个 Column上 .这样一来 ,就可以减少解析的时间并减少那些由 Column 歧义引起的语法错误 . (译者注 : Column歧义指的是由于 SQL中不同的表具有相同的 Column名 ,当 SQL语句中出现这个 Column 时 ,SQL 解析器无法判断这个 Column 的归属 ) 北六融合项目应用性能与安全开发建议 18 . 用 EXISTS替代 IN(强烈建议 ) 在许多基于基础表的查询中 ,为了满足一个条件 ,往往需要对另一个表进行联接 .在这种情况下 , 使用 EXISTS(或 NOT EXISTS)通常将提高查询的效率 . 低效 : SELECT * FROM EMP (基础表 ) WHERE EMPNO 0 AND DEPTNO IN (SELECT DEPTNO FROM DEPT WHERE LOC = ‘MELB39。 ) 高效 : SELECT * FROM EMP (基础表 ) WHERE EMPNO 0 AND EXISTS (SELECT ‘X39。 FROM DEPT WHERE = AND LOC = ‘MELB39。 ) (译者按 : 相对来说 ,用 NOT EXISTS 替换 NOT IN 将更显著地提高效率 ,下一节中将指出 ) . 用 NOT EXISTS 替代 NOT IN(严格要求 ) 在子查询中 ,NOT IN 子句将执行一个内部的排序和合并 . 无论在哪种情况下 ,NOT IN都是最低效的 (因为它对子查询中的表执行了一个全表遍历 ). 为了避免使用 NOT IN ,我们可以把它改写成外连接 (Outer Joins)或 NOT EXISTS. 北六融合项目应用性能与安全开发建议 19 例如 : SELECT „ FROM EMP WHERE DEPT_NO NOT IN (SELECT DEPT_NO FROM DEPT WHERE DEPT_CAT=39。 A39。 )。 为了提高效率 .改写为 : (方法一 : 高效 ) SELECT „. FROM EMP A,DEPT B WHERE = (+) AND IS NULL AND (+) = ‘A39。 (方法二 : 最高效 ) SELECT „. FROM EMP E WHERE NOT EXISTS (SELECT ‘X39。 FROM DEPT D WHERE = AND DEPT_CAT = ‘A39。 )。 . 用表连接替换 EXISTS(建议) 通常来说 , 采用表连接的方式比 EXISTS 更有效率 SELECT ENAME FROM EMP E WHERE EXISTS (SELECT ‘X39。 FROM DEPT 北六融合项目应用性能与安全开发建议 20 WHERE DEPT_NO = AND DEPT_CAT = ‘A39。 )。 (更高效 ) SELECT ENAME FROM DEPT D,EMP E WHERE = AND DEPT_CAT = ‘A39。 (译者按 : 在 RBO 的情况下 ,前者的执行路径包括 FILTER,后者使用 NESTED LOOP) . 用 EXISTS替换 DISTINCT(建议 ) 当提交一个包含一对多表信息 (比如部门表和雇员表 )的查询时 ,避免在 SELECT子句中使用 DISTINCT. 一般可以考虑用 EXIST 替换 例如 : 低效 : SELECT DISTINCT DEPT_NO,DEPT_NAME FROM DEPT D,EMP E WHERE = 高效 : SELECT DEPT_NO,DEPT_NAME FROM DEPT D WHERE EXISTS ( SELECT ‘X39。 FROM EMP E WHERE = )。 EXISTS 使查询更为迅速 ,因为 RDBMS 核心模块将在子查询的条件一旦满足后 ,北六融合项目应用性能与安全开发建议 21 立刻返回结果 . . 识别 39。 低效执行 39。 的 SQL语句 (自查方法 ) 用下列 SQL 工具找出低效 SQL: SELECT EXECUTIONS , DISK_READS, BUFFER_GETS, ROUND((BUFFER_GETSDISK_READS)/BUFFER_GETS,2) Hit_radio, ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run, SQL_TEXT FROM V$SQLAREA WHERE EXECUTIONS0 AND BUFFER_GETS 0 AND (BUFFER_GETSDISK_READS)/BUFFER_GETS ORDER BY 4 DESC。 (译者按 : 虽然目前各种关于 SQL优化的图形化工具层出不穷 ,但是写出自己的SQL 工具来解决问题始终是一个最好的方法 ) . 使用 TKPROF 工具来查询 SQL性能状态 (自查方法) SQL trace 工具收集正在执行的 SQL 的性能状态数据并记录到一个跟踪文件中 . 这个跟踪文件提供了许多有用的信息 ,例如解析次数 .执行次数 ,CPU 使用时间等 .这些数据将可以用来优化你的系统 . 设置 SQL TRACE 在会话级别 : 有效 ALTER SESSION SET SQL_TRACE TRUE 设置 SQL TRACE 在 整个数据库有效仿 , 你必须将 SQL_TRACE 参数在 中设为 TRUE, USER_DUMP_DEST 参数说明了生成跟踪文件的目录 (译者按 : 这一节中 ,作者并没有提到 TKPROF 的用法 , 对 SQL TRACE 的用法也北六融合项目应用性能与安全开发建议 22 不够准确 , 设置 SQL TRACE 首先要在 中设定 TIMED_STATISTICS, 这样才能得到那些重要的时间状态 . 生成的 trace 文件是不可读的 ,所以要用 TKPROF 工具对其进行转换 ,TKPROF有许多执行参数 . 大家可以参考 ORACLE手册来了解具体的配置 . ) . 用 EXPLAIN PLAN 分析 SQL语句 (自查方法) EXPLAIN PLAN 是一个很好的分析 SQL 语句的工具 ,它甚至可以在不执行 SQL 的情况下分析语句 . 通过分析 ,我们就可以知道 ORACLE 是怎么样连接表 ,使用什么方式扫描表 (索引扫描或全表扫描 )以及使用到的索引名称 . 你需要按照从里到外 ,从上到下的次序解读分析的结果 . EXPLAIN PLAN 分析的结果是用缩进的格式排列的 , 最内部的操作将被最先解读 , 如果两个操作处于同一层中 ,带有最小操作号的将被首先执行 . NESTED LOOP 是 少数不按照上述规则处理的操作 , 正确的执行路径是检查对NESTED LOOP 提供数据的操作 ,其中操作号最小的将被最先处理 . 译者按 : 通过实践 , 感到还是用 SQLPLUS 中的 SET TRACE 功能比较方便 . 举例 : SQL list 1 SELECT * 2 FROM dept, emp 3* WHERE = SQL set autotrace traceonly /*traceonly 可以不显示执行结果 */ SQL / 14 rows selected. Execution Plan 北六融合项目应用性能与安全开发建议 23 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 NEST。中国联通北六省融合项目应用性能与安全开发建议v(编辑修改稿)
相关推荐
双法)项目管理研究委员会( PMRC )决定,从 2020 年起,在中国范围内每年开展国际项目管理(中国)大奖评选活动( ICPMA )。 目前中国已分别在北京、广州和上海举办了三期国际项目管理大奖评估师研修班,有近百人参加了评估师研修培训。 经过培训和实践有 19 位专家获得国际项目管理暨国际项目管理(中国)大奖评估师的证书。 2020 年 IPMA 还从中选派了 8
方案的优点是管理简 单,可以保证应用系统以及其它系统(如果希望进行数据保护的化)数据的实时备份,并且不需要消耗主机的 CPU资源。 由于采用基于存储的远程异步方式的数据备份,能够充分保障两台存储系统之间数据一致性,如果主存储系统出现问题,备份存储系统的数据可以保证数据的完整性和一致性。 在生产端的存储系统出现任何故障,备份存储系统上仍然有关键的应用数据可以用来在生产中心恢复操作后的数据回传。 .
望进入 通信 行业就业,还有 18%的学生希望将来成为公务员。 从数据分析表明,同学们对于自己的将来已经有了较为明确 8 的方向,古之欲明明德于天下者,先治其国;欲治其国者,先齐其家;欲齐其 家者,先修其身;欲修其身者,先正其心;欲正其心者,先诚其意;欲诚其意者,先致其知。 致知在格物”。 《大学》里的这段话,放在今天的职场,仍然有深刻的意义。 我们成长的方向没有像大学之道那样被清晰勾画。
的仓库变成了配送中心,实现了“以时间消灭空间”通过对集团 28 个产品事业部的采购资源、原材料配送资源、成品配送资源的整合,获取了更优的外部资源。 (二) 在物流运作中海尔实施了供应链管理 现代物流区别于传统物流的两个最大的特点:第一是信息化,第二是网络化。 富有海尔特色的一流三网充分体现了这两个特点,为海尔实现现代化的物流管理奠定了软的技术基础。 “一流”是指以订单信息流为中心。
未来没有关系,不存在长期激励。 同时调查表明:我国有 %的高科技民营企业将奖金作为 首选的激励方式,有 %的公司把给予员工更大的信任和自主权作为主要的激励方式。 对北京高科技民营企业的调查发现: 2020 年员工工资在2~ 万的占调查对象的 49%,在 2 万以下的占 28% ,而高科技外资企业雇员的平均年薪在 63987元,并且越来越多的外企员工的购买住房采取了贷款、补助、企业自建、租借等政策
接受安全教育。 认真学习和掌握本工作的安全操作规程及有关方面的安全知识,努力提高安全技术,自觉遵守安全生产的各项制度,听从安全人员的指导,做到不冒险、蛮干作业。 正确使用防护用品和安全设施、工具,爱护安全标志,服从分配,坚守岗位,不随便开动他人使用操作机械、电气设备、不无证进行特殊作业,严格遵守岗位责任制和安全操作规程。 随时检查工作岗位的环境和使用的工具、材料、电气、机械设备