Access数据库中如何避免脏数据

Access数据库中如何避免脏数据,第1张

脏读dirtyreads:当事务读取还未被提交的数据时,就会发生这种事件。举例来说:Transaction1修改了一行数据,然后Transaction2在Transaction1还未提交修改 *** 作之前读取了被修改的行。如果Transaction1回滚了修改 *** 作,那么Transaction2读取的数据就可以看作是从未存在过的。

不可重复的读non-repeatablereads:当事务两次读取同一行数据,但每次得到的数据都不一样时,就会发生这种事件。举例来说:Transaction1读取一行数据,然后Transaction2修改或删除该行并提交修改 *** 作。当Transaction1试图重新读取该行时,它就会得到不同的数据值(如果该行被更新)或发现该行不再存在(如果该行被删除)。

虚读phantomread:如果符合搜索条件的一行数据在后面的读取 *** 作中出现,但该行数据却不属于最初的数据,就会发生这种事件。举例来说:Transaction1读取满足某种搜索条件的一些行,然后Transaction2插入了符合Transaction1的搜索条件的一个新行。如果Transaction1重新执行产生原来那些行的查询,就会得到不同的行。

MYSQL事务隔离级别的认识

2010-08-0610:27

在hibernate中如果要连续不间断的保存多个实体的实例,那么在我们保存第一个的时候,其实在数据库里是不存在数据的,即使用Sessionflush()也无济于事,这到底是怎么回事呢?让我很是疑惑

在查阅了相关的资料后,原来是数据库对于事务的隔离级别的限制问题,而我原来的MYSQL数据库正好是不支持我上述 *** 作的隔离级别。

1、在MYSQL中查询事务隔离级别:

select@@tx_isolation;(tx其实就是transaction的缩写或者习惯缩写法)

我的结果是REPEATABLE-READ(即可重复读,稍后会引用专业结束文档)

2、修改MYSQL事务隔离界别:

settransactionisolationlevel目标隔离级别;

3、再次查询隔离级别进行检验是否已经成功修改。

这样在修改了隔离级别之后,在进行save()的时候,数据库中就会存在一些数据了,问题解决了。关于其他的数据库产品,思想都是一样的。

附加、官方的SQL事务隔离级别文档:

SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。

ReadUncommitted(读取未提交内容)

在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(DirtyRead)。

ReadCommitted(读取提交内容)

这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别也支持所谓的不可重复读(Read),因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果。

RepeatableRead(可重读)

这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读(PhantomRead)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影”行。InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,ConcurrencyControl)机制解决了该问题。

(可串行化)

这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。

就规模来说,vfp是一个中型数据库开发软件,比不上oracle、infomation、powerbuilder等,是微软购并fox公司后开发的一个数据库开发软件。可用于中型数据库软件工程的建构。可以用来做商业开发。

2access严格来说不是一个数据库应用程序的开发工具,基本上是一个办公应用软件;不能用于商业用途的开发。只能在office环境下运行,受office本身的限制。所用语言只是基于VB语言的辅助性编程的VBA。就其规模来说属于小型的数据库应用软件。早年曾有过ACCESS20(英文版)的可以用于商业用途的数据库开发软件。但后来不知道为什么没有继续研发出新的ACCESS版本。

3通常大型的数据库管理信息系统的开发,开发商多用oracle,或者POWERBUILDER,比如供电收费系统,使用oracle的较多;银行系统通常在UNIX *** 作系统环境下运行,因此,所使用的数据库开发软件是适用于UNIX *** 作系统环境的开发软件,如:COL(具体名称不记得了),或者DELPHI进行开发。

4就安全性而言,VFP比oracle等要差一些;ACCESS就更差了。

SQL Server是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大

因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQL Server还有更多的扩展,可以用存储过程,数据库大小无极限限制。SQL Server数据库的特征及其与Access数据库的区别

大家知道,常用的数据库一般是分为三种: (一)、Access (二)SQL Server(三)MySQL,那么,用户想做一个网站,到底哪一种数据库是适合自己的呢以下给大家介绍一下常用的数据库有什么区别或是功能方面。

Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。

SQL Server是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。92HeZu网全部双线合租空间均可使用Access数据库,同时也支持SQL Server。SQL Server还有更多的扩展,可以用存储过程,数据库大小无极限限制。

SQL Server 特点:

1真正的客户机/服务器体系结构。

2图形化用户界面,使系统管理和数据库管理更加直观、简单。

3丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。

4SQL Server与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQL Server也可以很好地与microsoft BackOffice产品集成。

5具有很好的伸缩性,可跨越从运行Windows 95/98的膝上型电脑到运行Windows 2000的大型多处理器等多种平台使用。

6对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。

7SQL Server提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。

MySQL是一个开放源码的小型关系型数据库管理系统,开发者为瑞典MySQL AB公司,92HeZu网免费赠送MySQL。目前MySQL被广泛地应用在Internet上的中小型网站中。提供由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库

MySQL特点:

1MySql的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源。

2MySql可运行在不同的 *** 作系统下。简单地说,MySql可以支持Windows95/98/NT/2000以及UNIX、Linux和SUN OS等多种 *** 作系统平台。

3MySql有一个非常灵活而且安全的权限和口令系统。当客户与MySql服务器连接时,他们之间所有的口令传送被加密,而且MySql支持主机认证。

