Access数据库大数据量的相关测试分析

【e良师益友网】在使用Access 数据库无须开专门的数据库空间,调用,迁移也方便,节省费用。另外对网站搭建者的专业能力要求也相对低一些。但随着网站的运行,数据库体积越来越大,数据 量也从最初的几百条到了现在的上万条,上十万条甚至更多。于是因数据应用级别的改变带来的各种各样的应用问题出现了。而其中大数据量的列表分页效率问题更 是让很多人头疼。小编我随便通过“大数据量分页效率”,“access 分页”等关键词分别百度一下,发现有此疑问的大有人在。很多网页上也给出了不同的解决办法。那么,这些方法到底能达到优化效率,提高速度的目的吗?
以下的几个access分页优化方案。今天我们就讨论一下access大数据量优化分页方法,以及access到底能承受多少数据量。

方案一:

利用ado本身的结果集的pagesize,AbsolutePage的属性来进行分页

程序示例:(仅供示意,完善的各种条件判断自行添加)

缺点:每次都要读入符合条件的所有记录,然后再定位于对应页的记录。当数据量大的时候,效率就十分的低下。



方案二:
1、设置一个自增长字段.并且该字段为INDEX.
2、由于是 ACCESS ,所以,只能是前台分页.自增长字段目的,就是为了实现分页功能.
1> 记录用户前页的最后一个 自增值 ,例如 M .
2> 下一页,取下一页的开始值.M+1 ,结束值: M+1+1.5*PAGESIZE (注:由于数据库会有增删操作,故应该取页大小应该有一个系数,你可以根据情况自定一个1大的系数.
3> 前台循环取 RS 的前 PAGESIZE 条, 写到一个 新的RS中,并返回.
这个方案通过自增值来分部截取不同分页的数据列表,文中考虑到数据库有增删操作,所以加入了一个系数的概念,这是一个不得已的做法。这个方案可以保证分页效率,但只能运用于增删不太频繁(自增值字段相邻记录的值相差不多的情况)的数据表。

方案三:

not in 方法。这个方案在很多网站上都转载。据说对于越往前的分页效率提高越明显。我一直有所怀疑,因为“not in”本身就是个耗费资源的算法。很难相信一个低效率的方法能提高大数据量分页的效率。示例如下:

sql="select top 12 * from 表 where Id not in(select top page*pagesize Id from 表 order by id desc) order by Id desc"
如果是第9页,每页20条即
select top 20 * from 表 where Id not in(select top 9*20 Id from 表 order by id desc) order by Id desc
原理即:选择top 20 的记录,条件是id不在前面分页的记录ID里。通过这种方式过滤掉前面分页的记录,然后通过top高效率的方式获取当页的记录。
“top”确实高效,但是“not in”呢?
于是我直接用这种方法测试了一下,测试条件:10万条数据。点击查询.......... MY GOD,长时间无响应,最后Ctrl+Alt+Delete 结束任务。再试,结果同样如此。于是改变一下测试条件,变成1000条数据,OK,结果显示非常顺利。
结论:如果你是大数据量分页,还是不要用这种方法,会死人的。



方案四:

"select * from (select top "&pagesize&" * from (select top
"&page*pagesize&" * from 表" order by id desc) order by id) order
by id desc"

这个方法简单说来,就是选取当前页及小于当前分页的所有记录,再通过“Top”方式选取当前页的记录。
这个方法没有出现效率低的语句,虽然至少要select两次(示例select了三次是为了排序)。但是效率应该不错。且越靠前的分页应该越明显。
如果还想节省效率,可以只select两次。
假如记录ID为1-100,每页5条。现在显示第4页,排序为倒序。
执行顺序:
1) 选择前4页的数据,即100-81共20条数据
2) 从这20条数据中选择最小的5条,即81-85。
3) 将选择的5条按倒序排,即成为 85-81。
如果节省第三步也可,只不过显示变成
第一页:96,97,98,99,100
第二页:91,92,93,94,95
.
.
.
其实也不错。
光说没用,最终看测试结果。我在相同的数据条件,服务器配置下,分别对方案一中的两种方法和方案四进行了access分页效率测试,测试数据如下
测试条件:>10万条;pagesize=20;分页总数>5000页;顺便也进行了一下“select 部分字段”和“select 所有字段”的对比测试。
从上面的测试结果来看,方案三的优势还是比较明显的。而到5000页的效率基本上和前两种方法差不多,甚至仍然有一定得优势。
另外,很多人在写select语句时, 习惯 select * from 表,这不是一个好习惯。上面的access分页测试结果表明,还是按需索要,按需供应的好,需要什么字段,就select什么字段。能够极大的节省服务器资源。
很多网友提到ACCESS时都不免的轻视,“你还在用access?”,“还不换sql
server?”,“用access你还想多快?”。其实在我的经验看来,即便是在10万条的应用级别上。access常常比sql
server快。因为sql
server需要额外连接,且多了一个带宽连接因素的影响(当然,网站服务器和数据库服务器运行速度和带宽都很OK,那没话说)。
sql server 在更高数据级别上的速度优势还是比较明显,毕竟与access不是一个级别的产品。
为了探索一下access数据库的极限。在40万条数据的情况下进行了上述分页测试。速度确实大打折扣。但是第三种方案在一万页内还是表现不错的。此时数
据库已经达到400多兆。再结合之前处理过的几个4,500兆的access数据库。认为40万条数据是access数据库在一般应用的一个界限,但不是极限。
希望本信息为你解决了问题和疑惑,或者有表述不清,请留言告知我们!欢迎大家多多指教!如果想了解更多数据库教程知识可登陆e良师益友网。

