摘要:本部分内容为《数据库原理》课程中的一个课堂案例,幻灯片提供的动画演示有助于理解并发控制的本质,本文内容为幻灯片的摘要。 1、下载本文所对应的幻灯片; 2、下载本文对应的VS2005代码。 如果你对自己并发控制的能力很有自信的话,读完“一、问题提出”后直接可以跳转到“四、看来问题真不简单”处阅读。 本文最后给出了部分测试用代码的简单讲解。 一、问题...
阅读全文
文章分类 - 关系数据库&数据挖掘
关系数据库 BI 数据控掘 Grid ...
摘要:在《数据库原理》里面,对聚簇索引的解释是:聚簇索引的顺序就是数据的物理存储顺序,而对非聚簇索引的解释是:索引顺序与数据物理排列顺序无关。正式因为如此,所以一个表最多只能有一个聚簇索引。 不过这个定义太抽象了。在SQL Server中,索引是通过二叉树的数据结构来描述的,我们可以这么理解聚簇索引:索引的叶节点就是数据节点。而非聚簇索引的叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。如下图...
阅读全文
摘要:本部分内容的完整代码可以从这里下载。 2.2 SQL Server 2000+ADO.NET实现并发控制 2.2.1 并发一致性问题 常见并发并发一致性问题包括:丢失的修改、不可重复读、读脏数据、幻影读(幻影读在一些资料中往往与不可重复读归为一类)。 2.2.1.1 丢失修改 下面我们先来看一个例子,说明并发操作带来的数据的不一致性问题。 考虑飞机订票系统中的一个活动序列: 甲售票点(甲事务...
阅读全文
摘要:http://www.cnblogs.com/RainWaterLily/archive/2008/03/04/1089976.html
阅读全文
摘要:建立全文索引中有两项非常重要,一个是如何对文本进行分词,一是建立索引的数据结构。分词的方法基本上是二元分词法、最大匹配法和统计方法。索引的数据结构基本上采用倒排索引的结构。 分词的好坏关系到查询的准确程度和生成的索引的大小。在中文分词发展中,早期经常使用分词方式是二元分词法,该方法的基本原理 是将包含中文的句子进行二元分割,不考虑单词含义,只对二元单词进行索引。因此该方法所分出的单词数量较多,...
阅读全文
摘要:一、深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别: 其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安...
阅读全文
摘要:在应用系统中,尤其在联机事务处理系统中,对数据查询及处理速度已成为衡 量应用系统成败的标准。而采用索引来加快数据处理速度也成为广大数据库用户所 接受的优化方法。 在良好的数据库设计基础上,能有效地使用索引是SQL Server取得高性能的基础,SQL Server采用基于代价的优化模型,它对每一个提交的有关表的查询,决定是否使用索引或用哪一个索引。因为查询执行的大部分开销是磁盘I/O,使用索...
阅读全文
摘要:在一个产品介绍网站中查询产品时,由于产品的介绍性文字可能会很长,如果使用对产品介绍字段使用like进行模糊查询, 性能肯定会是问题。那么如何解决这个问题呢?第一个想法就是使用全文索引。那么全文索引是什么、应该如何应用、在应用的过程中又应该注意哪些事情呢?这个 POST作为学习全文检索的笔记。 1、是什么 [摘录自SQL Server2000联机从书] 全文索引为在字符串数据中进行复杂的词搜索提供有...
阅读全文
摘要:SQL Server全文索引的个人总结 大家都知道LIKE查询很慢,全文索引就是事先做好相关的索引,表示哪个主题词可以在哪些记录里找到,甚至事先计算好RANK,检索时可以把相关度高的先列出来,这可以大大提高检索的速度。 打个比方,你有很多的小抽屉,每个抽屉里面放一些杂物,假如你要找东西,最原始的方法就是一个个抽屉翻,这就是没有索引的情况。 假如聪明一点,给抽屉编号(唯一键),把哪个号码的抽屉有什么...
阅读全文
摘要:在实际的多用户并发访问的生产环境里边,我们经常要尽可能的保持数据的一致性。而其中最典型的例子就是我们从表里边读取数据,检查验证后对数据进行 修改,然后写回到数据库中。在读取和写入的过程中,如果在多用户并发的环境里边,其他用户已经把你要修改的数据进行了修改是非常有可能发生的情况,这样就 造成了数据的不一致性。解决这样的办法,SQL SERVER提出了乐观锁定和悲观锁定的概念,下边我以一个实例来说明如...
阅读全文
摘要:如何跟踪调试存储过程 步骤: 在查询分析器中——》左边的对象浏览器——》选择要调试的存储过程——》右击鼠标——》选择调试——》输入参数——》设置完参数值后点击执行,就会出现一个浮动工具条,上面有单步执行,断点设置等。 若按上面步骤不行,则继续设置: 控制面板——》管理工具——》服务——》MSSQLSERVER——》“登录”选项卡,把登录身份选“此帐户R...
阅读全文
摘要:sa帐号都不能查其它用户建的表吗?报没有对象错——如何解决? 备份恢复了一个数据库,有许多数据表,是用sa以外的用户创建的。比如a.table1,dbo.table2, 在查询分析器中以sa登录发现查不出数据来。 比如sa帐号,查table1,只写select * from table1,就报错,一定要写 select * from a.table1,但是因为表名都是用程...
阅读全文
摘要:SQL Server 负载均衡 集群 一个应用系统随着业务量的提高,以及访问量和数据流 量的快速增长,各个核心部分的处理性能和计算强度也相应增大,使得单一设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,必将造成现有 资源的浪费,而且下一次业务量的提升,又将导致再一次硬件升级的高额成本投入。于是,负载均衡机制应运而生。 对于应用系统的负载均衡的硬件和软件比比皆是,因为应用服务器上的...
阅读全文
摘要:1,EXEC的使用2,sp_executesql的使用 MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql;通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有。还有一个最大的好处就是利用sp_executesql,能够重用执行计划,这就大大提供了执行性能(对于这个我在后面的例子中会详加说明),还可以编写更安全的代码。EXE...
阅读全文
摘要:.ANSI_NULLS1SETANSI_NULLSON2GO上面第一行是 指定与空值一起使用时的等于 (=) 和不等于 (<>) 比较运算符的 SQL-92 标准行为。SQL SERVER 的联机丛书里提道:后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。用法解释:SQL-92 标准要求在对空...
阅读全文
摘要:nvarchar与varchar的区别varchar[(n)] 长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或 character ...
阅读全文
摘要:like '%字符串%' 在存储过程中需要使用 like"%'+@条件+'%"' 实现。即套双引号[代码]--------------当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔--当 SET QUOTED_IDENTIFIER 为 OFF(默认值)时,表达式中的文字字符串可以由单引号或双引号分隔SET QUOTED_IDENTIFI...
阅读全文
摘要:动态语句语法:--方法1查询表改为动态select*fromsysobjectsexec('select ID,Name from sysobjects')execsp_executesql N'select ID,Name from sysobjects'--多了一个N为unicode--方法2:字段名,表名,数据库名之类作为变量时,用动态SQLdeclare@FNamevarchar(20)s...
阅读全文
摘要:SQL Server中存储过程返回记录集很简单,但是如果不加注意,就会很容易出错,得不到正确的记录集。在昨天写的存储过程中,存储过程书写正确了,但是总是获取不了正确的返回记录集,郁闷了好半天。后来想起了以前也遇到过同样的问题,居然在同一个问题上被绊倒了两次,晕死了。原因是存储过程中除了返回记录集的select操作外,不能有其他的操作(如插入,删除,更新操作),否则返回不了记录集。我在该存储过程中调...
阅读全文