4MySql支持ODBC for Windows。MySql支持所有的ODBC 25函数和其他许多函数,这样就可以用Access连接MySql服务器,从而使得MySql的应用被大大扩展。

5MySql支持大型的数据库。虽然对于用Php编写的网页来说只要能够存放上百条以上的记录数据就足够了,但MySql可以方便地支持上千万条记录的数据库。

6MySql拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性。

7强大的查询功能。MySql支持查询的SELECT和WHERE语句的全部运算符和函数,并且可以在同一查询中混用来自不同数据库的表,从而使得查询变得快捷和方便。

8PHP为MySql提供了强力支持,PHP中提供了一整套的MySql函数,对MySql进行了全方位的支持。

一、创建链接服务器,连接本地 Access 数据库

创建链接服务器可以用“企业管理器”,也可以执行系统存储过程 sp_addlinkedserver 来完成。用系统存储过程相对快捷一些,格式为:

sp_addlinkedserver '链接服务器名', '产品名', 'MicrosoftJetOLEDB40', 'Access数据库路径及文件名'

指定 MicrosoftJetOLEDB40 作为 provider_name,指定 Access 数据库文件的完整路径名作为 data_source。mdb 数据库文件必须驻留在本地服务器上,路径必须是服务器上的有效路径。

例如,本例创建一个名为 mytest 的链接服务器,对 E:\我的文档\ 文件夹下名为 DOSmdb 的 Access 数据库进行 *** 作,则在“SQL查询分析器”中执行:

sp_addlinkedserver 'mytest', 'Access 2000', 'MicrosoftJetOLEDB40', 'E:\我的文档\DOSmdb'

二、创建链接服务器登录映射

同样可以用“企业管理器”或存储过程来完成。存储过程的格式为:

sp_addlinkedsrvlogin '链接服务器', false, 'SQLServer登录名', 'admin', NULL

为访问非保密的 Access 数据库,试图访问 Access 数据库的 SQL Server 登录应该有一个为用户 Admin 定义的没有密码的登录映射,下例使得本地用户 sa 可以访问名为 mytest 的链接服务器:

sp_addlinkedsrvlogin 'mytest', false, 'sa', 'admin', NULL

要访问保密的 Access 数据库,需使用注册表编辑器配置注册表,以便使用 Access 的正确的工作组信息文件。使用注册表编辑器向该注册表项中添加 Access 使用的工作组信息文件的完整路径名称:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\40\Engines\SystemDB

配置了注册表项后,请使用 sp_addlinkedsrvlogin 创建从本地登录到 Access 登录的登录映射:

sp_addlinkedsrvlogin 'mytest', false, 'sa', '[AccessUser]', '[AccessPwd]'

链接服务器和链接服务器登录映射建立完毕,可以在企业管理器里进行查看。

三、链接服务器的测试

可以在“SQL查询分析器”里对创建的链接服务器进行测试。由于 Access 数据库没有目录和架构名称,因此,基于 Access 的链接服务器中的表可以在分布式查询中使用 [linked_server][table_name] 的四部分名称进行引用。下例从名为 mytest 的链接服务器中检索 articles 表的所有行:

Select from mytestarticles

或:Select from OpenQuery(mytest, 'Select from articles')

什么是Aess

数据库

数据库是有结构的数据集合,它与一般的数据文件不同,(其中的数据是无结构的)是一串文字或数字流。数据库中的数据可以是文字、图象、声音等。

Microsoft

Aess是一种关系式数据库,关系式数据库由一系列表组成,表又由一系列行和列组成,每一行是一个记录,每一列是一个字段,每个字段有一个字段名,字段名在一个表中不能重复。图1是一个“产品”表的例子。“产品”表由10个记录组成,一个记录占一行,每一个记录由产品ID、产品名称、库存量、订货量、单价和折扣率6个字段组成。“产品ID”是字段名,其下面的1,2等是字段的值。

表与表之间可以建立关系(或称关联,连接),以便查询相关联的信息。Aess数据库以文件形式保存,文件的扩展名是DB。

Aess

97

的6种对象

Aess

97数据库由六种对象组成,它们是表、查询、窗体、报表、宏和模块。

表(Table)

——表是数据库的基本对象,是创建其他5种对象的基础。表由记录组成,记录由字段组成,表用来存贮数据库的数据,故又称数据表。

查询(Query)——查询可以按索引快速查找到需要的记录,按要求筛选记录并能连接若干个表的字段组成新表。

窗体(Form)——窗体提供了一种方便的浏览、输入及更改数据的窗口。还可以创建子窗体显示相关联的表的内容。窗体也称表单。

报表(Report)——报表的功能是将数据库中的数据分类汇总,然后打印出来,以便分析。

宏(Macro)——宏相当于DOS中的批处理,用来自动执行一系列 *** 作。Aess列出了一些常用的 *** 作供用户选择,使用起来十分方便。

模块(Mole)——模块的功能与宏类似,但它定义的 *** 作比宏更精细和复杂,用户可以根据自己的需要编写程序。模块使用Visual

Basic编程。

以上就是关于Access数据库中如何避免脏数据全部的内容,包括:Access数据库中如何避免脏数据、ACCESS和VFP有什么不同、Access,MSSQL,MYSQL数据库的特点及应用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9600253.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存