在MS Access数据库引擎的表行的最大数量?(Maximum number of rows in

2019-06-27 15:24发布

我们知道MS Access数据库引擎是“节流”,允许2GB的最大文件大小(或者内部接线被限制在少于4KB的数据页的2一些权力)。 但是,这是什么意思在实用性方面?

为了帮助我衡量这个,你能告诉我,可以插入到一个MS Access数据库引擎的表行的最大数量?

为了满足表的定义,所有的行必须是唯一的,因此唯一约束(例如PRIMARY KEYUNIQUECHECK ,数据宏等)是必需的。

编辑:我知道有一个理论极限,但我感兴趣的是实用(而不一定是可行的 ),现实生活中的限制。

Answer 1:

一些评论:

  1. 喷气/ ACE文件是在数据页,这意味着有是当你的记录边界不与您的数据页对齐的一定量的松弛空间组织。

  2. 行级锁会大大降低的可能记录的数目,因为它迫使每个数据页的一个记录。

  3. 在射流4,数据页大小(在喷气3.X从2KBs)增加到4KBs。 喷气4是第一个Jet版本为支持Unicode,这意味着你可以存储双字节数据(即10亿个双字节字符)的1GB,并且使用Unicode压缩打开,2GBs数据。 因此,记录的数量将是由你是否拥有对双字节编码的压缩会受到影响。

  4. 因为我们不知道如何在一个Jet / ACE文件很大的空间是由头部和其他元数据,也正是多少空间索引的存储需要占用做,理论计算,总是会在什么是可行的。

  5. 为了获得尽可能高效率地存储,你想使用代码来创建数据库,而不是访问UI,因为Access创建纯喷气并不需要某些属性。 这并不是说,有很多这样的,作为属性设置为访问默认值通常根本没有设置(该属性是当你从默认值更改它不仅创造 - 这可以通过现场的循环中可以看出属性集合,即,许多在Access表设计器中的字段中列出的属性是不存在的属性集合,因为他们没有被设置),但你可能想限制自己Jet特定的数据类型(超链接字段是访问只,例如)。

我只是浪费)一个小时,这一点使用赛第一轮(约碴来填充定义为类型4名字节的字段,复合PK的四个领域,并花了永远追加足够的记录,以获得高达2GBs的任何显著部分。 在超过200万的记录,该文件在80MBs。 刚刚达到700K 7万条记录,并压实,以184MBs文件后,我终于放弃。 的时间,将采取起床2GBs附近的水量仅仅是超过我愿意投资!



Answer 2:

这里是我的尝试:

我创建了一个单柱( INTEGER无钥匙)表:

CREATE TABLE a (a INTEGER NOT NULL);

按顺序插入整数从1开始。

我停止了(许多小时后随意)当它插入65632875行。 文件大小为1029772 KB。

我压实从而减少它非常轻微到1029704 KB的文件。

我添加了一个PK:

ALTER TABLE a ADD CONSTRAINT p PRIMARY KEY (a);

这就增加了文件大小1467708 KB。

这表明,最大约为8000万英镑的某处。



Answer 3:

正如其他人说,它是你的模式和索引的数量的组合。

一个朋友有大约亿的历史股价,每日收盘报价,在MDB其中接近2 GB限制。

他拉下来使用在Microsoft知识库文章中发现一些代码。 我感到相当吃惊,无论服务器他用没有打断他的第一个10万条记录后。

他可以在第二下查看任何记录。



Answer 4:

它已经有些年没与Access工作,但更大的数据库文件总是习惯有更多的问题,更容易出现腐败小于文件。

除非数据库文件只被一个人访问或存储于强大的网络你会发现这是一个问题达到2GB数据库大小限制之前。



Answer 5:

我们不一定这里所说的理论极限,我们谈论的最大2GB的文件大小和数据库架构的真实世界极限。

  • 是您的DB一个表或多个?
  • 多少列也各表有哪些?
  • 什么是数据类型?

该模式是在即使行数决定,你可以多少行的基础上。

我们使用的MDB访问我们的一些企业用户的存储进行统计分析MS-SQL数据的出口。 在这种情况下,我们出口我们的核心表结构,一般四个表有20到150列从几百个字节每行改变向上的每行8000个字节。 在这种情况下,我们会碰到补防数据几十万行是被允许的PER MDB,我们将船他们。

所以,我不觉得这个问题有没有你的方案的一个答案。



Answer 6:

这一切都取决于。 理论上使用具有4字节的数据类型的单个列。 你可以存储30万行。 但是,有可能是很多在数据库中的开销,你做任何事情,甚至之前。 我读了一些在那里,你可以有1,000,000行,但再一次,这一切都取决于..

您还可以链接数据库在一起。 限制自己只磁盘空间。



Answer 7:

实用=“有用的实践” - 所以最好你要得到的是传闻。 其他的一切只是原型和测试结果。

我同意其他人 - 决定“的记录的最大数量”完全依赖于模式 - #表,#字段,索引#。

为你另一个轶事:我最近击中1.6GB的文件大小与2个主数据存储(表),36和85个字段分别与3代附加表某个子集的副本。

如果背景下说,这是唯一的材料 - 如果数据是唯一或没有谁在乎。 数据是数据是,除非复制由索引影响处理。

总的行数构成该1.6GB的是1.72米。



Answer 8:

当4代大型DB2表工作,我不仅找到了限制,但它使我看起来真的不好谁想到,我可以追加所有四个表(每个有90多万行)到一个大表中的老大。 现实生活中的结果是,不管有多少次我想(其中有完全相同34列 - 30文本和3个整数)表会吐出一些晦涩的消息“无法打开数据库无法识别的格式或文件可能已损坏”。 底线是不到150万点的记录,只是有点超过1,252,000有34行。



文章来源: Maximum number of rows in an MS Access database engine table?