应当怎样减少查询数据库的次数

BenQQQQQQQ 2011-02-25 12:34:33
我上个学期的期末Ajax课程设计,做了一个网站,有个功能是像百度那样,用户只需输入某几个字符,就能将符合的关键字用下拉框列举出来。
当时,我是没考虑到效率的问题,采用的是用户没输入一个字符,就查询数据库一次,将匹配的结果用下拉框显示出来,老师跟我说,这样是不行的,要将最经常使用的数据生成一个xml文件,以后查询的话,就在xml文件中查,减少数据库的负担。
我想问一问,同等数据量的情况下使用查询xml文件的效率高还是查询数据库的效率高。
另外,还有什么方法可以减少对数据库的访问,以提高效率。这些方法都讲的详细一点啊,谢谢,哈~。
...全文
248 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰川711 2011-02-25
  • 打赏
  • 举报
回复
我也做过, 我是用txt文件存放这些词的,,
MSDNXGH 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
变化少的数据使用cache缓存
using操作
[/Quote]
+1
wuyq11 2011-02-25
  • 打赏
  • 举报
回复
变化少的数据使用cache缓存
using操作
回头是岸 2011-02-25
  • 打赏
  • 举报
回复
有个功能是像百度那样,用户只需输入某几个字符,就能将符合的关键字用下拉框列举出来。


像这种 我强烈建议用cache
cjh200102 2011-02-25
  • 打赏
  • 举报
回复
用cache比较好一些
Alden 2011-02-25
  • 打赏
  • 举报
回复
最直接的就是使用cache
数据库优化方案设计 XX信息管理平台从大型数据库环境四个不同级别的调整分析入手,分析数据库平台的系 统结构和工作机理,从九个不同方面设计数据库的优化方案。 对于数据库的数据优化,主要有四个不同的调整级别,第一级调整是操作系统级包括硬 件平台,第二级调整是RDBMS级的调整,第三级是数据库设计级的调整,最后一个调整级 是SQL级。通常依此四级调整级别对数据库进行调整、优化,数据库的整体性能会得到很 大的改善。下面从九个不同方面介绍数据库优化设计方案。 一、数据库优化自由结构 数据库的逻辑配置对数据库性能有很大的影响。为此,数据库平台一般对表空间设计提 出有相应的优化结构,如ORACLE公司的OFA(Optimal flexible Architecture),使用这种结构进行设计会大大简化物理设计中的数据管理。优化自由结 构,简单地讲就是在数据库中可以高效自由地分布逻辑数据对象,因此首先要对数据库 中的逻辑对象根据他们的使用方式和物理结构对数据库的影响来进行分类,这种分类包 括将系统数据和用户数据分开、一般数据和索引数据分开、低活动表和高活动表分开等 等。 数据库逻辑设计的结果应当符合下面的准则: 把以同样方式使用的段类型存储在一起; 按照标准使用来设计系统; 存在用于例外的分离区域; 最小化表空间冲突; (5)将数据字典分离。 二、充分利用系统全局区域 系统全局区域是数据库平台的心脏,如Oracle数据库的SGA(SYSTEM GLOBAL AREA) 。用户的进程对这个内存区发送事务,并且以这里作为高速缓存读取命中的数据 ,以实现加速的目的。正确的SGA大小对数据库的性能至关重要。SGA包括以下几个部分 : 1、数据块缓冲区(data block buffer cache)是SGA中的一块高速缓存,占整个数据库大小的1%- 2%,用来存储从数据库重读取的数据块(表、索引、簇等),因此采用least recently used (LRU,最近最少使用)的方法进行空间管理。 2、字典缓冲区。该缓冲区内的信息包括用户账号数据、数据文件名、段名、盘区位置、 表说明和权限,它也采用LRU方式管理。 3、重做日志缓冲区。该缓冲区保存为数据库恢复过程中用于前滚操作。 4、SQL共享池。保存执行计划和运行数据库的SQL语句的语法分析树。也采用LRU算法管 理。如果设置过小,语句将被连续不断地再装入到库缓存,影响系统性能。 另外,SGA还包括大池、JAVA池、多缓冲池。但是主要是由上面4种缓冲区构成。对这些 内存缓冲区的合理设置,可以大大加快数据查询速度,一个足够大的内存区可以把绝大 多数数据存储在内存中,只有那些不怎么频繁使用的数据,才从磁盘读取,这样就可以 大大提高内存区的命中率。 三、规范与反规范设计数据库 1、规范化 范式是符合某一级别的关系模式的集合,根据约束条件的不同,一般有1NF、2NF、3NF三 种范式。规范化理论是围绕这些范式而建立的。规范化的基本思想是逐步消除数据依赖 中不合适的部分,使模式中的各关系模式达到某种程度的"分离",即采用"一事一地"的 模式设计原则,因此,所谓规范化实质上就是概念的单一化。数据库中数据规范化的优 点是减少了数据冗余,节约了存储空间,相应逻辑和物理的I/O次数减少,同时加快了增 、删、改的速度。但是一个完全规范化的设计并不总能生成最优的性能,因为对数据库 查询通常需要更多的连接操作,从而影响到查询的速度。故有时为了提高某些查询或应 用的性能而有意破坏规范规则,即反规范化。 2、反规范化 反规范的必要性 是否规范化的程度越高越好呢?答案是否定的,应根据实际需要来决定,因为"分离"越 深,产生的关系越多,结构越复杂。关系越多,连接操作越频繁,而连接操作是最费时 间的,在数据库设计中特别对以查询为主的数据库设计来说,频繁的连接会严重影响查 询速度。所以,在数据库的设计过程中有时故意保留非规范化约束,或者规范化以后又 反规范,这样做通常是为了改进数据库的查询性能,加快数据库系统的响应速度。 反规范技术 在进行反规范设计之前,要充分考虑数据的存取需求,常用表的大小、特殊的计算、数 据的物理存储等。常用的反规范技术有合理增加冗余列、派生列,或重新组表几种。反 规范化的好处是降低连接操作的需求、降低外码和索引数目,减少表的个数,从而提高 查询速度,这对于性能要求相对较高的数据库系统来说,能有效地改善系统的性能,但 相应的问题是可能影响数据的完整性,加快查询速度的同时降低修改速度。 3、数据库设计中的优化策略 数据应当按两种类别进行组织:频繁访问的数据和频繁修改的数据。对于频繁访问但是 不频繁修改的数据,内部设计应当物理不规范化。对于频繁修改但并不频繁访问的数据 ,内部设计应当物理规范化。比较复杂的方法是将规范

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