改善数据库性能

简单的列出提高sql数据库性能的方法:

1.数据库调整和sql语句调整

   数据库调整:是调整实际数据库的过程,包括分配内存,磁盘,CPU,I/O 和底层数据库进程,还涉及数据库结构本身的管理与操作。数据库调整通常会包括调整数据库体系来优化硬件的使用。其目标是确保数据库的设计能够最好的满足用户对数据库操作的需要。

   sql调整是调整访问数据库的sql语句,这些语句包含数据库查询和事务操作,比如插入更新删除。sql语句调整的目标是利用数据库和系统资源,索引,针对数据库的当前状态进行最有效的访问,从而减少对数据执行查询所需要的开销。简单来说,sql语句调整是优化生成sql语句的过程,从而已最有效的和最高效的方式获得结果。

   两者缺一不可。

2.格式化sql语句

  1)提高可读性格式化sql语句。值得提出的是,当语句里使用多个表时,使用表的别名。

下面是一个可读性很差的语句:

SELECT CUSTOMER_TBL.CUST_ID,CUSTOMER_TBL.CUST_NAME,
CUSTOMER_TBL.CUST_PHONE,ORDERS_TBL.ORD_NUM,ORDERS_TBL.QTY
FROM CUSTOMER_TBL,ORDERS_TBL
WHERE CUSTOMER_TBL.CUST_ID=ORDERS_TBL.CUST_ID
AND ORDERS_TBL.QTY>1 AND CUSTOMER_TBL.CUST_NAME LIKE 'G%'
ORDER BY CUSTOMER_TBL.CUST_NAME;

格式化之后:

SELECT C.CUST_ID,
       C.CUST_NAME,
       C.CUST_PHONE,
       O.ORD_NUM,
       O.QTY
FROM CUSTOMER_TBL C,
     ORDERS_TBL O
WHERE C.CUST_ID=O.CUST_ID
      AND O.QTY>1 
      AND C.CUST_NAME LIKE 'G%'
ORDER BY C.CUST_NAME;

   虽然提高语句的可读性并不会直接改善他的性能,但这样会帮助我们更方便的修改和调整很长和很复杂的语句。

   2)FROM 子句里的表

    FROM自己里的表的安排或次序对性能有很大的影响,取决于优化器Ruhr读取sql语句。举例来说,把较小的表列在前面,较大的表列在后面就会获得更好的性能。

FROM SMALLEST TABLE   
     LARGEST  TABLE    

   3)结合条件的次序

   大多数结合使用一个基表链接到具有一个或多个共有字段的其他表。在WHERE子句里,来自基表的字段一般放在结合操作的右侧,要被结合的通常按照表从小到大的次序排列。结合条件应该位于WHERE子句的最前面,其后才是过滤条件。

FROM TABLE1,       --Smallest table
     TABLE2,       --to
     TABLE3        --Largest table,also base table
WHERE TABLE1.COLUMN=TABLE3.COLUMN
  AND TABLE2.COLUMN=TABLE3.COLUMN
  [AND CONDITION1]
  [AND CONDITION2]

   由于结合通常会从表里返回大部分数据,所以结合条件勇敢在更严格的条件再生效。

   我们应该让sql优化器首先计算最严格的条件,因为它会返回最小的数据子集,从而减小查询的开销。最好使用具有索引的字段作为查询里最严格的条件。

   3.使用LIKE操作符和通配符

SELECT EMP_ID,
       LAST_NAME,
       FIRST_NAME,
       STATE
FROM   EMPLOYEE_TBL
WHERE  LAST_NAME LIKE '%TEVENS';
   4.避免OR操作符

   再sql语句里用谓词IN代替OR操作符能够提高检索速度。

   5.避免使用HAVING子句

   6.避免大规模排序操作

    由于大规模的排序操作不是总是可以避免的,所以最好好大规模排序放在批处理过程里,再数据库使用的非繁忙期运行。

    7.使用存储过程

    我们可以为经常运行的sql语句(特别是大型事务或查询)创建存储过程。所谓存储过程,就是经过编译的、以可执行格式永保存在数据库里的sql语句。

    8.在批加载时关闭索引

   在批加载时,索引可能会严重的降低性能。在加载的过程中关闭索引,对表所做的的修改会在更短的时间内完成,整个操作也会更快的完成,在加载之后可以重新创建索引。 在加载的操作的前后删除并创建索引还有一个优点,就是可以减少索引里面的碎片。

  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库性能优化是一个复杂而重要的主题,以下是一些指南和建议,以帮助您提高Oracle数据库性能: 1. 确保正确的数据库设计:良好的数据库设计是性能优化的基础。确保正规化和合适的索引设计,以减少数据冗余和提高查询效率。 2.优化SQL查询:针对频繁执行的查询进行优化。使用正确的索引、合适的连接方式和适当的查询重写来改善查询性能。 3.适当配置硬件资源:确保数据库服务器有足够的内存、磁盘空间和处理器资源来支持负载。调整参数以最大化系统性能。 4. 合理分配表空间和文件:将表空间和数据文件分布在不同的磁盘上,以平衡I/O负载。注意控制数据文件的大小和增长。 5. 使用合适的数据类型和大小:选择合适的数据类型和字段大小,以避免存储过多或过少的数据。这有助于减少存储空间和提高查询效率。 6. 编写高效的存储过程和触发器:确保存储过程和触发器的代码经过优化,避免重复计算和循环。 7. 监控和调整性能:使用Oracle提供的性能监控工具,如AWR报告和Enterprise Manager,来识别性能瓶颈并进行调整。 8. 使用合适的索引策略:为频繁查询的列创建索引,并定期重新组织和重新生成索引,以提高查询性能。 9. 缓存重复查询结果:使用Oracle的查询缓存功能,将常用查询的结果缓存起来,以减少数据库查询的开销。 10. 定期维护和优化:定期执行数据库维护任务,如统计收集、索引重建、表空间整理等,以保持数据库的最佳性能。 这些是一些常见的Oracle数据库性能优化指南,但具体的优化方法还取决于您的具体应用和环境。建议您参考Oracle官方文档和专业的数据库优化书籍,以获得更详细和个性化的指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值