摘要: 前段时间,公司的同事,处理一个业务要求 ,说比较复杂,不想通过语句一个一个机构去递归查询配置信息,如过本机构没有,则去取其上一级机构的配置信息,直到最高层,希望通过一条sql查询出信息: Code highlighting produced by Actipro CodeHighlighter (f 阅读全文
posted @ 2008-08-26 20:02 zping 阅读(1376) 评论(0) 推荐(0) 编辑
摘要: 今天,一个同事说有个查询比较复杂,需求是:查询机构下的用户数(包括下面全部机构用户),同时还要统计下属机构的用户数。 业务要求:要统计总公司下的用户,还要统计总公司下属的全部机构(技术部,分公司等)的用户数, 同时还要统计技术部,这时统计技术部的用户,还可能包含技术一部,技术二部,技术三部,可能技术 阅读全文
posted @ 2008-08-26 11:38 zping 阅读(4669) 评论(1) 推荐(0) 编辑
摘要: 当我们优化一个系统时,有时发现一种情况就是自己修改SQL,索引以及分区是不能解决性能问题的。这时你要考虑业务逻辑优化和表设计的重构。这两点的确和设计结合的很紧密。 业务逻辑优化 结合实际,我们先谈谈业务逻辑优化。 案例一: 我们的系统一个文档模块,客户点击时很慢,通过性能分析,是点击是去查询数据库, 阅读全文
posted @ 2008-08-25 13:36 zping 阅读(3234) 评论(9) 推荐(0) 编辑
摘要: SQL Server 三大算法(嵌套,合并,哈希)的IO成本 1. Nested Loop Join(嵌套循环联结) 算法: 其思路相当的简单和直接:对于关系R的每个元组 r 将其与关系S的每个元组 s 在JOIN条件的字段上直接比较并筛选出符合条件的元组。写成伪代码就是: 代价: 被联结的表所处内层或外层的顺序对磁盘I/O开销有着非常重要的影响... 阅读全文
posted @ 2008-08-25 11:31 zping 阅读(1124) 评论(0) 推荐(0) 编辑
摘要: 作者:淘宝网数据库及数据仓库部门经理 汪海 文章来源:中国计算机报 在当今竞争激烈的市场环境下,成本控制毫无疑问是各个企业提升竞争力非常重要的一个部分,由于众多竞争对手会提供同质化产品和服务,企业必须从控制内部成本做起,做为企业内部开销相对比较大的IT部门,应该首当其冲最大化得挖掘系统的潜力。DBA要引进新方法,新思路,扩展自己的视野,不... 阅读全文
posted @ 2008-08-22 13:31 zping 阅读(511) 评论(0) 推荐(0) 编辑
摘要: 一棵苹果树,终于结果了。 第一年,它结了10个苹果,9个被拿走,自己得到1个。对此,苹果树愤愤不平,于是自断经脉,拒绝成长。第二年,它结了5个苹果,4个被拿走,自己得到1个。“哈 哈,去年我得到了10%,今年得到20%!翻了一番。”这棵苹果树心理平衡了。 但是,它还可以这样∶ 继续成长。譬如,第二年,它结了100个果子,被拿走90 个,自己得到10个。很可能,它被拿走... 阅读全文
posted @ 2008-08-22 09:20 zping 阅读(962) 评论(0) 推荐(0) 编辑
摘要: 这有一个具体例子:如果你有一个单个的出现问题的文件。这个文件有50MB大小,而你的整个数据库运行着大约有几十亿的字节,这样的话如果能恢复单个失败文件的话就显的非常有意义。这样的事情发生的一个情景是当文件或者文件组在单独的驱动器上,而驱动器出现了问题。通常,仅仅恢复单个文件或者文件组会使总的停止时间缩短,因为它明显减少了需要恢复的总的数据量。 现在,为什么你不选择这... 阅读全文
posted @ 2008-08-21 20:13 zping 阅读(1853) 评论(0) 推荐(0) 编辑
摘要: 第一种情况: 有RAID,还需要做数据库备份吗? 回答:需要。有了RAID,万一部份磁盘损坏,可以修复数据库,有的情况下数据库甚至可以继续使用。但是,如果哪一天,你的同事不小心删除了一条重要的记录,怎么办?RAID是无能为力的。你需要合适的备份策略,把那条被误删的数据恢复出来。所以有了RAID,仍需要做备份集群,磁盘镜像同理。 第二种情况: 我们需要全备份+日志备份?... 阅读全文
posted @ 2008-08-21 19:58 zping 阅读(756) 评论(1) 推荐(0) 编辑
摘要: 这段时间看了关于在SQL server 中通过日志和时间点来恢复数据。也看了一些网上的例子,看如何通过日志来恢复数据。 前提条件: 数据库的故障恢复改为非简单模式,去掉自动关闭和自动收缩两个选项 如果是简单模式: 类似下面的语句操作数据就不会记录到日志中: select * into t from [表名] 这时为保证数据的... 阅读全文
posted @ 2008-08-21 19:50 zping 阅读(22476) 评论(8) 推荐(1) 编辑
摘要: 以前对数据库的隔离级别,有所了解,但不知道真正其中的区别。今天就讨论一下这4个隔离级别 下面是4个隔离级别,在SQL server 2005里的介绍 READ UNCOMMITTED 指定语句可以读取已由其他事务修改但尚未提交的行。 READ COMMITTED 指定语句不能读取已由其他事务修改但尚未提交的数据。这样可以避免脏读。其他事务可以在当前事务的各个... 阅读全文
posted @ 2008-08-17 22:26 zping 阅读(767) 评论(0) 推荐(0) 编辑
摘要: 今天在itput上看了一篇文章,是讨论一个语句的优化: 原贴地址: http://www.itpub.net/viewthread.php?tid=1015964&extra=&page=1 一,发现问题 优化的语句: Code highlighting produced by Actipro Co 阅读全文
posted @ 2008-08-13 19:22 zping 阅读(13970) 评论(27) 推荐(3) 编辑
摘要: 一转眼接触ORACLE已经一年了,在这一年中收获多多,感慨多多,我记得是2004年11月底开始学习ORACLE的,当时选择方向也是几经波折,还好现在的处境不是非常的艰难,前途似乎还有想象中的光明。 毕业已经两年半,开始半年主要是接触Sybase,当时公司后台使用的Sybase SQL 11,由于人手比较少,管理也不很严格,所以我经常有机会光顾他,在那里我学会了怎样备份,恢复数据库... 阅读全文
posted @ 2008-08-12 13:50 zping 阅读(571) 评论(2) 推荐(0) 编辑
摘要: 这是SQL Server 2005里的介绍: 如果两个联接输入都很大,而且这两个输入的大小差不多,则预先排序的合并联接提供的性能与哈希联接相近。但是,如果这两个输入的大小相差很大,则哈希联接操作通常快得多。 哈希联接可以有效处理未排序的大型非索引输入。它们对复杂查询的中间结果很有用,因为: · 中间 阅读全文
posted @ 2008-08-11 21:38 zping 阅读(3292) 评论(5) 推荐(1) 编辑
摘要: 简介: 如果两个联接输入并不小但已在二者联接列上排序(例如,如果它们是通过扫描已排序的索引获得的),则合并联接是最快的联接操作。如果两个联接输入都很大,而且这两个输入的大小差不多,则预先排序的合并联接提供的性能与哈希联接相近。 从上次我们分析来看,嵌套循环适合输入和输出都小的情况,那如果输入和输入都 阅读全文
posted @ 2008-08-10 17:27 zping 阅读(2167) 评论(0) 推荐(1) 编辑
摘要: 前段时间看了一篇关于算法的blog,地址如下: http://www.cnblogs.com/perfectdesign/archive/2008/04/24/sql_tuning.html 不少人也给了解决方法,以前也研究过(嵌套,合并,hash)算法,但没有真正的用到优化中,这个例子给了我很大启 阅读全文
posted @ 2008-08-10 17:20 zping 阅读(6890) 评论(6) 推荐(0) 编辑