gpt4 book ai didi

ms-access - MS Access 数据库引擎表中的最大行数?

转载 作者:行者123 更新时间:2023-12-02 08:00:22 25 4
gpt4 key购买 nike

我们知道 MS Access 数据库引擎被“限制”,允许最大文件大小为 2GB(或者可能通过内部连接限制为小于 4KB 数据页的 2 次方)。但这实际上意味着什么?

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

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

编辑:我意识到存在理论限制,但我感兴趣的是实际(不一定可行)、现实生活中的限制。

最佳答案

一些评论:

  1. Jet/ACE 文件按数据页组织,这意味着当您的记录边界与数据页不对齐时,会存在一定量的闲置空间。

  2. 行级锁定将大大减少可能的记录数量,因为它强制每个数据页一条记录。

  3. 在 Jet 4 中,数据页大小增加到 4KB(Jet 3.x 中为 2KB)。由于 Jet 4 是第一个支持 Unicode 的 Jet 版本,这意味着您可以存储 1GB 的双字节数据(即 1,000,000,000 个双字节字符),并且在打开 Unicode 压缩的情况下,可以存储 2GB 的数据。因此,记录数将受到是否启用 Unicode 压缩的影响。

  4. 由于我们不知道 Jet/ACE 文件中 header 和其他元数据占用了多少空间,也不确切知道索引存储占用了多少空间,因此理论计算始终会低于实用。

  5. 为了获得最高效的存储,您需要使用代码而不是 Access UI 来创建数据库,因为 Access 创建了纯 Jet 不需要的某些属性。这并不是说有很多这样的属性,因为设置为 Access 默认值的属性通常根本不设置(仅当您更改默认值时才会创建该属性 - 这可以通过循环 Access 字段的值来看到)属性集合,即 Access 表设计器中为字段列出的许多属性并不存在于属性集合中,因为它们尚未设置),但您可能希望将自己限制为 Jet 特定的数据类型(超链接字段例如,仅限 Access )。

我只是浪费了一个小时,使用 Rnd() 来填充定义为字节类型的 4 个字段,并在这四个字段上使用复合 PK,并且花了很长时间才附加足够的记录来达到 2GB 的任何重要部分。记录超过 200 万条,文件大小不到 80MB。在达到 700K 7 MILLION 记录并且文件压缩到 184MB 后,我最终退出了。达到接近 2GB 所需的时间超出了我愿意投入的时间!

关于ms-access - MS Access 数据库引擎表中的最大行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1221435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com