08 2008 档案
摘要:前段时间提到的"SQL Server 2005 死锁解决探索",死锁严重,平均每天会发生一次死锁,在解决和处理SQL server2005死锁中查了很多资料和想了很多办法, 对为何出现死锁和怎样较少死锁有了进一步认识,在这里和大家一起分享: SQL Server 锁类型 在数据库中主要存在两种锁:
阅读全文
摘要:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->declare @dbname varchar(100) set @dbname='c:\db'+convert(char(8),getdate(),112)+replace(co...
阅读全文
摘要:在实际业务中,累计5年的历史业务数据可能比较大,比如可能超过1T的数据,这时可能就会影响业务处理 OLTP的运行效率,一般是将5年以上的数据归档的其他地方,同时从当前业务系统中删除。 有各位哥们对这个过程比较熟悉,ORACLE ERP时什么策略呢? 请高手指点。 DBX archiver的功能就是把历史数据放在另一个数据库中,如果在prod中的查询涉及到历史数据,就会到历史库中取数据,实现对客户...
阅读全文
摘要:前段时间,公司的同事,处理一个业务要求 ,说比较复杂,不想通过语句一个一个机构去递归查询配置信息,如过本机构没有,则去取其上一级机构的配置信息,直到最高层,希望通过一条sql查询出信息: Code highlighting produced by Actipro CodeHighlighter (f
阅读全文
摘要:今天,一个同事说有个查询比较复杂,需求是:查询机构下的用户数(包括下面全部机构用户),同时还要统计下属机构的用户数。 业务要求:要统计总公司下的用户,还要统计总公司下属的全部机构(技术部,分公司等)的用户数, 同时还要统计技术部,这时统计技术部的用户,还可能包含技术一部,技术二部,技术三部,可能技术
阅读全文
摘要:当我们优化一个系统时,有时发现一种情况就是自己修改SQL,索引以及分区是不能解决性能问题的。这时你要考虑业务逻辑优化和表设计的重构。这两点的确和设计结合的很紧密。 业务逻辑优化 结合实际,我们先谈谈业务逻辑优化。 案例一: 我们的系统一个文档模块,客户点击时很慢,通过性能分析,是点击是去查询数据库,
阅读全文
摘要:SQL Server 三大算法(嵌套,合并,哈希)的IO成本 1. Nested Loop Join(嵌套循环联结) 算法: 其思路相当的简单和直接:对于关系R的每个元组 r 将其与关系S的每个元组 s 在JOIN条件的字段上直接比较并筛选出符合条件的元组。写成伪代码就是: 代价: 被联结的表所处内层或外层的顺序对磁盘I/O开销有着非常重要的影响...
阅读全文
摘要:作者:淘宝网数据库及数据仓库部门经理 汪海 文章来源:中国计算机报 在当今竞争激烈的市场环境下,成本控制毫无疑问是各个企业提升竞争力非常重要的一个部分,由于众多竞争对手会提供同质化产品和服务,企业必须从控制内部成本做起,做为企业内部开销相对比较大的IT部门,应该首当其冲最大化得挖掘系统的潜力。DBA要引进新方法,新思路,扩展自己的视野,不...
阅读全文
摘要:一棵苹果树,终于结果了。 第一年,它结了10个苹果,9个被拿走,自己得到1个。对此,苹果树愤愤不平,于是自断经脉,拒绝成长。第二年,它结了5个苹果,4个被拿走,自己得到1个。“哈 哈,去年我得到了10%,今年得到20%!翻了一番。”这棵苹果树心理平衡了。 但是,它还可以这样∶ 继续成长。譬如,第二年,它结了100个果子,被拿走90 个,自己得到10个。很可能,它被拿走...
阅读全文
摘要:这有一个具体例子:如果你有一个单个的出现问题的文件。这个文件有50MB大小,而你的整个数据库运行着大约有几十亿的字节,这样的话如果能恢复单个失败文件的话就显的非常有意义。这样的事情发生的一个情景是当文件或者文件组在单独的驱动器上,而驱动器出现了问题。通常,仅仅恢复单个文件或者文件组会使总的停止时间缩短,因为它明显减少了需要恢复的总的数据量。 现在,为什么你不选择这...
阅读全文
摘要:第一种情况: 有RAID,还需要做数据库备份吗? 回答:需要。有了RAID,万一部份磁盘损坏,可以修复数据库,有的情况下数据库甚至可以继续使用。但是,如果哪一天,你的同事不小心删除了一条重要的记录,怎么办?RAID是无能为力的。你需要合适的备份策略,把那条被误删的数据恢复出来。所以有了RAID,仍需要做备份集群,磁盘镜像同理。 第二种情况: 我们需要全备份+日志备份?...
阅读全文
摘要:这段时间看了关于在SQL server 中通过日志和时间点来恢复数据。也看了一些网上的例子,看如何通过日志来恢复数据。 前提条件: 数据库的故障恢复改为非简单模式,去掉自动关闭和自动收缩两个选项 如果是简单模式: 类似下面的语句操作数据就不会记录到日志中: select * into t from [表名] 这时为保证数据的...
阅读全文
摘要:以前对数据库的隔离级别,有所了解,但不知道真正其中的区别。今天就讨论一下这4个隔离级别 下面是4个隔离级别,在SQL server 2005里的介绍 READ UNCOMMITTED 指定语句可以读取已由其他事务修改但尚未提交的行。 READ COMMITTED 指定语句不能读取已由其他事务修改但尚未提交的数据。这样可以避免脏读。其他事务可以在当前事务的各个...
阅读全文
摘要:今天在itput上看了一篇文章,是讨论一个语句的优化: 原贴地址: http://www.itpub.net/viewthread.php?tid=1015964&extra=&page=1 一,发现问题 优化的语句: Code highlighting produced by Actipro Co
阅读全文
摘要:一转眼接触ORACLE已经一年了,在这一年中收获多多,感慨多多,我记得是2004年11月底开始学习ORACLE的,当时选择方向也是几经波折,还好现在的处境不是非常的艰难,前途似乎还有想象中的光明。 毕业已经两年半,开始半年主要是接触Sybase,当时公司后台使用的Sybase SQL 11,由于人手比较少,管理也不很严格,所以我经常有机会光顾他,在那里我学会了怎样备份,恢复数据库...
阅读全文
摘要:这是SQL Server 2005里的介绍: 如果两个联接输入都很大,而且这两个输入的大小差不多,则预先排序的合并联接提供的性能与哈希联接相近。但是,如果这两个输入的大小相差很大,则哈希联接操作通常快得多。 哈希联接可以有效处理未排序的大型非索引输入。它们对复杂查询的中间结果很有用,因为: · 中间
阅读全文
摘要:简介: 如果两个联接输入并不小但已在二者联接列上排序(例如,如果它们是通过扫描已排序的索引获得的),则合并联接是最快的联接操作。如果两个联接输入都很大,而且这两个输入的大小差不多,则预先排序的合并联接提供的性能与哈希联接相近。 从上次我们分析来看,嵌套循环适合输入和输出都小的情况,那如果输入和输入都
阅读全文
摘要:前段时间看了一篇关于算法的blog,地址如下: http://www.cnblogs.com/perfectdesign/archive/2008/04/24/sql_tuning.html 不少人也给了解决方法,以前也研究过(嵌套,合并,hash)算法,但没有真正的用到优化中,这个例子给了我很大启
阅读全文
摘要:最近公司同事碰到需求,实现一个功能,想用一个sq语句实现,他让我看看如何实现sql。由于前期做培训时说到尽量减少和数据库的交互,能一条sql取出来就不用两次sql语句: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->CREATE TABLE...
阅读全文
摘要:当我一个运行很长的事务,在事务提交以完后,突然断电了,这时长事务里肯定有没有处理的语句,面对这样情况,一部分已经处理完了,一部还没来得及处理的情况,SQL Server 2005 数据库是如何保证事务的持久性和一致性? 以上的情况,查一般的SQL Server 2005资料是很难有答案的,这段时间在学Oracle时,了解了其事务是如何保证事务的acid ,后来在SQL Server ...
阅读全文
摘要:前段时间在 http://www.itput.net/ 看到 一篇文章, http://www.itpub.net/thread-1031306-1-4.html 提到一个SQL语句: 建立环境: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.c...
阅读全文
摘要:避免 LEFT JOIN 和 NULL 当然,有很多时候您需要执行 LEFT JOIN 和使用 NULL 值。但是,它们并不适用于所有情况。改变 SQL 查询的构建方式可能会产生将一个花几分钟运行的报告缩短到只花几秒钟这样的天壤之别的效果。有时,必须在查询中调整数据的形态,使之适应应用程序所要求的显示方式。虽然 TABLE 数据类型会减少大量占用资源的情况,但在查询中...
阅读全文
摘要:SQL优化--使用关联查询代替子查询 测试例子: 子查询: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->select a.*, (select workflowname from workflowbase where i...
阅读全文
摘要:在使用Exists时,如果能正确使用,有时会提高查询速度: 1,使用Exists代替inner join 2,使用Exists代替 in 1,使用Exists代替inner join例子: 在一般写sql语句时通常会遇到如下语句: 两个表连接时,取一个表的数据,一般的写法通过关联查询(inner j
阅读全文
摘要:原创:胖子刘(转载请注明作者和出处,谢谢) (二)自联结模式 自联结模式,也可以看作是“主从模式”的一种特殊情况(或者说是“变形”),它在一张表内实现了“一对多关系”,并且可以根据业务需要实现“有限层”或者“无限层”的主从嵌套。 这种模式用得最多的情况就是实现“树形结构”数据的存储,比如各大网站上常见的细分类别、应用系统的组织结构、Web系统的菜单树等都能用到这种模式。 自联结模式有很...
阅读全文
摘要:除了上面提到的四种主要设计模式,还有一些其他模式,在某些项目中可能会用到,在这里先简单做个说明,暂不做深入讨论,等到以后的项目用到这些模式的时候,再结合实际需求详细解说。 (一)继承模式 继承模式,可以看作是“主从模式”的一种特殊情况(或者说是“变形”),它所代表的两个对象也是“一对多”的关系。它与“主从模式”的区别是,“继承模式”中从表的主键是复合主键,并且复合主键中必定包含主表的主键列。 ...
阅读全文
摘要:(五)使用上述四种模式的一般原则 1. 什么时候用“主扩展模式”? 对象的个数不多;各个对象之间的属性有一定差别;各个对象的属性在数据库设计阶段能够完全确定;各个扩展对象有独立的、相对比较复杂的业务处理需求,此时用“主扩展模式”。将各个对象的共有属性抽取出来设计为“主表”,将各个对象的剩余属性分别设计为相应的“扩展表”,“主表”与各个“扩展表”分别建立一对一的关系。 2. ...
阅读全文
摘要:多对多模式 也是比较常见的一种数据库设计模式,它所描述的两个对象不分主次、地位对等、互为一对多的关系。对于A表来说,一条记录对应着B表的多条记录,反过来对于B表来说,一条记录也对应着A表的多条记录,这种情况就是“多对多模式”。 “多对多模式”需要在A表和B表之间有一个关联表,这个关联表也是“多对多模式”的核心所在。根据关联表是否有独立的业务处理需求,可将其划分为两种细分情况。 1. ...
阅读全文
摘要:名值模式: 通常用来描述在系统设计阶段不能完全确定属性的对象,这些对象的属性在系统运行时会有很大的变更,或者是多个对象之间的属性存在很大的差异。 举例如下(注:这个例子已经作了相当程度的简化,仅仅是用来帮助大家理解“名值模式”这个概念来使用的,请大家注意)。 1. 使用名值模式进行设计时,如果对“其他属性”仅作浏览保存、不作其它任何特殊处理,则通...
阅读全文
摘要:(二)主从模式 主从模式,是数据库设计模式中最常见、也是大家日常设计工作中用的最多的一种模式,它描述了两个表之间的主从关系,是典型的“一对多”关系。 举例如下(注:这个例子已经作了相当程度的简化,仅仅是用来帮助大家理解“主从模式”这个概念来使用的,请大家注意)。 比如论坛程序。一个论坛通常都会有若干“板块”,在每个板块里面,大家可以发布很多的新帖。这时候“板块”和“发帖”就是...
阅读全文
摘要:一)主扩展模式 主扩展模式,通常用来将几个相似的对象的共有属性抽取出来,形成一个“公共属性表”;其余属性则分别形成“专有属性表”,且“公共属性表”与“专有属性表”都是“一对一”的关系。 “专有属性表”可以看作是对“公共属性表”的扩展,两者合在一起就是对一个特定对象的完整描述,故此得名“主扩展模式”。 举例如下(注:这个例子已经作了相当程度的简化,仅仅是用来帮助大家理解...
阅读全文
摘要:由于Oracel 10g 是一个多进程多线程的数据库,而SQL server是一个单进程多线程的数据库Oracel实例主要有3类进程 1,服务器进程 2,后台进程3,从属进程 服务器进程:分为专有服务器进程和共享服务器进程 后台进程: 1,PMON(进程监视器) 该进程是在出现异常中止后完成操作,还包括监视其他后台进程,如果这些进程崩溃,他来负责重启进程。PMON还会向Oracle TNS 监听...
阅读全文
摘要:学*了*5个月的Oracle 10g,对其体系机构有了一个大体的认识,这次对其内存体系机构作个总结: 1,Sga :系统全局区 2,pga: 进程全局区 3,Uga:用户全局区(是共享服务器,uga在sga中分配,是专有服务器,uga在pga分配) 这里主要讨论sga和pga: 目前在Oracle 10g中有手动和自动内存管理,...
阅读全文
摘要:以前在SQL SERVER 2000中,包括网上都说查询时“abc%”能使用到索引,“%abc%”不能使用到索引,一次做培训的时候,给大家介绍“%abc%”不能使用索引的例子发现,在SQL SERVER 2005中是可能用到索引。在SQL SERVER 2005中查询优化器的确做了很大提高,以下是例子: 表[[zping.com]]]中operator建立索引idx_ope...
阅读全文
摘要:这次在优化系统中,由于客户使用的SQL server 2005的标准版,此版本不支持分区功能,但如果不分区,系统优化的效果就不会很明显。后来使用了分区视图。 在系统中,没有使用对象关联,发现很多地方为查询信息,多次读取数据库。后来也用视图进行封装。 本文就讨论在Hibernate3.2如何配合使用数
阅读全文
摘要:这次在优化系统中,由于先前都没配置对象关联,获取信息要多次去读数据库,效率很低,试了一下用计算列关联对象获取对象。 对象关联, 多对一关联,在对象中配置,一个单向关联对象, 在配置文件中,增加 (select s.id from Mfm_Noterminalplan s where s.id=orginplanid) 注意: 1,这...
阅读全文
摘要:一个很好的日志恢复工具,还可以审计数据的变化,支持(SQL server 2000 和SQL Server 2005) 下载地址:(长期有效,内含注册码) http://files.cnblogs.com/zping/LE410.rar
阅读全文
摘要:SQL Server 7.0和SQL Server2000中,可以用下面的命令查看: DBCC log ( {dbid|dbname}, [, type={0|1|2|3|4}] ) 例如:DBCC log (master,0) 参数: Dbid or dbname - 任一数据库的ID或名字 type - 输出结果的类型: 0 - 最少信息(operatio...
阅读全文
浙公网安备 33010602011771号