Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4217957
  • 博文数量: 291
  • 博客积分: 8003
  • 博客等级: 大校
  • 技术积分: 4275
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-30 18:28
文章分类

全部博文(291)

文章存档

2017年(1)

2013年(47)

2012年(115)

2011年(121)

2010年(7)

分类: 数据库开发技术

2011-07-19 22:52:28

2011-07-17我去参加CU数据库沙龙,由于周六,周日忙着用perl重写我们项目的收集数据程序,结果到时,已经迟到了15分钟,会议室里座无虚席。内容是

演讲话题:数据库架构设计与性能优化实践
演讲人:盖国强:恩墨科技技术总监,ITPUB论坛超级版主
演讲话题:银行业案例分析:企业信息系统性能调优实践
演讲人:郑保卫:《海量数据库解决方案》译者,韩国最权威数据库公司EN-CORE顾问

第一位专家主要是偏重于Oracle的优化和原理,但是我对Oracle的熟悉只是在使用客户端连过几次的程度,他讲的内容我好多都不记得了,但是他讲的Oracle 11g的对物理数据表进行访问的新功能,我记得很清楚,Oracle的缓存是:第一次从物理表查询到结果后,把内容写到缓存,并且把写到缓存的位置记录到一个索引表里,同时还有一个索引表专门记录没有被使用的缓存块。由于一些查询是全表索引,这样会把缓存占满,把别人的SQL结果清除,因而出现直接读取物理表的功能。

我后来问了一个问题“如何放在随机条件查询的攻击,在这种情况下先读缓存再读物理表会比直接读物理表慢?”,他只是说Oracle不提供绕过缓存的功能。

第一位专家主要是从大的方面介绍

第二位专家主要是从各个方面介绍如何优化数据库性能

虽然他是根据Oracle讲的,但是对我帮助很大

主要是下面四个方面

1.数据库配置优化

2.存储过程

3.从sql语句
4.数据结构设计

1)数据库配置优化

增加查询缓存,增加索引空间,分区,增加缓存,增加线程数等等

2)存储过程

SQL语句最大的特点是集合运算,因此不要在遍历游标里做SQL语句操作,因为查询出来10万行结果,那么对应的遍历游标里做SQL语句操作就得执行10万次。这个完全可以用join或者in来解决

3)SQL语句优化是我们经常使用的优化,优化最高能到10%

一般是对经常查询的语句进行分析,看看是否需要加索引,如何加,如何写SQL语句能够应用上索引,删除不必要的索引。

若是web的话避免查询大数据量而只显示小部分数据。

在重复调用相同语句,但是数据不一样时,一定要用预处理,因为预处理后的SQL语句只会在数据库里解析一次,下次传不同的数据时不需要再解析(软解析)。否则不用预处理而用字符串拼接构成SQL语句的话每次都要解析(硬解析),执行时间有50%在做解析,导致cpu和IO都很高。

主要 join和in的效率问题(这是我自己加的,他没讲到这个)

4)数据结构设计,优化最高能到80%

数据库结果的设计直接决定了你如何写SQL,好的数据库设计能够很方便写出处理海量数据的SQL语句,设计数据结构时考虑如何线性扩展。

阅读(2555) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~