摘要: 我的数据库很容易死锁,我后来发现是聚集索引引起的,我的索引填充因子是90,后来我把聚集索引去掉,问题就解决了,但是我不明白聚集索引为什么会引起死锁??你的填充因子设置得不对 聚集索引代表了表中记录的存储顺序,所以每次数据的变化,都可能导致表中的数据按照聚集索引重新调整顺序 而填充因子设置为90,这是偏向于减少索引空间占用的做法,这样的做法导致为了减少索引的空间占用,使数据页的空闲空间很小 在向一个已满的索引页添加某个新行时,SQL Server 把大约一半的行移到新页中以便为新行腾出空间。这种重组称为页拆分。页拆分会降低性能并使表中的数据存储产生碎片 因为你这样的填充因子设置,导致数据页空闲空 阅读全文
posted @ 2011-03-28 20:01 hanmos 阅读(1814) 评论(0) 推荐(2) 编辑
摘要: 在应用系统中,尤其在联机事务处理系统中,对数据查询及处理速度已成为衡量应用系统成败的标准。而采用索引来加快数据处理速度也成为广大数据库用户所接受的优化方法。 在良好的数据库设计基础上,能有效地使用索引是SQL Server取得高性能的基础,SQL Server采用基于代价的优化模型,它对每一个提交的有关表的查询,决定是否使用索引或用哪一个索引。因为查询执行的大部分开销是磁盘I/O,使用索引提高性能的一个主要目标是避免全表扫描,因为全表扫描需要从磁盘上读表的每一个数据页,如果有索引指向数据值,则查询只需读几次磁盘就可以了。所以如果建立了合理的索引,优化器就能利用索引加速数据的查询过程。但是,索引 阅读全文
posted @ 2011-03-28 19:30 hanmos 阅读(323) 评论(0) 推荐(0) 编辑
摘要: TRUNCATE TABLE 和不带 WHERE 的 DELETE 功能是一样的,都是删除表中的所有数据,不过 TRUNCATE TABLE 速度更快,占用的日志更少,这是因为 TRUNCATE TABLE 直接释放数据页并且在事务日志中也只记录数据页的释放,而 DELETE 是一行一行地删除,在事务日志中要记录每一条记录的删除。那么可不可以用 TRUNCATE TABLE 代替不带 WHERE 的 DELETE 呢?在以下情况是不行的:1、要保留标识的情况下不能用 TRUNCATE TABLE,因为 TRUNCATE TABLE 会重置标识。2、需要使用触发器的情况下不能使用 TRUNCAT 阅读全文
posted @ 2011-03-28 18:07 hanmos 阅读(3945) 评论(0) 推荐(1) 编辑
摘要: 作为一个系统分析师,给出一个业务然后进行分析,将各种可能遇到的情况尽量的列举出来,这是基本素质之一。这不但需要系统分析师有比较严谨的思维,而且还要求其有很丰富的工作经验。假设现在用户有一个“重新打开销售订单”的业务需求,那么在设计、开发这个作业的时候,需要进行哪些限制呢?一、重新打开订单业务背景 在分析某个业务的时候,最重要的就是要了解业务的背景。如果忽略了业务背景,那么设计出来的模型就好像是海市蜃楼,虚无缥缈。为此笔者建议,作为系统分析师,在分析业务需求的时候,一定要讲需求回归到背景中去。或者我们可以把它叫做案例分析题。用户给出的可能是一个知识点,我们要将其组成一个现实的案例。 一般订单的处 阅读全文
posted @ 2011-03-28 17:15 hanmos 阅读(447) 评论(0) 推荐(0) 编辑
摘要: 期间虽然说是财务模块需要用到的概念,但是在ERP系统中则是贯穿到所有的ERP模块中。如销售、采购、仓库等等都受到期限制。可见,从系统开发的角度看,期间在ERP系统中也是一个全局化的变量。具体的来说,在设计期间的管理思路时,笔者认为需要从如下几个角度出发。1. 期间并不是以月为单位 从理论上来说,会计期间是以月为单位的。即相关的单据,如收货单或者发料单,必须在每个月月底都要结帐。不过在实际工作中,可能会与这个有差异。如有可能企业并不是以自然月作为期间。笔者以前在给多家企业实施项目的时候,都遇到过类似的问题。他们可能认为,等到每个月月末再结账的话,开发票或者发票验证会来不及。因为这国家都有比较严格 阅读全文
posted @ 2011-03-28 17:10 hanmos 阅读(541) 评论(0) 推荐(0) 编辑
摘要: 应收帐款与发票管理是ERP系统开发中的难点之一。因为其跟其他单据不同,具有比较多的综合性。如跟销售订单、发货单、装运凭证、价格表等都息息相关。而且涉及到财务管理方面的知识,更加具有专业性。笔者在这篇文章中,也不能够将所有的知识点都一一讲到。只能够将其中的主要矛盾拉出来,供大家参考。如下图所示,这就是一个应收帐款与发票生成的典型界面。笔者就围绕这个图形来做展开说明。一、应收帐款与发票管理的主要流程 笔者认为,系统分析师在分析开发应收帐款管理与发票管理的时候,一定要对这个业务背后的逻辑有一定的了解。也就是说,一定要先掌握实务处理中的主要环节,然后再来进行分析设计。具体的来说,要掌握以下几个日常的业 阅读全文
posted @ 2011-03-28 16:58 hanmos 阅读(524) 评论(0) 推荐(0) 编辑
摘要: 方法1:使用SCOPE_IDENTITY取得刚刚插入的最大流水号 /*建立traddeinfo表各相关索引,注意Trade_id字段必段是identity型*/create table Tradeinfo(Trade_id int identity(1,1),Tdtime datetime Tdname varchar(20))create index idx_trade_id on tradeinfo(trade_id)/*使用scope_identity()中断函数,取得当前脚本范围内最后insert进去的identity值*/declare @mytradeid int set @myt 阅读全文
posted @ 2011-03-28 15:56 hanmos 阅读(609) 评论(0) 推荐(0) 编辑
摘要: 报表无疑是ERP系统中用到的最频繁的单据之一。比如每天采购要打印采购明细帐;仓库每天要导出收货或者出货明细;销售每天要打印订单明细等。故报表的设计在ERP系统开发中占据大半江山。不过笔者在实际工作中也发现,有些开发人员在设计ERP报表时,太过于复杂。 有一次,一家企业向我提出了如下需求:他们希望能够出一份报表,报表的内容包括四个部分。一是成品零件的用量、零件的最小采购量等信息;二是当月零件的采购量信息(详细的采购订单等资料);三是当月零件的出库信息(详细的出货记录);四是零件的安全库存信息。然后,根据这些信息计算出当月需要补下的满足安全库存的数量。从这个需求中可以看出,其主要设计到产品基本资料 阅读全文
posted @ 2011-03-28 15:32 hanmos 阅读(484) 评论(0) 推荐(0) 编辑
摘要: 物化视图,所谓视图实际上是不存储物理信息的(同表相区别,表存储实际的数据和表的索引信息等。),视图仅仅存储 一个select语句而已。而物化视图就要视图也存储实际的数据,这种实际数据,就是索引。oracle 8imssqlserver2000中引入的。比如oracle的函数索引和sqlserver2000的索引视图都是物化视图。原因是这种视图能够显著提高性能,举个例子 一个表: create table mytable (id int not null,name varchar(20) not null) create index idx_mytable on mytable.name 当我. 阅读全文
posted @ 2011-03-28 15:31 hanmos 阅读(583) 评论(0) 推荐(0) 编辑