时间: 2024-10-18 16:35:05

Access数据库大数据量的相关测试分析的相关文章

excel导入sqlserver数据库大数据量,可每秒控制数量

数据库代码 USE [Test] GO /****** Object:  Table [dbo].[Table_1]    Script Date: 11/07/2017 17:27:29 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Table_1]( [id] [varchar](100) NULL, [NodeId] [varchar](

大数据量高并发的数据库优化

一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. 在一个系统分析.设计阶段,因为数据量较小,负荷较低.我们往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,才发现系统的性能在降低,这时再来考虑提高系统性能则要花费更多的人力物力,而整个系统也不可避免的形成了一个打补丁工程. 所以在考虑整个系统的流程的时候,我们必须

大数据量下的SQL Server数据库自身优化 (转载)

1.1:增加次数据文件 从SQL SERVER 2005开始,数据库不默认生成NDF数据文件,一般情况下有一个主数据文件(MDF)就够了,但是有些大型的数据库,由于信息很多,而且查询频繁,所以为了提高查询速度,可以把一些表或者一些表中的部分记录分开存储在不同的数据文件里 由于CPU和内存的速度远大于硬盘的读写速度,所以可以把不同的数据文件放在不同的物理硬盘里,这样执行查询的时候,就可以让多个硬盘同时进行查询,以充分利用CPU和内存的性能,提高查询速度. 在这里详细介绍一下其写入的原理,数据文件(

[转]浅析大数据量高并发的数据库优化

链接:http://www.uml.org.cn/sjjm/201308264.asp 高并发数据库可以同时处理海量信息,应用范围很广.今天我们将讨论的是大数据量高并发的数据库优化,希望对大家有所帮助. 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. 在一个系统分析.设计阶段,因为数据量较小,负荷较低.我们往往只注意到功能的实现,而很难注意到性

大数据量高并发访问的数据库优化方法

一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. 在一个系统分析.设计阶段,因为数据量较小,负荷较低.我们往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,才发现系统的性能在降低,这时再来考虑提高系统性能则要花费更多的人力物力,而整个系统也不可避免的形成了一个打补丁工程. 所以在考虑整个系统的流程的时候,我们必须

(转)大数据量高并发的数据库优化与sql优化

大数据量高并发的数据库优化 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. 在一个系统分析.设计阶段,因为数据量较小,负荷较低.我们往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,才发现系统的性能在降低,这时再来考虑提高系统性能则要花费更多的人力物力,而整个系统也不可避免的形成了一个打补丁工程. 所以在考虑整

MySQL数据库如何解决大数据量存储问题

利用MySQL数据库如何解决大数据量存储问题? 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存储大数据量的问题,主要是数据库中的两张历史数据表,一张模拟量历史数据和一张开关量历史数据表,这两张表字段设计的很简单(OrderNo,Value,DataTime).基本上每张表每天可以增加几千万条数据,我想问如何存储数据才能不影响检索速度呢?需不需要换oracle数据库呢?因为我是数据库方面的新手,希望可以说的详细一点,万分感谢!!?-0-#暂时可以先考虑用infobri

数据库性能优化一:数据库自身优化(大数据量)

数据库优化包含以下三部分,数据库自身的优化,数据库表优化,程序操作优化.此文为第一部分 数据库性能优化一:数据库自身优化 优化①:增加次数据文件,设置文件自动增长(粗略数据分区) 1.1:增加次数据文件 从SQL SERVER 2005开始,数据库不默认生成NDF数据文件,一般情况下有一个主数据文件(MDF)就够了,但是有些大型的数据库,由于信息很多,而且查询频繁,所以为了提高查询速度,可以把一些表或者一些表中的部分记录分开存储在不同的数据文件里由于CPU和内存的速度远大于硬盘的读写速度,所以可

大数据量数据库优化 - CodeMain - 博客园

一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. 在一个系统分析.设计阶段,因为数据量较小,负荷较低.我们往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,才发现系统的性能在降低,这时再来考虑提高系统性能则要花费更多的人力物力,而整个系统也不可避免的形成了一个打补丁工程. 所以在考虑整个系统的流程的时候,我们必须