una tipos tablas tabla que partes formulario dentro datos crear consultas como campo ms-access jet ms-jet-ace

tipos - ¿Número máximo de filas en una tabla del motor de la base de datos de MS Access?



que es una tabla en access (8)

Como otros han declarado, es una combinación de su esquema y la cantidad de índices.

Un amigo tenía alrededor de 100,000,000 de precios históricos de acciones, cotizaciones de cierre diarias, en un MDB que se acercaba al límite de 2 Gb.

Él los bajó usando algún código encontrado en un artículo de la base de Microsoft Knowledge. Me sorprendió bastante que cualquier servidor que estuviera usando no lo interrumpiera después de los primeros 100K discos.

Podía ver cualquier registro en menos de un segundo.

Sabemos que el motor de la base de datos de MS Access está "acelerado" para permitir un tamaño de archivo máximo de 2 GB (o quizás el cableado interno se limite a menos de 2 páginas de datos de 4KB). ¿Pero qué significa esto en términos prácticos?

Para ayudarme a medir esto, ¿puede decirme la cantidad máxima de filas que se pueden insertar en una tabla del motor de la base de datos de MS Access?

Para satisfacer la definición de una tabla, todas las filas deben ser únicas, por lo tanto, una restricción única (por ejemplo, PRIMARY KEY , UNIQUE , CHECK , Data Macro, etc.) es un requisito.

EDITAR: Me doy cuenta de que hay un límite teórico, pero lo que me interesa es el límite práctico (y no necesariamente practicable ) de la vida real.


Han pasado algunos años desde la última vez que trabajé con Access, pero los archivos de bases de datos más grandes solían tener más problemas y ser más propensos a la corrupción que los archivos más pequeños.

A menos que una persona acceda al archivo de la base de datos o lo guarde en una red sólida, es posible que este problema se encuentre antes de que se alcance el límite de tamaño de la base de datos de 2GB.


No estamos hablando necesariamente de límites teóricos aquí, estamos hablando de límites del límite de 2 GB de tamaño máximo de archivo Y el esquema de la base de datos.

  • ¿Su db es una sola tabla o múltiple?
  • ¿Cuántas columnas tiene cada mesa?
  • ¿Cuáles son los tipos de datos?

El esquema está en pie de igualdad con el recuento de filas para determinar cuántas filas puede tener.

Hemos utilizado Access MDBs para almacenar exportaciones de datos MS-SQL para el análisis estadístico de algunos de nuestros usuarios corporativos. En esos casos, hemos exportado nuestra estructura de tabla principal, generalmente cuatro tablas con 20 a 150 columnas que varían de cien bytes por fila a más de 8000 bytes por fila. En estos casos, toparíamos con unos pocos cientos de miles de filas de datos permitidos POR MDB que los enviaríamos.

Entonces, simplemente no creo que esta pregunta tenga una respuesta en ausencia de su esquema.


Todo depende. En teoría, usando una sola columna con tipo de datos de 4 bytes. Puede almacenar 300 000 filas. Pero probablemente haya muchos gastos generales en la base de datos incluso antes de hacer algo. Leí algunos en los que podría tener 1.000.000 filas, pero de nuevo, todo depende ...

También puede vincular las bases de datos. Limitarse a solo espacio en disco.


Algunos comentarios:

  1. Los archivos Jet / ACE están organizados en páginas de datos, lo que significa que hay una cierta cantidad de espacio libre cuando los límites de los registros no están alineados con sus páginas de datos.

  2. El bloqueo a nivel de fila reducirá en gran medida la cantidad de registros posibles, ya que fuerza un registro por página de datos.

  3. En Jet 4, el tamaño de la página de datos se aumentó a 4 KB (desde 2 KB en Jet 3.x). Como Jet 4 fue la primera versión de Jet compatible con Unicode, esto significaba que podía almacenar 1GB de datos de doble byte (es decir, 1,000,000,000 de caracteres de doble byte), y con la compresión Unicode activada, 2GB de datos. Por lo tanto, la cantidad de registros se verá afectada por si tiene o no compresión Unicode activada.

  4. Como no sabemos cuánto espacio hay en un archivo Jet / ACE ocupado por los encabezados y otros metadatos, ni tampoco la cantidad exacta de almacenamiento del índice de espacio, el cálculo teórico siempre será inferior a lo práctico.

  5. Para obtener el almacenamiento más eficiente posible, querrá usar código para crear su base de datos en lugar de la IU de acceso, porque Access crea ciertas propiedades que Jet puro no necesita. Esto no quiere decir que hay muchos de estos, ya que las propiedades establecidas en los valores predeterminados de acceso generalmente no se configuran en absoluto (la propiedad se crea solo cuando la cambias del valor predeterminado; esto se puede ver recorriendo un campo colección de propiedades, es decir, muchas de las propiedades enumeradas para un campo en el diseñador de tabla de acceso no están en la colección de propiedades porque no se han establecido), pero es posible que desee limitarse a tipos de datos específicos de Jet (campos de hipervínculo) son de acceso solo, por ejemplo).

Acabo de perder una hora dando vueltas con esto usando Rnd () para llenar 4 campos definidos como byte de tipo, con PK compuesto en los cuatro campos, y tardó una eternidad en anexar suficientes registros para llegar a una porción significativa de 2GB. En más de 2 millones de registros, el archivo tenía menos de 80 MB. Finalmente renuncié después de alcanzar solo 700K 7 MILLONES de registros y el archivo se compactó a 184MB. ¡La cantidad de tiempo que tomaría levantarse cerca de 2GB es simplemente más de lo que estoy dispuesto a invertir!


Aquí está mi intento:

INTEGER tabla de una sola columna ( INTEGER ) sin clave:

CREATE TABLE a (a INTEGER NOT NULL);

Enteros enteros en secuencia comenzando en 1.

Lo detuve (arbitrariamente después de muchas horas) cuando había insertado 65,632,875 filas. El tamaño del archivo era 1,029,772 KB.

Compacté el archivo que lo redujo muy levemente a 1,029,704 KB.

Agregué un PK:

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

que aumentó el tamaño del archivo a 1,467,708 KB.

Esto sugiere que el máximo está en algún lugar alrededor de la marca de los 80 millones.


Práctico = ''útil en la práctica'' - así que lo mejor que obtendrás es anecdótico. Todo lo demás es solo un prototipo y resultados de prueba.

Estoy de acuerdo con los demás: determinar "una cantidad máxima de registros" depende por completo del esquema: # tablas, # campos, # índices.

Otra anécdota para ti: recientemente alcancé un tamaño de archivo de 1.6GB con 2 almacenes de datos primarios (tablas), de 36 y 85 campos respectivamente, con algunas copias de subconjuntos en 3 tablas adicionales.

A quién le importa si los datos son únicos o no, solo material si el contexto lo dice así. Los datos son datos son datos, a menos que la duplicación afecte el manejo por parte del indexador.

El número total de filas que componen ese 1.6GB es 1.72M.


Cuando trabajé con 4 grandes tablas Db2, no solo encontré el límite, sino que me hizo ver muy mal a un jefe que pensó que podía agregar las cuatro tablas (cada una con más de 900,000 filas) a una mesa grande. el resultado de la vida real fue que independientemente de cuántas veces probé la tabla (que tenía exactamente 34 columnas, 30 de texto y 3 enteros) escupía un mensaje críptico "No se puede abrir el formato de base de datos no reconocido o el archivo puede estar dañado". Bottom Line tiene menos de 1,500,000 registros y solo un poco más de 1,252,000 con 34 filas.